TODAY SMS

API

JSON API lewat HTTPS. Kirim kunci API Anda di header Authorization. Harga, refund, dan hitung mundur 20 menit sama seperti di situs.

Alamat dasar

https://today-sms.com/api/v1

Autentikasi

Header Authorization: Bearer YOUR_API_KEY. Buat kunci di halaman Kunci API setelah pengisian saldo pertama. Maksimal 300 permintaan per menit.

curl https://today-sms.com/api/v1/balance \
  -H "Authorization: Bearer YOUR_API_KEY"

GET /balance

Saldo Anda dalam USD.

Contoh respons

{
  "balance": "42.5000",
  "currency": "USD"
}

GET /apps

Aplikasi yang saat ini punya nomor: kode, nama, harga terendah, negara.

Contoh respons

[
  { "app": "telegram", "name": "Telegram", "from": "0.4515", "countries": 61 }
]

GET /prices?app=telegram

Negara untuk satu aplikasi, termurah di atas: kode negara, kode ISO, harga, nomor tersedia.

Contoh respons

[
  { "country": "indonesia", "iso": "id", "price": "0.4515", "stock": 702866 }
]

POST /numbers {"app":"telegram","country":"indonesia"}

Membeli nomor. Harga dipotong dari saldo Anda.

Contoh respons

{
  "id": 1042,
  "phone": "+6281234567890",
  "price": "0.4515",
  "status": "waiting",
  "expires_at": "2026-10-14T09:20:00Z"
}

GET /numbers/{id}

Status dan semua SMS yang sudah diterima.

Contoh respons

{
  "id": 1042,
  "status": "received",
  "sms": [ { "code": "482913", "text": "Your code is 482913", "at": "2026-10-14T09:02:11Z" } ]
}

POST /numbers/{id}/cancel

Membatalkan nomor tanpa SMS, 120 detik setelah dibeli. Refund penuh.

Contoh respons

{
  "id": 1042,
  "status": "canceled",
  "refunded": "0.4515"
}

POST /numbers/{id}/finish

Menutup nomor setelah Anda mendapat kode.

Contoh respons

{
  "id": 1042,
  "status": "finished"
}

Status

waitingNomor siap, belum ada SMS
receivedMinimal satu SMS sudah masuk
finishedDitutup setelah ada kode
canceledDibatalkan, direfund
expiredTidak ada SMS tepat waktu, direfund
checkingJawaban pemasok tidak jelas; direfund di akhir hitung mundur jika tidak ada nomor yang muncul

Error

Error mengembalikan status selain 2xx dan body JSON berisi kode error.

{
  "error": "not_enough_balance"
}
unauthorizedKunci API tidak ada atau salah
not_allowedAPI terbuka setelah pengisian saldo pertama
bad_requestAda kolom wajib yang kosong atau salah
no_numbersSaat ini tidak ada nomor untuk aplikasi dan negara ini
not_enough_balanceIsi saldo dulu
too_many_openTerlalu banyak nomor terbuka; selesaikan atau batalkan sebagian
too_earlyPembatalan bisa dilakukan 120 detik setelah membeli
has_smsSMS sudah masuk; nomor tidak bisa dibatalkan
not_foundNomor ini tidak ada di akun Anda
try_againPemasok belum mengonfirmasi pembatalan; coba lagi dalam satu menit
rate_limitedTerlalu banyak permintaan dalam satu menit