Lewati ke konten

Pemeriksaan satu nomor secara realtime

POST/v1/realtime/check/phone

Periksa satu nomor secara sinkron. Satu permintaan dapat memilih beberapa produk realtime berdasarkan ID; jangan gunakan slug produk massal.

FieldTipeWajibDeskripsi
identifierstringYaSatu nomor E.164, misalnya +8613800138000.
countrystringTidakOpsional untuk E.164 lengkap; nomor lokal membutuhkan kode negara ISO yang sesuai. — Kode Negara
product_idsarrayYaDaftar 1 sampai 10 ID produk realtime.

ID produk tidak perlu ditebak: ambil id dari entri yang mode-nya realtime pada GET /v1/products. Produk massal dialamatkan lewat slug, jadi slug tidak pernah berlaku di endpoint ini. Halaman daftar produk menampilkan ID realtime dengan awalan # justru karena alasan ini.

Daftar Produk

Satu panggilan memeriksa satu nomor terhadap maksimal sepuluh produk realtime. Anda menerima satu request_id, satu entri per produk di results, dan setiap entri ditagih terpisah sehingga status bisa bernilai partial_succeeded. Lebih dari sepuluh ID dalam satu panggilan ditolak; konsol memakai batas yang sama.

{
"request_id": "8c1e4f91-7bd8-4d7e-a3ae-3d7e5b0c6c11",
"identifier": "+8613800138000",
"series": "phone",
"status": "succeeded",
"request_status": "completed",
"replayed": false,
"total_reserved": 0.004000,
"total_charged": 0.004000,
"total_refunded": 0.000000,
"charged_amount": 0.004000,
"refunded_amount": 0.000000,
"results": [
{
"product_id": 47,
"product": "wavalid-realtime",
"result": "valid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:00Z",
"error_code": null
},
{
"product_id": 50,
"product": "tgValid-rt",
"result": "invalid",
"cached": false,
"billing_status": "charged",
"charged_amount": 0.002000,
"refunded_amount": 0.000000,
"checked_at": "2026-09-05T10:00:01Z",
"error_code": null
}
]
}
FieldTipeDeskripsi
request_idstring (UUID)UUID yang mengidentifikasi pengiriman ini. Sertakan dalam permintaan dukungan.
identifierstringIdentifier yang diperiksa, dikembalikan apa adanya.
seriesstringphone atau email.
statusstringsucceeded, partial_succeeded atau failed — diturunkan dari berapa banyak hasil yang ditagih.
request_statusstringStatus siklus hidup internal permintaan.
total_reservednumberJumlah yang dicadangkan sebelum pemeriksaan dijalankan.
total_chargednumberTotal yang ditagih di seluruh produk dalam kombinasi.
total_refundednumberTotal yang dikembalikan untuk item yang tidak dapat diselesaikan.
charged_amountnumberTagihan bersih. Selalu sama dengan total_charged.
refunded_amountnumberPengembalian bersih. Selalu sama dengan total_refunded.
replayedbooleantrue jika pemutaran ulang Idempotency-Key mengembalikan hasil yang tersimpan.
resultsarraySatu entri per produk yang diminta, sesuai urutan permintaan produk.
FieldTipeDeskripsi
product_idintegerID produk realtime dari katalog.
productstringSlug produk yang dirujuk oleh ID tersebut.
resultstringvalid, invalid atau unknown — apakah identifier terdaftar.
cachedbooleantrue jika putusan berasal dari cache. Pengambilan dari cache tetap ditagih.
billing_statusstringcharged atau refunded.
charged_amountnumberJumlah yang ditagih untuk produk ini.
refunded_amountnumberJumlah yang dikembalikan untuk produk ini.
checked_atstring (ISO 8601)Kapan putusan dihasilkan, dalam UTC.
error_codestring | nullAlasan item tidak dapat diselesaikan, atau null jika berhasil.
Terminal window
curl -X POST "https://api.zelnum.com/api/v1/realtime/check/phone" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"+8613800138000","country":"CN","product_ids":[47,50]}'

Setiap produk memakai harga per pemeriksaan yang dikunci untuk permintaan, termasuk hasil cache. valid dan invalid ditagih; unknown, timeout, dan item sibuk dikembalikan.

Kombinasi yang berhasil sebagian mengembalikan HTTP 200 dengan status=partial_succeeded; semua gagal memakai status=failed. Periksa billing_status dan error_code tiap item.

Idempotency-Key maksimal 191 byte dan berlaku per pengguna. Setelah timeout atau error 500, ulangi isi asli dengan kunci asli. Hasil disimpan 30 hari secara default.

error_code menunjukkan kegagalan penyedia, kapasitas kanal, tenggat, cache, atau perlindungan konkurensi. Item gagal tidak ditagih.

EndpointArti / tindakan
400Perbaiki nomor, produk, atau kunci; tidak ada biaya yang dicadangkan.
401Periksa kunci, status akun, dan akses realtime; tidak ada biaya yang dicadangkan.
402Saldo tidak cukup; tidak ada item yang dijalankan.
409Ulangi sesuai Retry-After; isi berbeda tidak dapat memakai kunci yang sama.
429Tunggu sesuai Retry-After; tidak ada biaya yang dicadangkan.
500Hasil belum pasti. Ulangi dengan kunci asli dan jangan membuat kunci baru.
503Rute, cache, atau pembatas tidak tersedia; coba lagi nanti.