Langsung ke konten

Dokumentasi API API v1

Periksa satu nomor telepon atau e-mail secara real-time, atau kirim daftar sebagai tugas massal dan unduh satu file hasil. Setiap permintaan memakai Bearer API key.

Autentikasi

Buat kunci di halaman API keys, lalu ganti placeholder di bawah di terminal Anda sendiri. Contoh-contoh ini hanya teks; menyalinnya tidak mengirim apa pun.

Origin APIhttps://api.numdetect.com
Atur kunci Anda secara lokal
# API origin: https://api.numdetect.com
export NUMDETECT_API_KEY='YOUR_API_KEY'
  • Kirim Authorization: Bearer <key> pada setiap permintaan. Permintaan JSON juga memerlukan Content-Type: application/json. Tidak perlu cookie, header CSRF, atau header Origin.
  • Sebuah kunci dapat membaca produk, menjalankan cek satuan dan massal, membaca hasilnya, dan membaca riwayat saldo Anda. Pengaturan akun, kunci, dan isi saldo hanya dikelola di dasbor setelah masuk.
  • Anda dapat membuat hingga 10 kunci, misalnya satu per sistem, dan menghapus yang mana pun seketika.

Simpan kunci di lingkungan server Anda. Jangan menaruh kunci di URL, tangkapan layar, log bersama, atau file sumber yang di-commit.

Produk

Baca katalog terkini sebelum memilih ID produk. Responsnya mencantumkan setiap produk yang dijual beserta jenis input, harga, minimum massal, dan negara yang didukung.

Daftar produk
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/products" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"

single dan bulk menunjukkan apakah produk tersedia saat ini untuk jenis cek tersebut. countries berisi ["*"] untuk semua negara, daftar kode negara, atau kosong untuk produk e-mail. Harga dalam USD micros per cek.

Cek satuan

POST /api/v1/checks menerima satu nomor telepon atau satu alamat e-mail dan daftar ID produk. Permintaan menunggu hingga setiap produk menjawab (sekitar 45 detik) dan mengembalikan cek yang telah selesai.

Periksa nomor telepon
curl --fail-with-body --silent --show-error -X POST "https://api.numdetect.com/api/v1/checks" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  -d '{"phone":"+12025550147","products":["whatsapp","telegram"]}'
Periksa alamat e-mail
curl --fail-with-body --silent --show-error -X POST "https://api.numdetect.com/api/v1/checks" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","products":["apple_email","spotify_email"]}'

Tulis nomor telepon dengan kode negara +. Untuk nomor tanpa kode negara, tambahkan "country": "GB" (kode negara ISO) ke permintaan.

200 · Check

Responsnya adalah cek tersebut: id, input yang dinormalisasi, negaranya, charged, dan satu entri di results per produk. Setiap hasil memiliki status, result (true atau false saat status adalah success), dan info untuk field tambahan yang dikembalikan beberapa produk.

success

Jawaban pasti: result adalah true (terdaftar) atau false (tidak terdaftar). Hanya ini yang ditagih.

unknown

Produk tidak dapat memastikan. result adalah null dan tidak ada yang ditagih; jangan pernah membacanya sebagai false.

failed

Produk tidak dapat dijangkau. result adalah null dan tidak ada yang ditagih; Anda dapat memeriksa lagi nanti.

Baca satu cek
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/checks/$CHECK_ID" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"
Daftar cek terbaru
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/checks?limit=20" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"

Cek massal

POST /api/v1/bulk-jobs mengunggah file sebagai multipart form data. File dibagi menjadi satu daftar per negara, dan setiap negara diperiksa oleh setiap produk yang Anda pilih.

Kirim tugas massal
curl --fail-with-body --silent --show-error -X POST "https://api.numdetect.com/api/v1/bulk-jobs" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "[email protected]" \
  -F "products=whatsapp,telegram" \
  -F "input_kind=phone" \
  -F "max_cost=50000000" \
  -F "column=0" \
  -F "header=true"
  • file: CSV UTF-8 atau teks biasa, hingga 100 MB dan 1.000.000 baris. Kolom lain dipertahankan dan dikembalikan dalam file hasil.
  • input_kind adalah phone atau email. column adalah kolom berindeks-0 yang berisi nomor (default 0); header=true melewati baris pertama.
  • country (opsional) dipakai untuk nomor telepon yang ditulis tanpa kode negara. Nomor yang diawali + atau 00 tetap memakai negaranya sendiri.
  • max_cost adalah jumlah terbanyak yang Anda setujui untuk dibayar, dalam USD micros. Tugas ditolak, dan tidak ada yang ditagih, jika biayanya akan lebih tinggi atau saldo Anda kurang.
200 · BulkJob

Responsnya adalah tugas dengan status running, jumlah barisnya (total, valid, duplicate, invalid), jumlah dana yang ditahan, dan satu task per negara dan produk. Simpan id sebagai JOB_ID Anda.

