MENYIAPKAN NOKOS TERMURAHโ€ฆ

โšก Developer API v1REST ยท JSONServer WarungNokos

Beli nomor OTP dari kode kamu sendiri

Cek saldo, pilih layanan, pesan nomor, dan ambil kode OTP โ€” semuanya lewat satu API sederhana.

https://artapedianokosmurahid.vercel.app/api/v1
1Ambil API keyBuat di halaman API Key.
2Pilih layanan/v1/servers โ†’ /v1/services โ†’ /v1/countries.
3Pesan nomorPOST /v1/order, lalu pantau /v1/orders/status.

Pengenalan

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

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

Semua contoh di halaman ini otomatis memakai alamat di atas โ€” kamu tinggal salin. Kalau alamat ini berubah, contoh di sini ikut berubah.

๐Ÿ”‘

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 Arta Pedia

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 Arta Pedia.
  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)

20 / menit

POST /v1/orders/cancel dan POST /v1/deposit/cancel โ€” pembatalan (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

409

Conflict

Aksi bentrok dengan keadaan terkini โ€” mis. batal order tapi OTP baru saja masuk, atau batal deposit tapi sudah dibayar

429

Too Many Requests

Melewati rate limit API key โ€” lihat header Retry-After

500

Server Error

Kesalahan internal, coba lagi nanti

503

Service Unavailable

Server nokos sedang dimatikan admin, atau status pesanan belum bisa dicek ke provider โ€” coba lagi sebentar

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

Akun

GET/api/v1/me๐Ÿ”‘ Perlu API key

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

Layanan nokos Arta Pedia berjalan di atas WarungNokos dengan dua jalur, disebut server. Tiap server punya daftar aplikasi, negara, dan harga sendiri. Semua endpoint katalog & order menerima parameter server. Kalau tidak dikirim, nilainya otomatis warungnokos_s1 (Server Plus).

warungnokos_s1

Server Plus

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

warungnokos_s2

Server Express

Jalur kedua WarungNokos (API v3). Kode layanannya berupa nama huruf kecil, mis. whatsapp; stok tidak ditampilkan angkanya.

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/servers๐Ÿ”‘ Perlu API key

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": "warungnokos_s1", "name": "Server Plus",    "badge": "Utama", "provider": "WarungNokos" },
    { "server": "warungnokos_s2", "name": "Server Express", "badge": "Cepat", "provider": "WarungNokos S2" }
  ]
}

Layanan OTP

GET/api/v1/services๐Ÿ”‘ Perlu API key

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: warungnokos_s1.

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=warungnokos_s1"
json
// 200 OK
{
  "server": "warungnokos_s1",
  "items": [
    { "service_code": "wa", "service_name": "WhatsApp", "service_img": null, "server": "warungnokos_s1" },
    { "service_code": "tg", "service_name": "Telegram", "service_img": null, "server": "warungnokos_s1" }
  ]
}

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/countries๐Ÿ”‘ Perlu API key

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: warungnokos_s1.

Response fields

items[].number_idstringIdentitas negara di katalog (tidak dipakai saat order di server WarungNokos)
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 saat order
curl
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://artapedianokosmurahid.vercel.app/api/v1/countries?server=warungnokos_s1&service_id=wa"
json
// 200 OK โ€” server "warungnokos_s1"
{
  "server": "warungnokos_s1",
  "items": [
    {
      "number_id": "wn:6",
      "name": "Indonesia",
      "flag": "๐Ÿ‡ฎ๐Ÿ‡ฉ",
      "pricelist": [
        {
          "provider_id": "wn:6:1",
          "provider_name": "Server Plus",
          "price": 900,
          "sell_price": 1100,
          "stock": 245,
          "country_id": "6",
          "server": "warungnokos_s1"
        }
      ]
    }
  ]
}

Riwayat Pesanan

GET/api/v1/orders๐Ÿ”‘ Perlu API key

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 | done | expired | canceled
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/status๐Ÿ”‘ Perlu API key

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 | done | expired | canceled
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": "done",
  "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.
  6. Tidak jadi / OTP tidak kunjung datang? POST /v1/orders/cancel โ€” saldo kembali penuh (minimal 3 menit setelah beli).

Parameter wajib per server

warungnokos_s1 / warungnokos_s2

serviceId, countryId, providerId

opsional: operatorId (default: any)

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/order๐Ÿ”‘ Perlu API key

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: warungnokos_s1.
serviceId*
string
Kode layanan (service_code dari /v1/services)
countryId*
string
country_id dari /v1/countries
providerId*
string
provider_id dari /v1/countries
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": "warungnokos_s1",
    "serviceId": "wa",
    "countryId": "6",
    "providerId": "wn:6:1",
    "serviceName": "WhatsApp",
    "countryName": "Indonesia"
  }'
# server dan id-nya selalu diambil dari /v1/servers dan /v1/countries
json
// 200 OK
{
  "orderId": "789012",
  "server": "warungnokos_s1",
  "phoneNumber": "+62812xxxxxxx",
  "price": 3500,
  "expiredAt": 1717235400000,
  "createdAt": "2024-06-01T12:00:00.000Z",
  "balance": 46500
}

Batal Order Nokos

