SMM Velox · API V1
Dokumentasi API
Hubungkan situs Anda ke katalog, dompet VND, dan pesanan SMM Velox melalui API.
Mulai cepat
POST · VND · HTTPSKirim key/action dalam body application/x-www-form-urlencoded atau JSON. Parameter URL ditolak. Production wajib HTTPS. GET tidak didukung. Contoh hanya placeholder.
Endpoint API
https://smmvelox.com/api/v2curl -X POST 'https://smmvelox.com/api/v2' \
--data-urlencode 'key=YOUR_API_KEY' \
--data-urlencode 'action=add' \
--data-urlencode 'service=123' \
--data-urlencode 'link=https://example.com/post' \
--data-urlencode 'quantity=1000' \
--data-urlencode 'client_order_id=YOUR_UNIQUE_ORDER_ID' \
--data-urlencode 'max_charge=11550'Autentikasi kunci API
Rahasiakan key dan kirim hanya dalam body. Jangan taruh di URL, kode frontend, atau bagikan. Rotasi/pencabutan berlaku langsung. Akun harus aktif dan email terverifikasi.
Kirim kunci hanya melalui HTTPS dalam body POST, bukan di URL atau kode browser.
Harga dan pembayaran API selalu VND. USD di antarmuka hanya referensi.
Daftar layanan
V1 hanya Default dengan mapping/unit terverifikasi: rate adalah VND per 1.000 unit; charge = rate × quantity / 1.000. service adalah DV-ID internal; order string ID lokal stabil. Tanpa ID penyedia. Uang berupa string desimal presisi hingga 12 digit pecahan.
key=YOUR_API_KEY&action=services[
{
"service": 123,
"name": "Example",
"desc": "",
"type": "Default",
"category": "Facebook",
"platform": "facebook",
"rate": "11550.000000000000",
"rate_unit": "per_1000",
"min": "100",
"max": "100000",
"refill": false,
"cancel": false,
"dripfeed": false,
"currency": "VND"
}
]Periksa saldo
Harga dan pembayaran API selalu VND. USD di antarmuka hanya referensi.
key=YOUR_API_KEY&action=balance{
"balance": "100000.000000000001",
"currency": "VND"
}Buat pesanan
add memerlukan service integer positif, link http/https maksimal 2.000 karakter, quantity integer dalam min/max. price/rate/discount/currency/user_id/status/provider dan field lain ditolak. Batch status maksimal 100 ID.
| Parameter | Ketentuan | Keterangan |
|---|---|---|
| key | Wajib | Kunci API akun |
| action | Wajib | Aksi add |
| service | Wajib | ID layanan dari katalog API |
| link | Wajib | Tautan konten http/https |
| quantity | Wajib | Jumlah bilangan bulat dalam min/max |
| client_order_id | Opsional | Referensi unik per akun untuk mencegah pesanan ganda |
| idempotency_key | Opsional | Alternatif client_order_id; kirim hanya salah satu, jangan keduanya |
| max_charge | Opsional | Batas biaya yang diterima (string VND), bukan harga dari klien |
key=YOUR_API_KEY&action=add&service=123&link=https://example.com/post&quantity=1000&client_order_id=YOUR_UNIQUE_ORDER_ID{
"order": "456"
}Status satu pesanan
Status Pending/Processing/In progress/Completed/Partial/Canceled berdasarkan bukti. Review/tidak jelas menjadi Pending dengan review_required=true. start_count/remains null tanpa bukti, bukan nol rekaan. charge memakai snapshot pembayaran.
key=YOUR_API_KEY&action=status&order=456{
"charge": "11550",
"status": "Pending",
"start_count": null,
"remains": null,
"currency": "VND",
"review_required": false
}Status beberapa pesanan
Respons berupa objek berdasarkan ID; ID yang tidak ada memiliki error sendiri. Maksimal 100 ID.
key=YOUR_API_KEY&action=status&orders=456,999{
"456": {
"charge": "11550",
"status": "Pending",
"start_count": null,
"remains": null,
"currency": "VND",
"review_required": false
},
"999": {
"error": "Incorrect order ID"
}
}Aksi tidak didukung
Package/per_unit, custom comments, subscriptions, dripfeed belum didukung dan disembunyikan. cancel/refill/refill_status mengembalikan HTTP 400 Action is not supported tanpa perubahan status/refund otomatis. Semua flag false di V1.
key=YOUR_API_KEY&action=cancel{
"error": "Action is not supported"
}Aturan pesanan dan status
Kirim client_order_id (atau idempotency_key), 1–64 karakter A–Z/a–z/0–9/_.:- unik per akun. ID dan isi service/link/quantity/max_charge sama mengembalikan pesanan lama; isi berubah mendapat 409. max_charge opsional adalah batas VND string, bukan harga klien.
Tanpa ID klien, setiap add valid membuat pesanan baru meski isinya sama. Jangan mencoba ulang secara buta setelah timeout; exactly-once tidak dijamin tanpa ID klien.
Harga API dihitung server. Batas keamanan dapat mengurangi diskon efektif; harga situs tetap sama.
API OFF memblokir add termasuk replay; key valid tetap membaca services/balance/status. Pengiriman penyedia mengikuti gate/antrean, tidak dijanjikan langsung. Pesanan API tidak menghasilkan komisi Affiliate.
Menangani kesalahan dan mencoba ulang dengan aman
IdempotensiKoneksi bisa terputus setelah pesanan diterima dan saldo terpotong. Timeout atau HTTP 503 tidak membuktikan permintaan belum diproses. Gunakan satu referensi unik untuk setiap pesanan.
- Sebelum add pertama, buat client_order_id unik (atau idempotency_key) dan simpan bersama service, link, quantity serta max_charge yang dikirim.
- Jika menerima order ID, simpan dan periksa lewat action=status dengan order. Jangan mengirim add baru hanya untuk memeriksa status.
- Jika timeout atau respons hilang dan belum ada order ID, coba lagi hanya saat koneksi dan API siap. Kirim action=add, referensi, dan semua parameter persis seperti sebelumnya. Jangan buat referensi baru.
- Jika percobaan ulang menghasilkan order ID, lacak dengan ID tersebut. Jika masih belum pasti, hentikan percobaan otomatis berulang dan hubungi dukungan dengan referensi (bukan API Key).
Cegah penagihan ganda
Mengganti atau menghilangkan client_order_id dapat membuat pesanan baru dan menagih ulang. Pertahankan max_charge saat mencoba lagi; referensi sama dengan service/link/quantity/max_charge berbeda ditolak 409. Jika API OFF, pengulangan add juga diblokir.
curl -X POST 'https://smmvelox.com/api/v2' \
--data-urlencode 'key=YOUR_API_KEY' \
--data-urlencode 'action=add' \
--data-urlencode 'service=123' \
--data-urlencode 'link=https://example.com/post' \
--data-urlencode 'quantity=1000' \
--data-urlencode 'client_order_id=YOUR_UNIQUE_ORDER_ID' \
--data-urlencode 'max_charge=11550'action=status memerlukan order ID dan tidak menerima client_order_id. Tanpa order ID, ulangi add dengan data identik saat API siap, atau hubungi dukungan.
Contoh error JSON dan langkah penanganan
Referensi bertentangan dengan payload lain atau biaya melebihi max_charge. Hentikan, periksa permintaan dan harga; jangan menghindari error dengan referensi baru.
{
"error": "Client order ID conflicts with an existing request"
}Parameter atau kondisi pembelian tidak valid. Periksa fields dan perbaiki penyebab sebelum permintaan baru; jangan coba ulang tanpa pemeriksaan.
{
"error": "Invalid request parameters",
"fields": [
"quantity"
]
}Terlalu banyak permintaan. Tunggu sesuai header Retry-After, kurangi frekuensi dan gunakan referensi yang sama untuk pengulangan add.
Retry-After: 60
{
"error": "Rate limit exceeded"
}API nonaktif, penyedia belum siap, atau gangguan sementara. Hentikan pengulangan massal dan tunggu pemulihan; jika hasil add tidak pasti, gunakan referensi dan data semula.
{
"error": "API order creation is disabled"
}JSON hanya contoh bentuk error yang berlaku; pesan error dapat berbeda menurut penyebab. Gunakan kode HTTP dan kondisinya sebagai acuan.
Kode status HTTP
Error berupa JSON dengan field error tanpa membocorkan detail internal.
| HTTP | Keterangan |
|---|---|
| 200 | Berhasil (item batch dapat memiliki error tersendiri) |
| 400 | Aksi atau parameter query tidak valid |
| 401 | Kunci API atau izin tidak valid |
| 403 | HTTPS diperlukan |
| 404 | Layanan atau pesanan tidak ada atau bukan milik akun |
| 405 | Metode HTTP tidak didukung |
| 409 | Konflik idempotensi atau max_charge terlampaui |
| 413 | Body permintaan terlalu besar |
| 415 | Content-Type tidak didukung |
| 422 | Parameter, harga, atau kelayakan pembelian tidak valid |
| 429 | Batas permintaan terlampaui; periksa Retry-After |
| 503 | API nonaktif, belum terpasang, atau sementara tidak tersedia |
Keamanan, batas dan error
Opsional: maksimal 20 alamat IPv4/IPv6 persis, satu per baris. Kosong berarti tanpa batas IP. CIDR tidak didukung. Daftar tidak valid ditolak tanpa mengubah pengaturan lama.
Per menit: 60 request/IP sebelum autentikasi; tambahan 120 baca atau 15 add per user/key. Body maksimal 64 KiB. 429 menyertakan Retry-After. Forwarded/X-Forwarded-For dari klien tidak dipercaya.
FAQ: Dapatkan key setelah masuk. Key hilang harus diganti; secret lama tidak dapat ditampilkan. Key penyedia tidak berlaku di sini. V1 (2026-10-30): services, balance, add Default dan status tunggal/batch. Purnajual menunggu alur aman V2.