ChainZap Dokumentasi API
ID
Dapatkan akses API
Daftar isi
Dapatkan akses API

Pencarian berjalan di browser. Pilih hasil dengan ↑ ↓, lalu tekan Enter untuk membukanya.

ChainZap / Dokumentasi

API pemeriksaan transaksi

Periksa transaksi sebelum mengonfirmasi pembayaran. Pelajari cara menghubungkan API, memeriksa transfer TRON, dan menangani hasilnya.

Periksa transaksi sebelum mengonfirmasi pembayaran

ChainZap membantu Anda memahami apa yang terjadi pada transaksi dan apakah datanya cukup untuk alur pembayaran Anda. API mengembalikan rincian transfer, penilaian risiko, dan pencocokan dengan rincian pembayaran jika diminta.

Fitur yang tersedia

Versi v1 mendukung TRON. Dukungan Ethereum dan TON masih direncanakan; API belum menerima permintaan untuk kedua jaringan tersebut. Akses diberikan melalui undangan, dengan batas penggunaan untuk setiap organisasi.

  • POST /v1/transaction/check: periksa transaksi berdasarkan hash.
  • GET /v1/usage: lihat batas dan statistik penggunaan.

Kirim permintaan dari server Anda dengan kunci pada header X-API-Key.

Baca seluruh hasil

HTTP 200 berarti permintaan berhasil diproses. Kode ini saja tidak membuktikan bahwa pembayaran sudah diterima atau bebas risiko.

Baca transaction_state, overall_state, coverage, hasil pencocokan, freshness, dan reasons bersama-sama. Nilai null dapat berarti data tidak tersedia atau perbandingan tidak diminta, bergantung pada kolomnya. Data yang tidak tersedia tidak boleh dianggap sebagai hasil pemeriksaan yang baik.

Mulai dari permintaan pertama, lalu pelajari kelengkapan data dan pengulangan permintaan.

Kirim permintaan pertama

Dapatkan akses

Hubungi dukungan ChainZap untuk membahas akses dan mendapatkan undangan. Setelah masuk ke portal, buka Kunci API, buat kunci dengan nama yang jelas, lalu simpan di penyimpanan rahasia server. Kunci lengkap hanya ditampilkan sekali.

Periksa transaksi berdasarkan hash

Contoh berikut menggunakan kunci dan hash fiktif. Ganti keduanya di server Anda. Simpan Idempotency-Key bersama data operasi sebelum mengirim permintaan agar dapat digunakan kembali saat mencoba ulang.

cURL
curl --include --max-time 15 'https://api.chainzap.io/v1/transaction/check' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: cz_live_000000000000.fictional_example_only' \
  -H 'Idempotency-Key: merchant-order-1001-check-1' \
  -H 'X-Request-ID: merchant-order-1001-attempt-1' \
  --data '{"network":"tron","tx_hash":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}'

Simpan X-Request-ID dari header respons. Nilainya sama dengan request_id pada JSON dan membantu tim dukungan menemukan permintaan Anda. Hash fiktif dapat menghasilkan not_found; lihat status transaksi.

Cocokkan dengan rincian pembayaran

Tambahkan penerima, kontrak token, dan jumlah yang diharapkan jika Anda perlu memastikan transaksi sesuai dengan pembayaran tertentu.

JSON
{
  "network": "tron",
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "expected_recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "expected_token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "expected_amount": "1250.000001"
}

Alamat dalam contoh bukan tujuan pengiriman dana. Identitas token ditentukan oleh alamat kontrak. Jumlah dikirim sebagai string dengan titik sebagai pemisah desimal. Ketiga hasil pencocokan mengacu pada transfer terpilih yang sama. Lihat pencocokan pembayaran.

Jika respons tidak diterima

Kirim ulang isi permintaan dan Idempotency-Key yang sama. Jangan membuat kunci baru hanya karena koneksi terputus: permintaan pertama mungkin sudah diproses.

Jika respons berisi kesalahan, ulangi hanya bila error.retryable=true, patuhi Retry-After, dan batasi jumlah percobaan. Kesalahan yang sudah disimpan dapat dikembalikan lagi tanpa pemeriksaan sumber data baru.

Lihat contoh Python dan TypeScript untuk pola pengulangan yang dibatasi, serta statistik penggunaan untuk sisa kuota.

Akses dan kunci API

Gunakan kunci hanya dari server

Sertakan X-API-Key pada setiap permintaan API dan gunakan HTTPS. Jangan memasukkan kunci ke URL, kode frontend, penyimpanan browser, analitik, Git, atau pesan dukungan.

Satu kunci memberikan akses ke satu organisasi. Permintaan tidak dapat memilih organisasi lain melalui isi JSON. Sesi masuk portal terpisah dari autentikasi menggunakan kunci API.

Anggota dengan peran owner, admin, dan developer dapat membuat, mengganti, serta mencabut kunci. Peran billing dan viewer dapat melihat statistik dan informasi kunci, tetapi tidak dapat mengelola kunci atau menjalankan pemeriksaan.

Membuat, mengganti, dan mencabut kunci

Gunakan kunci dengan nama yang jelas untuk setiap integrasi. Kunci lengkap hanya ditampilkan saat dibuat atau diganti. Daftar kunci menampilkan awalannya saja.

Penggantian langsung mencabut kunci lama dan membuat kunci baru dalam satu operasi. Perbarui konfigurasi server setelahnya. Untuk perpindahan terencana tanpa jeda layanan, buat kunci terpisah terlebih dahulu, pindahkan integrasi dan pastikan berfungsi, lalu cabut kunci sebelumnya.

Kesalahan akses

  • 401 invalid_api_key: kunci tidak valid atau sudah dicabut.
  • 403 tenant_suspended: akses organisasi ditangguhkan.
  • 403 network_not_enabled: jaringan tidak diaktifkan untuk organisasi.

