MENYIAPKAN NOKOS TERMURAH…

⚡v1REST · JSON

Developer API

Akses layanan Artapedia secara programatik — beli nomor OTP, cek saldo, lacak pesanan — langsung dari kode kamu.

Pengenalan

Semua endpoint berada di bawah base URL berikut. Semua response menggunakan format application/json.

text
Base URL: https://artapedianokosmurahid.vercel.app/api/v1
🔑

API Key auth

Autentikasi via header Bearer atau query param

📦

JSON body

Request body dan response selalu JSON

🌐

REST

Endpoint stateless standar REST

API Key Artapedia

API key adalah kunci pribadimu untuk memakai API — satu akun satu key (32 karakter heksadesimal). Semua yang dilakukan lewat key (saldo terpotong, pesanan, deposit) tercatat atas akunmu, jadi perlakukan seperti kata sandi.

🔑 Cara mendapatkan key

  1. Masuk ke akunmu di web Artapedia.
  2. Buka halaman API Key (menu Dashboard → API Key).
  3. Tekan Buat / Buat ulang API key, lalu salin — key utuh hanya tampil saat dibuat.

🛡️ Aturan keamanan key

  • Kirim lewat header Authorization: Bearer, jangan lewat URL.
  • Jangan taruh di aplikasi frontend publik atau repository.
  • Bocor? Buat ulang key — key lama langsung mati.
  • Akun yang dibekukan (anti-curang) tidak bisa memakai API.

Authentication

Semua endpoint v1 memerlukan API key. API key berupa string 32 karakter hex yang bisa kamu generate atau regenerate di halaman Dashboard → bagian API Key.

Cara mengirim API key:

1. Header Authorization: Bearer (direkomendasikan)

bash
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://artapedianokosmurahid.vercel.app/api/v1/me

2. Query parameter ?api_key=

bash
curl "https://artapedianokosmurahid.vercel.app/api/v1/me?api_key=YOUR_API_KEY"

⚠️ Jaga kerahasiaan API key

Jangan expose API key di frontend publik atau repository. Jika bocor, segera regenerate di Dashboard.

Rate Limit API Key

Setiap API key dibatasi per 60 detik (jendela bergulir). Batas dihitung per key, bukan per IP, dan melindungi akunmu serta server dari permintaan berlebihan.

60 / menit

Semua endpoint v1 (baca): me, servers, services, countries, orders, deposit status & methods

20 / menit

POST /v1/order — membuat pesanan OTP (ikut hitungan 60/menit di atas)

6 / menit

POST /v1/deposit — membuat QRIS deposit (ikut hitungan 60/menit di atas)

Header di setiap respons

X-RateLimit-LimitnumberJatah permintaan pada jendela ini
X-RateLimit-RemainingnumberSisa jatah sebelum terkena batas
X-RateLimit-ResetnumberWaktu jendela di-reset (detik Unix)
Retry-AfternumberHanya pada 429: berapa detik harus menunggu
json
// HTTP 429 — melewati batas
{
  "error": "Rate limit exceeded: maks 60 request per menit untuk API key ini. Coba lagi dalam 23 detik.",
  "retryAfter": 23
}

💡 Untuk menunggu OTP, polling /v1/orders/status tiap 3–5 detik (bukan tiap detik) agar jatah cukup. Saat menerima 429, tunggu sesuai Retry-After lalu coba lagi.

Error Codes

Saat terjadi error, response akan memiliki field error berisi pesan deskriptif.

400

Bad Request

Parameter kurang atau tidak valid

401

Unauthorized

API key tidak ada, salah format, atau tidak ditemukan

403

Forbidden

Akun ditangguhkan

404

Not Found

Resource (pesanan dll) tidak ditemukan

429

Too Many Requests

Melewati rate limit API key — lihat header Retry-After

500

Server Error

Kesalahan internal, coba lagi nanti

json
// Contoh response error
{
  "error": "API key not found or revoked."
}

Akun

GET/api/v1/meAuth required

Informasi akun

Mengembalikan nama, saldo, dan tanggal bergabung untuk API key yang diberikan.

Response fields

namestring|nullNama display akun
balancenumberSaldo saat ini dalam Rupiah
joinedAtstring|nullISO timestamp saat akun dibuat
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://artapedianokosmurahid.vercel.app/api/v1/me
json
// 200 OK
{
  "name": "John Doe",
  "balance": 50000,
  "joinedAt": "2024-01-15T08:30:00.000Z"
}