Status dan hasil massal

Baca tugas hingga status adalah completed, failed, atau cancelled. Daftar besar dapat memakan waktu, jadi lakukan polling setiap satu atau dua menit, atau gunakan webhook.

Baca tugas massal
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/bulk-jobs/$JOB_ID" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"
Daftar tugas massal terbaru
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/bulk-jobs?limit=20" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"

Unduh file hasil

Saat result_ready adalah true, GET /result mengembalikan tautan unduhan yang berlaku 10 menit. Tautan itu sendiri tidak memerlukan kunci. Minta tautan baru setiap kali Anda perlu mengunduh lagi.

Ambil tautan, lalu unduh
url=$(curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/bulk-jobs/$JOB_ID/result" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY" | jq -r .url)
curl --fail --silent --show-error --output result.csv "$url"

result.csv mempertahankan setiap baris asli dalam urutan aslinya dan menambahkan numdetect_status (valid, duplicate, atau invalid), numdetect_country, dan satu kolom per produk dengan yes, no, unknown, unsupported, failed, atau cancelled.

Batalkan tugas yang sedang berjalan

Negara yang belum diperiksa dihentikan, dan dana yang ditahan untuknya kembali ke saldo Anda.

Batalkan tugas massal
curl --fail-with-body --silent --show-error -X POST "https://api.numdetect.com/api/v1/bulk-jobs/$JOB_ID/cancel" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"

Webhook

Atur URL webhook di halaman pengaturan akun agar diberi tahu saat tugas massal selesai. Kami mengirim satu HTTPS POST per tugas yang selesai:

Isi permintaan
{
  "type": "bulk_job.finished",
  "data": {
    "id": "10000000-0000-4000-8000-000000000003",
    "status": "completed",
    "total_rows": 1000,
    "valid_rows": 982,
    "charged": 245500,
    "completed_at": "2026-11-11T08:30:00Z"
  }
}

Setiap permintaan membawa header webhook-id, webhook-timestamp, dan webhook-signature. Tanda tangannya adalah v1, diikuti HMAC-SHA256 berformat Base64 dari "<webhook-id>.<webhook-timestamp>.<body>", memakai signing secret Anda (whsec_…, Base64 setelah awalan). Bandingkan sebelum memercayai isi permintaan.

Jawab dengan status 2xx apa pun. Pengiriman yang gagal dicoba ulang beberapa kali, berjarak beberapa menit. Perlakukan webhook-id sebagai unik, karena pengiriman ulang dapat tiba dua kali.

Biaya dan saldo

Cek satuan ditagih sesuai harganya untuk setiap produk yang memberi jawaban pasti. Jawaban unknown dan failed gratis.

Tugas massal menahan biayanya saat Anda mengirimnya: untuk setiap negara dan produk, max(nomor valid, minimum massal produk) × harga massal. Daftar yang selesai ditagih penuh, termasuk baris unknown. Daftar yang gagal atau dibatalkan dikembalikan ke saldo Anda. Baris duplikat dan tidak valid, serta negara yang tidak didukung sebuah produk, gratis.

Jumlah berupa USD micros bilangan bulat: 1 USD = 1.000.000 micros.

Baca riwayat saldo
curl --fail-with-body --silent --show-error -X GET "https://api.numdetect.com/api/v1/balance-logs?limit=20" \
  -H "Authorization: Bearer $NUMDETECT_API_KEY"

POST /checks dan POST /bulk-jobs memerlukan header Idempotency-Key (hingga 128 karakter). Gunakan kunci baru untuk setiap permintaan baru. Jika respons hilang, kirim permintaan yang sama dengan kunci yang sama: Anda mendapat hasil pertama, bukan tagihan kedua.

Daftar harga

Error

Error memakai {error: {code, message, request_id}}. Cocokkan code yang stabil, bukan message, dan sertakan request_id saat menghubungi dukungan.

Error API yang umum
HTTPKodeYang perlu dilakukan
400invalid_requestPeriksa field, sintaks JSON atau form, dan format input.
401unauthorizedPastikan kunci disertakan dan belum dihapus.
403forbiddenTindakan ini hanya tersedia di dasbor setelah masuk, atau akun dinonaktifkan.
404not_foundPeriksa ID; hanya cek dan tugas milik Anda sendiri yang dapat dibaca.
409conflictIdempotency-Key sudah dipakai untuk permintaan yang berbeda. Gunakan kunci baru untuk permintaan baru.
409insufficient_balance / max_cost_exceededIsi saldo Anda, atau naikkan max_cost jika Anda menerima biaya yang lebih tinggi.
409product_not_supportedBaca katalog produk: produk tidak dijual atau tidak menerima input ini.
429rate_limitedPerlambat dan coba lagi sebentar lagi.
503unavailable / dependency_unavailableCek sementara tidak tersedia. Coba lagi nanti; tidak ada yang ditagih.
Kembali ke autentikasi