Lewati navigasi
SMM Velox

SMM Velox · API V1

Dokumentasi API

Hubungkan situs Anda ke katalog, dompet VND, dan pesanan SMM Velox melalui API.

Mulai cepat

POST · VND · HTTPS

Kirim 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/v2
Contoh cURL
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'

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.

POST

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.

Permintaan (body)
key=YOUR_API_KEY&action=services
Respons JSON
[
  {
    "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"
  }
]
POST

Periksa saldo

Harga dan pembayaran API selalu VND. USD di antarmuka hanya referensi.

Permintaan (body)
key=YOUR_API_KEY&action=balance
Respons JSON
{
  "balance": "100000.000000000001",
  "currency": "VND"
}
POST

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.

ParameterKetentuanKeterangan
keyWajibKunci API akun
actionWajibAksi add
serviceWajibID layanan dari katalog API
linkWajibTautan konten http/https
quantityWajibJumlah bilangan bulat dalam min/max
client_order_idOpsionalReferensi unik per akun untuk mencegah pesanan ganda
idempotency_keyOpsionalAlternatif client_order_id; kirim hanya salah satu, jangan keduanya
max_chargeOpsionalBatas biaya yang diterima (string VND), bukan harga dari klien
Permintaan (body)
key=YOUR_API_KEY&action=add&service=123&link=https://example.com/post&quantity=1000&client_order_id=YOUR_UNIQUE_ORDER_ID
Respons JSON
{
  "order": "456"
}
POST

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.

Permintaan (body)
key=YOUR_API_KEY&action=status&order=456
Respons JSON
{
  "charge": "11550",
  "status": "Pending",
  "start_count": null,
  "remains": null,
  "currency": "VND",
  "review_required": false
}
POST

Status beberapa pesanan

Respons berupa objek berdasarkan ID; ID yang tidak ada memiliki error sendiri. Maksimal 100 ID.

Permintaan (body)
key=YOUR_API_KEY&action=status&orders=456,999
Respons JSON
{
  "456": {
    "charge": "11550",
    "status": "Pending",
    "start_count": null,
    "remains": null,
    "currency": "VND",
    "review_required": false
  },
  "999": {
    "error": "Incorrect order ID"
  }
}
400

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.

Permintaan (body)
key=YOUR_API_KEY&action=cancel
Respons JSON
{
  "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

Idempotensi

Koneksi bisa terputus setelah pesanan diterima dan saldo terpotong. Timeout atau HTTP 503 tidak membuktikan permintaan belum diproses. Gunakan satu referensi unik untuk setiap pesanan.

  1. Sebelum add pertama, buat client_order_id unik (atau idempotency_key) dan simpan bersama service, link, quantity serta max_charge yang dikirim.
  2. Jika menerima order ID, simpan dan periksa lewat action=status dengan order. Jangan mengirim add baru hanya untuk memeriksa status.
  3. 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.
  4. 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.

Contoh add pertama atau ulangi dengan referensi dan parameter yang SAMA
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

HTTP 409

Referensi bertentangan dengan payload lain atau biaya melebihi max_charge. Hentikan, periksa permintaan dan harga; jangan menghindari error dengan referensi baru.

Respons JSON
{
  "error": "Client order ID conflicts with an existing request"
}
HTTP 422

Parameter atau kondisi pembelian tidak valid. Periksa fields dan perbaiki penyebab sebelum permintaan baru; jangan coba ulang tanpa pemeriksaan.

Respons JSON
{
  "error": "Invalid request parameters",
  "fields": [
    "quantity"
  ]
}
HTTP 429

Terlalu banyak permintaan. Tunggu sesuai header Retry-After, kurangi frekuensi dan gunakan referensi yang sama untuk pengulangan add.

Retry-After: 60

Respons JSON
{
  "error": "Rate limit exceeded"
}
HTTP 503

API nonaktif, penyedia belum siap, atau gangguan sementara. Hentikan pengulangan massal dan tunggu pemulihan; jika hasil add tidak pasti, gunakan referensi dan data semula.

Respons JSON
{
  "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.

HTTPKeterangan
200Berhasil (item batch dapat memiliki error tersendiri)
400Aksi atau parameter query tidak valid
401Kunci API atau izin tidak valid
403HTTPS diperlukan
404Layanan atau pesanan tidak ada atau bukan milik akun
405Metode HTTP tidak didukung
409Konflik idempotensi atau max_charge terlampaui
413Body permintaan terlalu besar
415Content-Type tidak didukung
422Parameter, harga, atau kelayakan pembelian tidak valid
429Batas permintaan terlampaui; periksa Retry-After
503API 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.