Endpoint: POST (JSON body) or GET (query string) to https://bettersmm.pro/api/v2. Both methods read the same fields: body first, then the query string. This is the public documentation. The API key is created in the dashboard after you register — this page does not show anyone else’s key.
The homepage uses this add example: key, action add, service 101, a Telegram link, quantity 1000. 101 is an illustration, the same as on the homepage — take real ids from action=services. Orders for a single link still go through the catalog and /en/register/; the API is for people who already run their own panel.
Implemented actions: services, add, status, cancel, refill, balance. Below we describe add, status and balance (as requested) plus services, because you need ids. cancel and refill exist in the same endpoint; they follow service flags and order state. Responses use currency RUB, not USD. Invalid key → error “Invalid API key”.
add — create an order
Required fields: service, link, quantity. Errors you may see: missing fields, invalid quantity, invalid service id, quantity outside min/max, insufficient balance, provider not configured.
Example body (same as the homepage)
{
"key": "your_api_key",
"action": "add",
"service": 101,
"link": "https://t.me/...",
"quantity": 1000
}
Example response
{
"order": 23501
}
key
API key from the dashboard
service
Numeric service id from action=services
link
Public URL the selected row expects
quantity
Integer inside that row’s min/max
status — order status
Required: order (the id returned by add). Missing id → “Missing order ID”. Unknown or foreign id → “Order not found”. status is the order status with the first letter capitalised (pending, in_progress, completed, partial, cancelled, refunded, error).
Example body
{
"key": "your_api_key",
"action": "status",
"order": 23501
}
Example response
{
"charge": "12.50",
"start_count": 3572,
"status": "Completed",
"remains": 0,
"currency": "RUB"
}
charge
Amount charged for the order, as a string
start_count
Count stored when the job activated
status
Capitalised order status
remains
Remaining quantity
currency
Always RUB in this API
balance — account balance
No extra fields besides key and action. Returns the panel balance in RUB.
Example body
{
"key": "your_api_key",
"action": "balance"
}
Example response
{
"balance": "99.80",
"currency": "RUB"
}
balance
Current balance as a string
services — service list
Returns active catalog rows: service (id), name, type (Default), category, rate (string, personal rate if the account has one), min, max, refill, cancel. Use this list to pick a real service id before add.
Example body
{
"key": "your_api_key",
"action": "services"
}
rate
Price per 1,000 in account currency (RUB panel)
refill / cancel
Flags from the catalog row (cancel is currently always true)
Also implemented: action=cancel (order id; only some statuses) and action=refill (only if the service allows refill, within period, limit and cooldown). Panel FAQ: /en/faq/. Terms: /en/legal/.
After login this URL opens the dashboard key widget. Guests and search engines get this public page.