Batalkan pesanan yang belum menerima OTP dan dapatkan saldo kembali. Jalurnya sama persis dengan tombol โ€œBatalkanโ€ di web dan bot Telegram, jadi refund tidak mungkin terhitung dua kali.

Kapan pesanan boleh dibatalkan?

โœ… Boleh

OTP belum masuk dan pesanan sudah berumur minimal 3 menit sejak dibeli.

โณ Terlalu cepat

Sebelum 3 menit dibalas 400 beserta retry_after (detik yang harus ditunggu). Ini aturan yang sama dengan di web.

๐Ÿšซ Tidak boleh

OTP sudah masuk โ€” dibalas 400 (atau 409 kalau OTP baru saja masuk saat kamu menekan batal, otpCode ikut dikirim).

๐Ÿ” Aman diulang

Memanggil batal untuk pesanan yang sudah dibatalkan membalas 200 tanpa menambah saldo lagi.

POST/api/v1/orders/cancel๐Ÿ”‘ Perlu API key

Batalkan pesanan nokos

Membatalkan pesanan di provider lalu mengembalikan saldo ke akunmu (termasuk biaya jaminan kalau ada). Batas: 20 permintaan/menit.

Parameters

order_id*
string
ID pesanan dari POST /v1/order (field orderId). Penulisan orderId juga diterima.

Response fields

successbooleantrue kalau pesanan berhasil dibatalkan
order_idstringID pesanan yang dibatalkan
statusstringSelalu canceled
refundedbooleantrue = saldo sudah dikembalikan
balancenumberSaldo terbaru setelah refund (Rupiah)
messagestringKeterangan singkat
curl
curl -X POST https://artapedianokosmurahid.vercel.app/api/v1/orders/cancel \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order_id": "789012"}'
json
// 200 OK
{
  "success": true,
  "order_id": "789012",
  "status": "canceled",
  "refunded": true,
  "balance": 50000,
  "message": "Pesanan dibatalkan dan saldo dikembalikan."
}

// 400 โ€” belum 3 menit sejak dibeli
{
  "error": "Pesanan baru bisa dibatalkan 3 menit setelah dibeli. Tunggu 94 detik lagi.",
  "retry_after": 94
}

// 409 โ€” OTP baru saja masuk
{
  "error": "Kode OTP baru saja masuk, pesanan tidak bisa dibatalkan.",
  "otpCode": "483921",
  "status": "done"
}

๐Ÿ’ก Tidak perlu membatalkan manual kalau OTP memang tidak datang sampai habis waktu: pesanan yang kedaluwarsa direfund otomatis. Pakai endpoint ini kalau kamu mau saldo kembali lebih cepat dari masa kedaluwarsa.

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.
  5. Tidak jadi bayar? POST /v1/deposit/cancel untuk menutup tagihan QRIS yang masih pending.

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/methods๐Ÿ”‘ Perlu API key

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/deposit๐Ÿ”‘ Perlu API key

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/deposit๐Ÿ”‘ Perlu API key

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"

Batal Deposit

Tutup tagihan QRIS yang belum dibayar. Berguna kalau jumlahnya salah, penggunamu berubah pikiran, atau kamu mau membuat tagihan baru tanpa menumpuk yang lama (jumlah QRIS pending per akun dibatasi).

Hasil tergantung status tagihan

pending

200 โ€” tagihan ditutup, status menjadi canceled.

sudah dibayar

409 โ€” sistem mengecek ke penyedia dulu. Kalau ternyata sudah dibayar, saldo DIKREDITKAN dan tagihan tidak dibatalkan (status completed).

completed

400 โ€” deposit sudah berhasil, tidak bisa dibatalkan.

expired / canceled / failed

200 โ€” sudah tidak aktif, tidak ada yang berubah (aman diulang).

POST/api/v1/deposit/cancel๐Ÿ”‘ Perlu API key

Batalkan deposit QRIS

Membatalkan tagihan QRIS deposit yang masih pending. Batas: 20 permintaan/menit.

Parameters

order_id*
string
ID deposit dari POST /v1/deposit (field order_id). Penulisan orderId juga diterima.

Response fields

successbooleantrue kalau permintaan diproses tanpa masalah
order_idstringID deposit
statusstringcanceled โ€” atau status terakhir kalau tagihan memang sudah tidak aktif
messagestringKeterangan singkat (mis. tagihan sudah tidak aktif)
curl
curl -X POST https://artapedianokosmurahid.vercel.app/api/v1/deposit/cancel \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"order_id": "DP1727700000000123"}'
json
// 200 OK
{
  "success": true,
  "order_id": "DP1727700000000123",
  "status": "canceled",
  "message": "Deposit dibatalkan."
}

// 409 โ€” ternyata sudah dibayar
{
  "error": "Pembayaran sudah diterima, saldo sudah masuk. Transaksi tidak dibatalkan.",
  "status": "completed"
}

โš ๏ธ Jangan bayar QRIS yang sudah dibatalkan. Kalau pembayaran tetap masuk setelah dibatalkan, sistem tetap mengkreditkan saldonya lewat pengecekan berkala โ€” tapi lebih baik jangan mengandalkan itu.

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, batal 20/menit, buat deposit 6/menit) โ€” lihat bagian Rate Limit.
  • Butuh bantuan? Buka tiket di halaman Dashboard โ†’ Support.
Arta Pedia ID โ€” Nokos Termurah dan Fast