Server Nokos

Artapedia menyambung ke beberapa provider sekaligus. Tiap provider disebut server, punya daftar aplikasi, negara, dan harga sendiri. Semua endpoint katalog & order menerima parameter server. Kalau tidak dikirim, nilainya otomatis rumahotp.

rumahotp

Server Nokos Murah

Harga paling hemat, cakupan aplikasi & negara terluas.

warungnokos_s1

Server Plus

Jalur utama WarungNokos (H2H), stok melimpah & rate sukses tertinggi.

warungnokos_s2

Server Express

Server2 WarungNokos, dipakai saat stok server utama kosong.

dibanana

OTP Fast Murah

OTP masuk cepat & murah. Negara: ID, MY, SG, US, UK.

Perhatian: admin bisa mematikan salah satu server kapan saja. Server yang mati tidak muncul di /v1/servers dan request ke server itu dibalas 503. Selalu ambil daftar server dulu, jangan hardcode.

GET/api/v1/serversAuth required

Daftar server aktif

Mengembalikan server nokos yang sedang aktif beserta nama dan deskripsinya.

Response fields

items[].serverstringNilai untuk parameter server
items[].namestringNama server seperti di web
items[].providerstringProvider di balik server
items[].descriptionstringPenjelasan singkat
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://artapedianokosmurahid.vercel.app/api/v1/servers
json
// 200 OK
{
  "items": [
    { "server": "rumahotp",    "name": "Server Nokos Murah", "badge": "Murah",    "provider": "RumahOTP" },
    { "server": "warungnokos_s1", "name": "Server Plus",        "badge": "Utama",    "provider": "WarungNokos" },
    { "server": "warungnokos_s2", "name": "Server Express",     "badge": "Global",   "provider": "WarungNokos S2" },
    { "server": "dibanana",    "name": "OTP Fast Murah",     "badge": "Fast",     "provider": "dibanana" }
  ]
}

Layanan OTP

GET/api/v1/servicesAuth required

Daftar layanan OTP per server

Mengembalikan aplikasi yang tersedia di satu server (WhatsApp, Telegram, Shopee, dll). Tiap server punya daftar yang berbeda.

Parameters

server
string
Kode server dari /v1/servers. Default: rumahotp.

Response fields

serverstringServer yang dipakai untuk request ini
items[].service_codestringKode layanan — dipakai sebagai serviceId saat order
items[].service_namestringNama aplikasi
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/services?server=dibanana"
json
// 200 OK
{
  "server": "dibanana",
  "items": [
    { "service_code": "wa", "service_name": "WhatsApp", "service_img": null, "server": "dibanana" },
    { "service_code": "tg", "service_name": "Telegram", "service_img": null, "server": "dibanana" }
  ]
}

Negara & Harga

Endpoint ini yang memberi kamu numberId, providerId, dan harga jual final. Nilai sell_price sudah termasuk markup — itulah nominal yang dipotong dari saldo. price adalah harga modal, jangan dipakai untuk menghitung tagihan.

GET/api/v1/countriesAuth required

Daftar negara, stok, dan harga

Mengembalikan negara yang tersedia untuk satu layanan di satu server, lengkap dengan pricelist-nya.

Parameters

service_id*
string
Kode layanan dari /v1/services
server
string
Kode server. Default: rumahotp.

Response fields

items[].number_idstringDipakai sebagai numberId saat order (server rumahotp)
items[].namestringNama negara
items[].pricelist[].provider_idstringDipakai sebagai providerId saat order
items[].pricelist[].sell_pricenumberHarga jual final (sudah termasuk markup)
items[].pricelist[].stocknumberSisa stok, null kalau provider tidak melaporkannya
items[].pricelist[].country_idstringDipakai sebagai countryId untuk server WarungNokos & dibanana
items[].pricelist[].providerIndexnumberDipakai sebagai providerIndex untuk server dibanana
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/countries?server=dibanana&service_id=wa"
json
// 200 OK — server "dibanana"
{
  "server": "dibanana",
  "items": [
    {
      "number_id": "bn:id",
      "name": "Indonesia",
      "flag": "🇮🇩",
      "pricelist": [
        {
          "provider_id": "bn:id:0",
          "provider_name": "Paket Termurah",
          "price": 900,
          "sell_price": 1100,
          "stock": 245,
          "country_id": "id",
          "providerIndex": 0,
          "server": "dibanana"
        }
      ]
    }
  ]
}