Perbaiki akses sebelum mencoba ulang. Mengulang permintaan yang sama tanpa perubahan tidak akan menyelesaikan masalah ini.

Periksa satu transaksi

POST /v1/transaction/check

Kirim objek JSON dengan kolom wajib network dan tx_hash. Kolom yang tidak dikenal akan ditolak.

Kolom Nilai yang dikirim
network Hanya "tron".
tx_hash Hash transaksi sepanjang 64 karakter heksadesimal.
expected_recipient Opsional: alamat penerima pembayaran di TRON.
expected_token_contract Opsional: alamat kontrak token pembayaran di TRON.
expected_amount Opsional: jumlah sebagai string, misalnya "10.25".

Alamat harus memiliki checksum TRON yang valid. Jumlah tidak boleh negatif. Angka JSON dan notasi eksponen seperti 1e3 tidak diterima. Isi permintaan dibatasi hingga 4 KiB.

Sertakan Content-Type: application/json, X-API-Key dari server, dan Idempotency-Key untuk pengulangan aman. Gunakan X-Request-ID untuk menghubungkan permintaan dengan catatan operasi Anda. Tipe dan kolom lengkap tersedia di referensi API.

Isi respons

Respons mencakup status dan konfirmasi transaksi, daftar transfer, transfer terpilih, risiko, pemeriksaan sanksi, keaslian token, pencocokan pembayaran, serta kelengkapan dan waktu data. reasons memuat 2-5 penjelasan yang diprioritaskan.

Baca transaction_state terpisah dari overall_state. Tangani nilai null secara eksplisit. Jumlah transfer dan persentase paparan risiko disajikan sebagai string.

transfers_truncated=true berarti daftar transfer telah dipersingkat. AMBIGUOUS_TRANSFER berarti lebih dari satu transfer cocok dengan syarat pembayaran. Keduanya perlu diperhatikan. Jangan menganggap daftar yang dipersingkat sudah lengkap atau menggabungkan hasil pencocokan dari transfer berbeda.

Penggunaan kuota

Pemeriksaan dengan data lengkap memakai satu unit kuota bulanan, termasuk jika hasilnya berisiko tinggi. Data tidak lengkap tidak mengurangi kuota. Pengembalian ulang hasil operasi yang sama tidak memakai kuota dua kali.

Cocokkan transfer dengan rincian pembayaran

Gunakan kolom expected_* untuk memeriksa penerima, kontrak token, dan jumlah pembayaran tertentu. Anda dapat mengirim semua kolom atau hanya yang diperlukan.

Semua perbandingan mengacu pada satu transfer

Satu transaksi dapat berisi beberapa transfer. ChainZap memprioritaskan transfer yang memenuhi seluruh syarat. Jika tidak ada, layanan memilih transfer dengan kecocokan terbanyak. Jika hasilnya sama, indeks transfer menentukan pilihan secara konsisten.

recipient_match, token_match, dan amount_match selalu mengacu pada transfer terpilih tersebut. Jika beberapa transfer memenuhi seluruh syarat, respons memuat AMBIGUOUS_TRANSFER.

Hasil Arti
true Nilai sesuai dengan yang Anda kirim.
false Nilai dapat diperiksa, tetapi tidak sesuai.
null Perbandingan tidak diminta atau datanya belum cukup.

Cara nilai dibandingkan

Jika Anda memberikan nilai yang diharapkan tetapi data transfer belum tersedia, kolom perbandingan terkait bernilai null, cakupan menjadi partial, dan respons menyertakan alasan EXPECTED_DATA_UNAVAILABLE. Misalnya, tanpa jumlah desimal token, API tidak dapat menyatakan bahwa jumlahnya berbeda. Jangan menganggap null sebagai kecocokan yang terkonfirmasi.

Penerima diperiksa berdasarkan alamat TRON dengan checksum yang valid. Token dibandingkan berdasarkan alamat kontrak, bukan nama atau simbolnya. Simbol yang sama tidak membuktikan bahwa tokennya sama.

Jumlah harus berupa string desimal, misalnya "10.000001". Layanan mengubahnya menjadi bilangan bulat dalam satuan terkecil token dan membandingkannya secara tepat, tanpa toleransi pembulatan. Presisi yang tidak sesuai dengan jumlah desimal aset menghasilkan 422 invalid_expected_amount.

Contoh ketidakcocokan

Anda mengharapkan "10.000001", tetapi transfer terpilih berjumlah "10". Respons berisi amount_match=false dan EXPECTED_AMOUNT_MISMATCH.

Penerima yang berbeda menghasilkan EXPECTED_RECIPIENT_MISMATCH. Kontrak token yang berbeda menghasilkan EXPECTED_TOKEN_MISMATCH. Jumlah yang cocok tidak membuktikan bahwa penerima dan token juga cocok. Sebelum mengonfirmasi pembayaran, periksa seluruh perbandingan yang diperlukan, status transaksi, dan penilaian keseluruhan.

Batas dan statistik penggunaan

GET /v1/usage

Permintaan ini mengembalikan batas dan statistik organisasi pemilik kunci API.

cURL
curl --include --max-time 15 'https://api.chainzap.io/v1/usage?days=30' \
  -H 'X-API-Key: cz_live_000000000000.fictional_example_only' \
  -H 'X-Request-ID: merchant-usage-1001'

Parameter days menentukan periode statistik antara 1 dan 90 hari, dengan nilai bawaan 30. Permintaan ini tidak memerlukan Idempotency-Key. Membaca statistik tetap terkena batas frekuensi, tetapi tidak memakai kuota pemeriksaan transaksi.

Kuota bulan berjalan

period.start dan period.end menandai awal dan akhir bulan kalender berdasarkan UTC.

Kolom Arti
limit Jumlah pemeriksaan yang tersedia untuk bulan tersebut.
used Pemeriksaan selesai dengan data lengkap yang telah diperhitungkan.
reserved Kuota yang sementara dicadangkan untuk permintaan yang masih berjalan.
remaining Sisa kuota: max(0, limit - used - reserved).

Jika permintaan selesai tanpa tagihan, kuota yang dicadangkan dilepas. Seluruh kunci dan permintaan dari portal menggunakan kuota organisasi yang sama.

Statistik periode pilihan

recent menghitung pemeriksaan selesai dalam days hari terakhir. Pengembalian ulang respons tersimpan tidak membuat catatan pemeriksaan baru. Statistik mencakup jumlah permintaan, pemeriksaan yang memakai kuota, kesalahan, hasil LIMITED_DATA, waktu respons rata-rata, serta distribusi jaringan dan penilaian keseluruhan.

Hash transaksi dan rincian penyedia tidak disertakan. Portal juga menyediakan statistik harian UTC serta p50/p95 jika terdapat setidaknya 20 pemeriksaan selesai dalam 30 hari terakhir. Respons HTTP yang berhasil dapat memiliki data tidak lengkap; hitungan ini merupakan bagian dari total respons, bukan tambahan terpisah.

Contoh integrasi

Python: percobaan ulang dengan kunci yang sama

Contoh untuk server ini menggunakan httpx. Kunci API yang ditampilkan adalah contoh fiktif. Dalam integrasi sebenarnya, ambil kunci dari penyimpanan rahasia server. Simpan operation_key dan body dalam catatan operasi sebelum percobaan pertama, lalu gunakan kembali keduanya setelah proses dimulai ulang.

Python
import random
import time
import httpx

api_key = "cz_live_000000000000.fictional_example_only"
operation_key = "merchant-order-1001-check-1"
body = {"network": "tron", "tx_hash": "a" * 64}


def check():
    with httpx.Client(timeout=15, follow_redirects=False) as client:
        for attempt in range(4):
            try:
                response = client.post(
                    "https://api.chainzap.io/v1/transaction/check",
                    headers={
                        "X-API-Key": api_key,
                        "Idempotency-Key": operation_key,
                        "X-Request-ID": f"order-1001-attempt-{attempt + 1}",
                    },
                    json=body,
                )
            except httpx.TransportError:
                if attempt == 3:
                    raise RuntimeError("unresolved_transport_outcome") from None
                time.sleep(2 ** attempt + random.uniform(0, 1))
                continue
            print("X-Request-ID:", response.headers.get("X-Request-ID"))
            try:
                result = response.json()
            except ValueError:
                raise RuntimeError("unresolved_gateway_response") from None
            if response.is_success:
                return result
            error = result.get("error", {})
            if error.get("retryable") is not True:
                raise RuntimeError(error.get("code", "unresolved_response"))
            if response.headers.get("Idempotent-Replayed") == "true":
                raise RuntimeError("stored_error_requires_reconciliation")
            try:
                instructed = int(response.headers.get("Retry-After", "0"))
            except ValueError:
                raise RuntimeError("invalid_retry_after") from None
            delay = max(instructed, 2 ** attempt) + random.uniform(0, 1)
            if attempt == 3 or delay > 30:
                raise RuntimeError("schedule_retry_with_same_operation_key")
            time.sleep(delay)

Kode ini menangani galat sementara dan gangguan jaringan tanpa membuat operasi baru. Tentukan tindakan bisnis berdasarkan hasil pemeriksaan. Jangan mencatat body atau seluruh respons dalam log.

JavaScript / TypeScript: permintaan dari server

Jalankan kode ini di server. Jangan memasukkan kunci aktif ke dalam browser. Seperti pada contoh Python, simpan kunci operasi dan isi permintaan sebelum memanggil fungsi.

TypeScript
type PublicResult = {
  request_id?: string;
  error?: { code: string; message: string; retryable: boolean };
  [field: string]: unknown;
};

const apiKey = "cz_live_000000000000.fictional_example_only";
const operationKey = "merchant-order-1001-check-1";
const body = { network: "tron", tx_hash: "a".repeat(64) };
const wait = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));

async function check(): Promise<PublicResult> {
  for (let attempt = 0; attempt < 4; attempt++) {
    let response: Response;
    try {
      response = await fetch("https://api.chainzap.io/v1/transaction/check", {
        method: "POST", redirect: "error", signal: AbortSignal.timeout(15000),
        headers: {
          "Content-Type": "application/json", "X-API-Key": apiKey,
          "Idempotency-Key": operationKey,
          "X-Request-ID": `order-1001-attempt-${attempt + 1}`,
        },
        body: JSON.stringify(body),
      });
    } catch {
      if (attempt === 3) throw new Error("unresolved_transport_outcome");
      await wait((2 ** attempt + Math.random()) * 1000);
      continue;
    }
    console.info("X-Request-ID:", response.headers.get("X-Request-ID"));
    const result = await response.json() as PublicResult;
    if (response.ok) return result;
    if (result.error?.retryable !== true) {
      throw new Error(result.error?.code ?? "unresolved_response");
    }
    if (response.headers.get("Idempotent-Replayed") === "true") {
      throw new Error("stored_error_requires_reconciliation");
    }
    const instructed = Number(response.headers.get("Retry-After") ?? "0");
    if (!Number.isFinite(instructed) || instructed < 0) {
      throw new Error("invalid_retry_after");
    }
    const delay = Math.max(instructed, 2 ** attempt) + Math.random();
    if (attempt === 3 || delay > 30) {
      throw new Error("schedule_retry_with_same_operation_key");
    }
    await wait(delay * 1000);
  }
  throw new Error("retry_budget_exhausted");
}

Contoh respons

Data berikut dibuat untuk menunjukkan struktur respons, bukan hasil pemeriksaan langsung. Setiap contoh memiliki header X-Request-ID yang sama dengan request_id. Perhatikan nilai null, kelengkapan data, dan penilaian keseluruhan.