Riwayat Pesanan

GET/api/v1/ordersAuth required

Daftar pesanan

Mengembalikan daftar pesanan OTP milik akun yang terautentikasi, diurutkan terbaru dulu.

Parameters

limit
number
Jumlah item per halaman. Default: 50, maks: 100.
page
number
Nomor halaman. Default: 1.

Response fields

pagenumberHalaman saat ini
limitnumberJumlah item diminta
itemsarrayArray objek pesanan
items[].orderIdstringID pesanan unik
items[].serviceNamestringNama layanan (mis: WhatsApp)
items[].phoneNumberstringNomor telepon yang dipesan
items[].pricenumberHarga dalam Rupiah
items[].statusstringpending | success | expired | cancelled
items[].otpCodestring|nullKode OTP (null jika belum/direfund)
items[].refundedbooleanApakah sudah direfund
items[].createdAtstringISO timestamp pembuatan
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/orders?limit=10&page=1"

Status Pesanan

GET/api/v1/orders/statusAuth required

Cek status pesanan

Cek status terbaru pesanan OTP spesifik, termasuk kode OTP jika sudah tersedia.

Parameters

order_id*
string
ID pesanan yang ingin dicek

Response fields

orderIdstringID pesanan
statusstringpending | success | expired | cancelled
otpCodestring|nullKode OTP (null jika belum tersedia)
otpMsgstring|nullPesan SMS lengkap
phoneNumberstringNomor telepon
pricenumberHarga dalam Rupiah
refundedbooleanApakah sudah direfund
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/orders/status?order_id=123456"
json
// 200 OK (OTP sudah diterima)
{
  "orderId": "123456",
  "status": "success",
  "otpCode": "483921",
  "otpMsg": "Your WhatsApp code is 483921",
  "phoneNumber": "+62812xxxxxxx",
  "price": 3500,
  "refunded": false,
  "createdAt": "2024-06-01T12:00:00.000Z"
}

Buat Pesanan OTP

💡 Alur pembelian

  1. Ambil server aktif: GET /v1/servers.
  2. Ambil aplikasi: GET /v1/services?server=… → pakai service_code sebagai serviceId.
  3. Ambil negara & harga: GET /v1/countries?server=…&service_id=….
  4. POST /v1/order dengan parameter sesuai server (tabel di bawah).
  5. Polling GET /v1/orders/status?order_id=… sampai OTP masuk.

Parameter wajib per server

rumahotp

serviceId, numberId, providerId

opsional: operatorId

warungnokos_s1 / warungnokos_s2

serviceId, countryId, providerId

opsional: operatorId (default: any)

dibanana

serviceId, countryId, providerIndex

opsional: —

Harga selalu dihitung ulang di server. Nominal yang dipotong adalah sell_price terbaru dari provider, bukan angka yang kamu kirim. Kalau nomor gagal didapat, saldo dikembalikan penuh secara otomatis.

POST/api/v1/orderAuth required

Buat pesanan nomor OTP

Memotong saldo dan memesan nomor OTP baru dari provider. Pastikan saldo mencukupi.

Parameters

server
string
Kode server dari /v1/servers. Default: rumahotp.
serviceId*
string
Kode layanan (service_code dari /v1/services)
numberId
string
Wajib untuk server rumahotp — number_id dari /v1/countries
providerId
string
Wajib untuk server rumahotp — provider_id dari /v1/countries
countryId
string
Wajib untuk warungnokos_s2/s2 & dibanana — country_id dari /v1/countries
providerIndex
number
Wajib untuk dibanana — providerIndex dari /v1/countries (0 = termurah)
operatorId
string
ID operator (opsional). WarungNokos memakai "any" kalau kosong.
operatorName
string
Nama operator (opsional, untuk pencatatan)
serviceName
string
Nama layanan (opsional, untuk pencatatan)
countryName
string
Nama negara (opsional, untuk pencatatan)

Response fields