Transaksi terkonfirmasi

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "low",
  "amount": "1250.000001",
  "amount_match": true,
  "confirmations": 27,
  "coverage": "complete",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "CLEAR",
  "reasons": [
    {
      "category": "transaction",
      "code": "TX_FINALIZED",
      "severity": "info"
    },
    {
      "category": "risk",
      "code": "AML_LOW",
      "severity": "info"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": true,
  "request_id": "example-confirmed",
  "required_confirmations": 19,
  "sanctions_hit": false,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": true,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "confirmed",
  "transaction_type": "TriggerSmartContract",
  "transfers": [
    {
      "amount": "1250.000001",
      "asset_type": "trc20",
      "decimals": 6,
      "index": 0,
      "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "token_id": null,
      "token_symbol": "USDT"
    }
  ],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Menunggu konfirmasi

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "low",
  "amount": "1250.000001",
  "amount_match": true,
  "confirmations": 3,
  "coverage": "complete",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "REVIEW",
  "reasons": [
    {
      "code": "TX_PENDING_CONFIRMATIONS",
      "category": "transaction",
      "severity": "warning"
    },
    {
      "code": "AML_LOW",
      "category": "risk",
      "severity": "info"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": true,
  "request_id": "example-pending",
  "required_confirmations": 19,
  "sanctions_hit": false,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": true,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "pending",
  "transaction_type": "TriggerSmartContract",
  "transfers": [
    {
      "amount": "1250.000001",
      "asset_type": "trc20",
      "decimals": 6,
      "index": 0,
      "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "token_id": null,
      "token_symbol": "USDT"
    }
  ],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Transaksi gagal

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "low",
  "amount": null,
  "amount_match": null,
  "confirmations": 27,
  "coverage": "complete",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "REVIEW",
  "reasons": [
    {
      "code": "TX_REVERTED",
      "category": "transaction",
      "severity": "warning"
    },
    {
      "code": "TX_FACTS_VERIFIED",
      "category": "transaction",
      "severity": "info"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": null,
  "request_id": "example-failed",
  "required_confirmations": 19,
  "sanctions_hit": false,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": null,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "failed",
  "transaction_type": "TriggerSmartContract",
  "transfers": [],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Transaksi tidak ditemukan

JSON
{
  "aml_risk_level": "unknown",
  "amount": null,
  "amount_match": null,
  "confirmations": null,
  "coverage": "complete",
  "decimals": null,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "REVIEW",
  "reasons": [
    {
      "code": "TX_NOT_FOUND",
      "category": "transaction",
      "severity": "warning"
    },
    {
      "code": "TX_FACTS_VERIFIED",
      "category": "transaction",
      "severity": "info"
    }
  ],
  "recipient": null,
  "recipient_match": null,
  "request_id": "example-not-found",
  "required_confirmations": 19,
  "sanctions_hit": null,
  "sender": null,
  "token_authenticity": "unknown",
  "token_contract": null,
  "token_match": null,
  "token_symbol": null,
  "transaction_category": "unknown",
  "transaction_state": "not_found",
  "transaction_type": "unknown",
  "transfers": [],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Data belum lengkap

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "unknown",
  "amount": "1250.000001",
  "amount_match": true,
  "confirmations": 27,
  "coverage": "partial",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "LIMITED_DATA",
  "reasons": [
    {
      "code": "AML_UNAVAILABLE",
      "category": "risk",
      "severity": "warning"
    },
    {
      "code": "SANCTIONS_UNAVAILABLE",
      "category": "sanctions",
      "severity": "warning"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": true,
  "request_id": "example-limited-data",
  "required_confirmations": 19,
  "sanctions_hit": null,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": true,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "confirmed",
  "transaction_type": "TriggerSmartContract",
  "transfers": [
    {
      "amount": "1250.000001",
      "asset_type": "trc20",
      "decimals": 6,
      "index": 0,
      "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "token_id": null,
      "token_symbol": "USDT"
    }
  ],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Kecocokan daftar sanksi

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "low",
  "amount": "1250.000001",
  "amount_match": true,
  "confirmations": 27,
  "coverage": "complete",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "HIGH_RISK",
  "reasons": [
    {
      "code": "SANCTIONS_HIT",
      "category": "sanctions",
      "severity": "critical"
    },
    {
      "code": "TX_FINALIZED",
      "category": "transaction",
      "severity": "info"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": true,
  "request_id": "example-sanctions-hit",
  "required_confirmations": 19,
  "sanctions_hit": true,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": true,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "confirmed",
  "transaction_type": "TriggerSmartContract",
  "transfers": [
    {
      "amount": "1250.000001",
      "asset_type": "trc20",
      "decimals": 6,
      "index": 0,
      "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "token_id": null,
      "token_symbol": "USDT"
    }
  ],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Rincian pembayaran tidak cocok

Lihat respons JSON lengkap
JSON
{
  "aml_risk_level": "low",
  "amount": "1250.000001",
  "amount_match": false,
  "confirmations": 27,
  "coverage": "complete",
  "decimals": 6,
  "freshness": {
    "checked_at": "2026-09-03T12:00:00Z",
    "max_source_age_seconds": 4,
    "risk_data_at": "2026-09-03T12:00:00Z",
    "token_data_at": "2026-09-03T12:00:00Z",
    "transaction_at": "2026-09-03T11:59:00Z"
  },
  "key_exposure": [],
  "network": "tron",
  "overall_state": "REVIEW",
  "reasons": [
    {
      "code": "EXPECTED_AMOUNT_MISMATCH",
      "category": "expected",
      "severity": "warning"
    },
    {
      "code": "TX_FINALIZED",
      "category": "transaction",
      "severity": "info"
    }
  ],
  "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "recipient_match": true,
  "request_id": "example-expected-mismatch",
  "required_confirmations": 19,
  "sanctions_hit": false,
  "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
  "token_authenticity": "official",
  "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
  "token_match": true,
  "token_symbol": "USDT",
  "transaction_category": "trc20_transfer",
  "transaction_state": "confirmed",
  "transaction_type": "TriggerSmartContract",
  "transfers": [
    {
      "amount": "1250.000001",
      "asset_type": "trc20",
      "decimals": 6,
      "index": 0,
      "recipient": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "sender": "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8",
      "token_contract": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",
      "token_id": null,
      "token_symbol": "USDT"
    }
  ],
  "transfers_truncated": false,
  "tx_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

Status transaksi

transaction_state menjelaskan status transaksi di blockchain. Kolom ini tidak menggantikan penilaian risiko atau kelengkapan data.

Nilai Arti Penanganan
confirmed Sumber data mengonfirmasi transaksi. Periksa juga jumlah konfirmasi, penilaian keseluruhan, dan kelengkapan data.
pending Transaksi ditemukan, tetapi konfirmasi akhir belum lengkap. Jangan anggap pembayaran telah selesai. Setelah menangani hasil saat ini, jadwalkan pemeriksaan terpisah nanti.
failed Eksekusi gagal atau dibatalkan. Jangan anggap transfer yang diharapkan telah diterima.
not_found Transaksi tidak ditemukan dalam data yang tersedia. Periksa jaringan dan hash. Ketiadaan catatan bukan bukti pembayaran selesai.
unknown Data yang ada belum dapat menentukan status. Tangani sebagai data yang belum lengkap.

Konfirmasi TRON

Versi v1 mensyaratkan 19 konfirmasi bersama bukti finalitas jaringan. Bandingkan confirmations dengan required_confirmations. Status confirmed saja tidak membuktikan pemeriksaan lainnya sudah lengkap.

Lihat berbagai situasi dalam contoh respons.

Penilaian keseluruhan

overall_state merangkum pemeriksaan transaksi, risiko, sanksi, token, dan rincian pembayaran.

Nilai Cara membacanya
CLEAR Pemeriksaan wajib selesai tanpa masalah yang teridentifikasi dan syarat finalitas terpenuhi. Ini bukan jaminan bebas risiko di masa depan.
REVIEW Ada hal yang perlu ditinjau, misalnya konfirmasi belum cukup, eksekusi gagal, risiko meningkat, atau rincian pembayaran berbeda.
HIGH_RISK Ada temuan berisiko tinggi atau kritis, seperti kecocokan daftar sanksi, risiko AML tinggi, atau token palsu.
LIMITED_DATA Data tidak lengkap, tidak didukung, atau saling bertentangan. Jangan perlakukan sebagai CLEAR.

Baca bersama kelengkapan data

Penilaian keseluruhan dan coverage menjelaskan hal berbeda. Temuan berisiko tinggi dapat muncul bersama data yang belum lengkap. Jika fakta transaksi saling bertentangan, LIMITED_DATA mendapat prioritas.

Simpan dan periksa reasons yang benar-benar dikembalikan. Daftar tersebut memuat penjelasan penting dalam jumlah terbatas, bukan seluruh bukti dari setiap sumber.

Kelengkapan dan waktu data

Data lengkap dan tidak lengkap

coverage="complete" berarti data memenuhi kebutuhan pemeriksaan wajib untuk respons tersebut. Ini tidak berarti transaksi aman: hasilnya tetap dapat menunjukkan risiko tinggi.

coverage="partial" berarti sebagian data wajib tidak tersedia, tidak didukung, atau tidak konsisten. Kekurangan dapat berkaitan dengan transaksi, aset, token, maupun penilaian risiko.

  • Hasil pemeriksaan sanksi tidak tersedia: sanctions_hit=null, bukan false.
  • Risiko belum diketahui: aml_risk_level="unknown".
  • Keaslian token belum ditentukan: token_authenticity="unknown". Simbol token tidak membuktikan keasliannya.

LIMITED_DATA dapat dikembalikan dengan HTTP 200. Ini merupakan hasil tentang keterbatasan data, bukan selalu kesalahan koneksi.

Waktu pemeriksaan

Periksa freshness.checked_at, waktu data setiap sumber, dan max_source_age_seconds. Jika waktu sumber bernilai null, waktunya tidak diketahui.

Pengulangan dengan Idempotency-Key yang sama mengembalikan hasil, waktu, dan ID permintaan semula. Pengulangan tidak memperbarui data. Jika memerlukan penilaian yang lebih baru setelah hasil tersebut ditangani, buat operasi pemeriksaan terpisah.

Perhitungan kuota

Hanya pemeriksaan dengan data lengkap yang memakai kuota. Data parsial, kesalahan koneksi, dan pengembalian ulang hasil tersimpan tidak memakai unit tambahan. Aturan yang sama berlaku untuk permintaan dari portal.

Penjelasan hasil

Setiap elemen reasons memiliki code, category, dan severity. Tingkat kepentingannya adalah info, warning, high, dan critical. API mengembalikan 2-5 penjelasan yang diprioritaskan.

Kode baru dapat ditambahkan. Jangan menganggap kode yang belum dikenal sebagai hasil baik. Kode yang tidak muncul juga tidak membuktikan bahwa pemeriksaan terkait telah dilakukan.

Kode Arti
TX_FACTS_VERIFIED Data transaksi memenuhi persyaratan verifikasi.
TX_FACTS_PARTIAL Sebagian data transaksi yang wajib belum tersedia.
TX_FACTS_DISAGREE Sumber data transaksi saling bertentangan.
TX_FINALIZED Persyaratan finalitas terpenuhi.
TX_PENDING_CONFIRMATIONS Konfirmasi belum cukup.
TX_REVERTED Eksekusi transaksi gagal.
TX_NOT_FOUND Transaksi tidak ditemukan.
TRANSFERS_TRUNCATED Daftar transfer telah dipersingkat.
AMBIGUOUS_TRANSFER Lebih dari satu transfer sesuai dengan syarat pembayaran.
AML_UNSUPPORTED_ASSET Pemeriksaan AML yang diperlukan belum mendukung aset ini.
AML_UNAVAILABLE Data penilaian risiko AML tidak tersedia.
AML_LOW Penilaian yang tersedia menunjukkan risiko AML rendah.
AML_ELEVATED Penilaian yang tersedia menunjukkan risiko AML sedang.
AML_HIGH Penilaian yang tersedia menunjukkan risiko AML tinggi atau sangat tinggi.
SANCTIONS_HIT Ada kecocokan dengan daftar sanksi.
SANCTIONS_CLEAR Pemeriksaan sanksi yang tersedia tidak menemukan kecocokan.
SANCTIONS_UNAVAILABLE Pemeriksaan sanksi tidak tersedia; ini bukan hasil bersih.
TOKEN_AUTH_UNAVAILABLE Data untuk memeriksa keaslian token tidak tersedia.
TOKEN_OFFICIAL Kontrak dikenali sebagai kontrak resmi.
TOKEN_FAKE Token teridentifikasi sebagai token palsu.
TOKEN_UNKNOWN Keaslian token belum diketahui.
EXPECTED_RECIPIENT_MISMATCH Penerima transfer terpilih berbeda dari yang diminta.
EXPECTED_TOKEN_MISMATCH Kontrak token transfer terpilih berbeda dari yang diminta.
EXPECTED_AMOUNT_MISMATCH Jumlah transfer terpilih berbeda dari yang diminta.
EXPECTED_DATA_UNAVAILABLE Data transfer belum cukup untuk menyelesaikan perbandingan yang diminta. Kolom hasil perbandingan tersebut bernilai null.

Ulangi permintaan tanpa tagihan ganda

Simpan satu kunci untuk setiap pemeriksaan

Idempotency-Key menerima 1 hingga 128 karakter ASCII yang dapat dicetak. Kunci berlaku untuk organisasi Anda dan isi permintaan yang telah dinormalisasi. Gunakan kunci dan isi yang sama saat mencoba kembali, termasuk dari server lain atau setelah mengganti kunci API. Jangan masukkan kredensial atau data pribadi ke dalamnya.

Jika pemeriksaan sudah selesai, API mengembalikan respons yang tersimpan tanpa perubahan, dengan Idempotent-Replayed: true dan X-Request-ID awal. Kunci yang sama dengan isi berbeda menghasilkan 409 idempotency_conflict dan tidak boleh dicoba ulang. Jika pemeriksaan masih berjalan, API mengembalikan 409 idempotency_in_progress beserta Retry-After.

Masa penyimpanan dan respons galat

Masa penyimpanan standar adalah 24 jam. Hubungi dukungan jika kontrak Anda menetapkan masa yang berbeda. Setelah masa ini berakhir, penggunaan kunci yang sama dapat memulai pemeriksaan baru yang dikenai kuota. Batasi percobaan otomatis pada masa penyimpanan dan simpan catatan pembayaran Anda sendiri.

Respons galat yang sudah disimpan, termasuk kegagalan penyedia data atau kuota yang habis, juga dikembalikan tanpa perubahan. retryable=true menjelaskan sifat kegagalannya; nilai ini tidak menghapus respons yang tersimpan.

Hentikan percobaan otomatis jika respons galat disertai Idempotent-Replayed: true. Setelah hasil tersebut dipastikan dan dicatat, Anda dapat memulai pemeriksaan baru jika perlu mendapatkan data terbaru. Jangan membuat kunci baru hanya karena hasil permintaan awal belum diketahui.

Batas permintaan dan kuota

Batas organisasi

Batas mengikuti versi paket yang berlaku atau ketentuan khusus organisasi Anda. Periksa /v1/usage dan halaman Paket dan batas di portal. Nilai dalam contoh tidak merupakan penawaran harga atau jaminan kuota.

Header Informasi
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset Batas permintaan, sisa kapasitas, dan waktu pemulihannya.
X-Quota-Limit, X-Quota-Remaining, X-Quota-Reset Kuota bulanan, sisa kuota, dan awal periode berikutnya.

Header waktu menggunakan detik Unix. Semua kunci dan pemeriksaan melalui portal memakai kuota organisasi yang sama. Periode bulanan mengikuti UTC, bukan zona waktu browser.

Saat batas tercapai

429 rate_limit_exceeded berarti permintaan terlalu sering. 429 concurrency_limit_exceeded berarti terlalu banyak pemeriksaan sedang berjalan. 429 quota_exceeded berarti kuota habis.

Ikuti Retry-After, termasuk jika waktu tunggu panjang karena kuota bulanan habis. Respons tersimpan tetap melewati pemeriksaan akses serta batas frekuensi dan jumlah permintaan bersamaan, tetapi tidak mengurangi kuota lagi.

Gunakan antrean terbatas di server dan atur jumlah permintaan bersamaan per organisasi. Perubahan paket berlaku untuk hak akses berikutnya dan tidak mengubah riwayat penggunaan.

Percobaan ulang dan batas waktu

Batasi jumlah percobaan

Gunakan batas waktu klien yang lebih panjang dari batas server 12 detik, misalnya 15 detik per percobaan. Target latensi p95 adalah paling lama 5 detik. Target ini menjadi syarat peluncuran, bukan jaminan untuk setiap permintaan. Waktu jaringan berada di luar batas waktu server.

Jika menerima respons galat, coba kembali hanya ketika error.retryable=true. Ikuti Retry-After, tambah jeda secara eksponensial dengan variasi acak, dan batasi jumlah percobaan serta durasi seluruh proses. Jika waktu tunggu melampaui batas proses interaktif, jadwalkan percobaan berikutnya tanpa memperpendek jeda yang diminta server.

Jika jaringan terputus, gunakan kembali isi permintaan dan Idempotency-Key yang telah disimpan. Pertahankan keduanya setelah proses dimulai ulang. Jika galat berasal dari respons tersimpan, hentikan percobaan otomatis dan pastikan hasil operasinya.

409 idempotency_conflict memerlukan perbaikan integrasi. 409 idempotency_in_progress, 429, 503, dan 504 dapat dicoba kembali sesuai aturan di atas.

Catat hanya ID permintaan dan kode galat publik dalam log biasa. Jangan mencatat isi permintaan, kunci API, saldo, atau data mentah penyedia. Contoh integrasi menunjukkan penerapan aturan ini.

Galat dan penanganannya

Format respons galat

JSON
{"request_id":"merchant-order-1001-attempt-1","error":{"code":"provider_unavailable","message":"Transaction data is temporarily unavailable","retryable":true}}

X-Request-ID pada header mengidentifikasi respons yang sama. Gunakan code dan retryable untuk menentukan tindakan. Jangan bergantung pada teks message: pesan API pada contoh ditampilkan apa adanya dan dapat berubah.

Kegagalan gateway dapat menghasilkan format yang berbeda. Jika respons tidak ada atau tidak valid, anggap hasil permintaan belum diketahui dan pertahankan kunci idempotensi awal.

HTTP Kode Tindakan
401 invalid_api_key Perbaiki kredensial di server sebelum mencoba kembali.
403 tenant_suspended, network_not_enabled Hubungi administrator organisasi atau dukungan untuk memeriksa akses.
409 idempotency_conflict Perbaiki hubungan kunci dengan isi permintaan. Jangan ulangi permintaan yang sama.
409 idempotency_in_progress Tunggu sesuai Retry-After, lalu ulangi operasi yang sama.
422 malformed_tx_hash, invalid_network, invalid_tron_address, invalid_expected_amount, invalid_idempotency_key, payload_too_large, validation_error Perbaiki data permintaan.
429 rate_limit_exceeded, quota_exceeded, concurrency_limit_exceeded Ikuti Retry-After. Kurangi permintaan bersamaan atau tunggu kuota diperbarui.
503 provider_unavailable, rate_limiter_unavailable, api_disabled, api_not_configured Coba lagi hanya jika diizinkan oleh retryable dan batas percobaan Anda. Pertahankan kuncinya.
504 request_timeout Ulangi kunci dan isi yang sama setelah jeda yang diminta.
500 internal_error Terapkan batas percobaan ulang. Kirim X-Request-ID kepada dukungan jika masalah berlanjut.

Periksa Idempotent-Replayed: mengulang respons galat yang tersimpan tidak memperbarui hasilnya. Lihat idempotensi. Respons HTTP galat tidak selalu berarti permintaan belum diterima.

Keamanan integrasi

Lindungi kredensial

Panggil API dari backend. Simpan kunci dalam pengelola rahasia, batasi akses hanya untuk layanan integrasi, dan ganti kunci jika diduga bocor. Jangan memasukkan kunci ke tiket dukungan, URL, pelacak masalah, analitik, konsol browser, atau kode frontend.

Aktifkan kebijakan autentikasi yang kuat pada penyedia identitas Anda. Terima undangan hanya dari administrator organisasi yang dipercaya. Keluar dari akun setelah menggunakan perangkat bersama. Gunakan pengaturan organisasi untuk mengakhiri semua sesi jika diperlukan.

Tangani data dengan hati-hati

Validasi permintaan pembayaran di server. Hubungkan setiap pemeriksaan dengan ID operasi pembayaran Anda sendiri dan pastikan hasil yang belum jelas sebelum melanjutkan. Gunakan alamat kontrak token yang tepat dan string desimal. Tangani nilai null serta status yang tidak dikenal secara eksplisit.

Tampilkan nama organisasi, label kunci, dan nilai respons sebagai teks yang telah di-escape agar tidak dieksekusi sebagai HTML.

Simpan hanya data yang diperlukan dan batasi akses ke rincian respons. Untuk dukungan, kirim X-Request-ID dan kode galat publik. Jangan kirim kunci, saldo, atau data mentah permintaan dan penyedia.

Referensi API

Unduh OpenAPI. Nama dan tipe kolom diambil langsung dari kontrak API publik. Kolom wajib dapat berisi null jika tipenya mengizinkan. Arti setiap kolom dijelaskan dalam panduan di atas.

POST /v1/transaction/check

Periksa satu transaksi TRON. Kirim JSON dan X-API-Key dari server Anda. Gunakan Idempotency-Key untuk mengulang permintaan tanpa pengurangan kuota ganda.

HTTP Respons
200 Hasil diterima. Periksa status pemeriksaan dan kelengkapan data.
401 Kunci API tidak valid atau sudah dicabut.
403 Organisasi atau jaringan tidak memiliki akses.
409 Permintaan masih diproses atau kunci dipakai ulang dengan isi berbeda.
422 Perbaiki kolom permintaan.
429 Batas frekuensi, permintaan bersamaan, atau kuota bulanan tercapai.
503 Akses API atau layanan yang diperlukan tidak tersedia.
504 Pemrosesan permintaan melebihi batas waktu server.
500 Kesalahan internal. Simpan X-Request-ID untuk tim dukungan.

GET /v1/usage

Lihat batas dan statistik organisasi Anda. Parameter opsional days menerima 1-90 hari, dengan nilai bawaan 30.

HTTP Respons
200 Hasil diterima. Periksa status pemeriksaan dan kelengkapan data.
422 Perbaiki kolom permintaan.
401 Kunci API tidak valid atau sudah dicabut.
403 Organisasi atau jaringan tidak memiliki akses.
429 Batas frekuensi, permintaan bersamaan, atau kuota bulanan tercapai.
500 Kesalahan internal. Simpan X-Request-ID untuk tim dukungan.
503 Akses API atau layanan yang diperlukan tidak tersedia.
504 Pemrosesan permintaan melebihi batas waktu server.

ErrorDetail

Kolom Tipe / nilai Wajib
code string Ya
message string Ya
retryable boolean Ya

ErrorResponse

Kolom Tipe / nilai Wajib
request_id string Ya
error ErrorDetail Ya

ExposureResponse

Kolom Tipe / nilai Wajib
category string Ya
exposure_type string Ya
hops integer Ya
percent string / null Ya

FreshnessResponse

Kolom Tipe / nilai Wajib
checked_at string Ya
transaction_at string / null Ya
risk_data_at string / null Ya
token_data_at string / null Ya
max_source_age_seconds integer Ya

ReasonResponse

Kolom Tipe / nilai Wajib
code string Ya
category "transaction", "risk", "sanctions", "token", "expected" Ya
severity "info", "warning", "high", "critical" Ya

TransactionCheckRequest

Kolom Tipe / nilai Wajib
tx_hash string Ya
network "tron" Ya
expected_recipient string / null Tidak
expected_token_contract string / null Tidak
expected_amount string / null Tidak

TransactionCheckResponse

Kolom Tipe / nilai Wajib
request_id string Ya
tx_hash string Ya
network "tron" Ya
transaction_type string Ya
transaction_category "trx_transfer", "trc10_transfer", "trc20_transfer", "smart_contract_call", "smart_contract_deploy", "staking", "voting", "governance", "resource_operation", "account_operation", "exchange", "market", "permission_update", "other", "unknown" Ya
transaction_state "confirmed", "pending", "failed", "not_found", "unknown" Ya
confirmations integer / null Ya
required_confirmations integer Ya
sender string / null Ya
recipient string / null Ya
token_contract string / null Ya
token_symbol string / null Ya
decimals integer / null Ya
amount string / null Ya
transfers TransferResponse[] Ya
transfers_truncated boolean Ya
aml_risk_level "low", "moderate", "high", "severe", "unknown" Ya
sanctions_hit boolean / null Ya
key_exposure ExposureResponse[] Ya
token_authenticity "official", "fake", "unknown" Ya
recipient_match boolean / null Ya
token_match boolean / null Ya
amount_match boolean / null Ya
coverage "complete", "partial" Ya
freshness FreshnessResponse Ya
overall_state "CLEAR", "REVIEW", "HIGH_RISK", "LIMITED_DATA" Ya
reasons ReasonResponse[] Ya

TransferResponse

Kolom Tipe / nilai Wajib
index integer Ya
asset_type string Ya
sender string / null Ya
recipient string / null Ya
token_contract string / null Ya
token_id string / null Ya
token_symbol string / null Ya
decimals integer / null Ya
amount string / null Ya

UsageLimitsResponse

Kolom Tipe / nilai Wajib
rate_limit_per_minute integer Ya
max_concurrent_requests integer Ya
enabled_networks string[] Ya

UsagePeriodResponse

Kolom Tipe / nilai Wajib
start string Ya
end string Ya
used integer Ya
reserved integer Ya
limit integer Ya
remaining integer Ya

UsagePlanResponse

Kolom Tipe / nilai Wajib
code string Ya
version integer Ya
name string Ya

UsageRecentResponse

Kolom Tipe / nilai Wajib
days integer Ya
requests integer Ya
billable integer Ya
limited_data integer Ya
errors integer Ya
average_latency_ms integer / null Ya
by_network object Ya
by_overall_state object Ya

UsageResponse

Kolom Tipe / nilai Wajib
tenant_id string Ya
plan UsagePlanResponse / null Ya
limits UsageLimitsResponse Ya
period UsagePeriodResponse Ya
recent UsageRecentResponse Ya

Riwayat perubahan dan versi

v1.0.0

Pemeriksaan transaksi TRON dan laporan penggunaan organisasi. Portal pengembang menyediakan akses melalui undangan, pengelolaan kunci API, informasi paket, dan halaman uji API untuk organisasi Anda.

Ethereum dan TON masih direncanakan dan belum diterima dalam permintaan API publik. Versi ini tidak mencakup API dompet, webhook, pemantauan, atau pelaksanaan pembayaran.

Perubahan kontrak API

Endpoint publik menggunakan awalan /v1. Dokumentasi versi ini tersedia di /docs/v1/. Berkas OpenAPI dibuat dari model permintaan dan respons yang sama dengan API, lalu dibandingkan dengan versi kontrak yang tersimpan dalam pemeriksaan otomatis.

Integrasi harus menerima kolom respons tambahan sambil tetap memvalidasi kolom yang digunakan. Jangan menganggap kode alasan yang tidak dikenal sebagai hasil aman. Perubahan yang tidak kompatibel memerlukan panduan migrasi berversi; tautan dokumentasi untuk versi utama yang ada tetap dipertahankan.

Status layanan dan dukungan

Status akses

Indikator publik menunjukkan apakah akses API bisnis telah diaktifkan. Indikator ini tidak memeriksa penyedia data secara langsung dan bukan jaminan ketersediaan layanan. Jaringan yang didukung menunjukkan kemampuan produk; akses organisasi Anda dapat lebih terbatas.

503 api_disabled berarti pemeriksaan bisnis belum diaktifkan atau sedang dijeda. 503 provider_unavailable berarti data transaksi yang diperlukan tidak dapat diambil untuk permintaan tersebut. Simpan ID permintaan dan ikuti panduan percobaan ulang.

Hubungi kami

Hubungi tim ChainZap untuk undangan, ketentuan komersial, insiden, dan bantuan integrasi. Sertakan X-Request-ID, kode galat publik, serta waktu UTC. Jangan sertakan kunci API, token identitas, atau data mentah transaksi dan penyedia.

Jaringan: TRON: didukung. Ethereum: direncanakan. TON: direncanakan.

Akses API

Memuat…

Ringkasan