orderIdstringID pesanan unik — simpan untuk cek status
serverstringServer yang melayani pesanan ini
phoneNumberstringNomor telepon yang dipesan
pricenumberHarga yang dipotong dari saldo (Rupiah)
expiredAtnumber|nullUnix ms kedaluwarsa
balancenumberSaldo tersisa setelah transaksi
curl
curl -X POST https://artapedianokosmurahid.vercel.app/api/v1/order \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "server": "dibanana",
    "serviceId": "wa",
    "countryId": "id",
    "providerIndex": 0,
    "serviceName": "WhatsApp",
    "countryName": "Indonesia"
  }'

# Server rumahotp memakai numberId + providerId:
# -d '{"server":"rumahotp","serviceId":"1","numberId":"62","providerId":"5"}'
# Server WarungNokos memakai countryId:
# -d '{"server":"warungnokos_s1","serviceId":"wa","countryId":"6"}'
json
// 200 OK
{
  "orderId": "789012",
  "server": "dibanana",
  "phoneNumber": "+62812xxxxxxx",
  "price": 3500,
  "expiredAt": 1717235400000,
  "createdAt": "2024-06-01T12:00:00.000Z",
  "balance": 46500
}

Deposit Otomatis

Isi saldo akunmu lewat API: buat tagihan QRIS, bayar, dan saldo masuk otomatis begitu pembayaran terkonfirmasi — tanpa admin. Cocok untuk bot atau aplikasi yang mengisi saldo secara terjadwal.

💡 Alur deposit otomatis

  1. GET /v1/deposit/methods → pilih provider aktif dan lihat batas min/max.
  2. POST /v1/deposit → dapat qr_image / qr_string (QRIS) dan total_amount.
  3. Bayar persis total_amount lewat aplikasi bank/e-wallet apa pun sebelum expired_at.
  4. Cek GET /v1/deposit?order_id=… tiap 5 detik sampai status = completed — saldo sudah bertambah saat itu juga.

Sistem juga memeriksa deposit yang menggantung secara berkala, jadi saldo tetap masuk walau kamu tidak sempat memanggil endpoint status.

Status: pending · completed · expired · canceled · failed. QRIS manual (dicek admin) tidak tersedia lewat API.

GET/api/v1/deposit/methodsAuth required

Metode deposit otomatis

Daftar metode QRIS otomatis yang aktif beserta batas nominal.

Response fields

min / maxnumberBatas nominal deposit (Rupiah)
methods[]arrayTiap item: provider, name, speed
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://artapedianokosmurahid.vercel.app/api/v1/deposit/methods
POST/api/v1/depositAuth required

Buat deposit QRIS

Membuat tagihan QRIS otomatis. Batas: 6 permintaan/menit. Maksimal beberapa QRIS belum dibayar per akun.

Parameters

amount*
integer
Nominal saldo yang ingin masuk (Rupiah, sesuai min/max).
provider*
string
Salah satu provider dari /v1/deposit/methods.

Response fields

order_idstringID deposit — dipakai untuk cek status
total_amountnumberYang harus dibayar (nominal + biaya admin bila ada)
admin_feenumberBiaya admin provider
qr_imagestringGambar QRIS (data URL / URL) untuk ditampilkan
qr_stringstring|nullIsi mentah QRIS bila disediakan provider
expired_atstringBatas waktu pembayaran
curl
curl -X POST https://artapedianokosmurahid.vercel.app/api/v1/deposit \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 20000, "provider": "pakasir"}'
GET/api/v1/depositAuth required

Status deposit / riwayat

Dengan ?order_id=… memeriksa status ke provider dan langsung mengkreditkan saldo bila sudah dibayar. Tanpa parameter: 20 deposit terakhir.

Parameters

order_id
string
ID deposit dari POST /v1/deposit (opsional).

Response fields

statusstringpending · completed · expired · canceled · failed
creditedbooleantrue = saldo sudah ditambahkan
balancenumberSaldo terbaru setelah pengecekan
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/deposit?order_id=DP1727700000000123"

Coba Sekarang

Masukkan API key kamu dan klik Test untuk langsung mencoba endpoint /v1/me.

Belum punya API key? Buka Dashboard → bagian API Key untuk generate.

📌 Catatan

  • Semua waktu dalam format ISO 8601 UTC.
  • Saldo selalu dalam Rupiah (IDR) tanpa desimal.
  • API key bersifat privat — 1 key per akun. Regenerate di Dashboard kapan saja.
  • Batas laju per key: 60 request/menit (order 20/menit, buat deposit 6/menit) — lihat bagian Rate Limit.
  • Butuh bantuan? Buka tiket di halaman Dashboard → Support.