API Reference
Programmatic access to order placement, status checks and balance — the same delivery engine that runs the Smmize dashboard. Two versions, one key.
#Overview
All endpoints accept GET or POST with form-encoded parameters and return JSON. The base URLs are:
| Version | Base URL | Notes |
|---|---|---|
v1 | https://smmize.com/api/v1 | Standard SMM API format, drop-in for most reseller tools. |
v2 | https://smmize.com/api/v2 | Extended: order history, cancel, refill, rich service list. |
Every request is charged against your prepaid balance. Orders are debited atomically — parallel requests can never spend more than your balance.
#Authentication
Pass your API key as the key parameter on every request. Keys are issued per account and control access to that account's balance and orders only. Keep them secret — anyone holding your key can place orders on your balance.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | yes | Your account API key. |
Keys can be regenerated any time from your profile — old keys stop working immediately.
#Rate limits
| Limit | Value | Scope |
|---|---|---|
| Requests per minute | 30 | per API key |
| Requests per minute | 60 | per IP address |
When a limit is exceeded the API responds with HTTP 429 Too Many Requests and a JSON error message. Slow down and retry after a minute.
#Errors
Failures return HTTP 200 with an error body (compatible with the standard SMM API), except for rate limiting which uses HTTP 429.
| HTTP | Example response | Meaning |
|---|---|---|
| 200 | { "error": "Incorrect order ID" } | Business error — check the message. |
| 200 | { "error": "Insufficient balance" } | Balance too low for the order. |
| 429 | { "error": "Too many requests..." } | Rate limit hit — back off. |
#Endpoints
Service list
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | services |
Returns every active service with the rate you pay (per 1,000 units).
[
{ "service": "5", "name": "Instagram Followers [15K]", "category": "Instagram",
"rate": "1.02", "min": "500", "max": "10000", "type": "default", "dripfeed": 1 },
...
]
Place new order
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | add |
service |
int | yes | Service ID from the service list |
link |
string | yes | Link to page, profile or video |
quantity |
int | type: service-dependent | Needed quantity |
runs |
int | no | Runs to deliver (drip-feed) |
interval |
int | no | Interval in minutes between runs |
comments |
text | type: custom_comments | Comment list, one per line |
usernames |
text | type: mentions | Usernames list, one per line |
hashtags |
text | no | Hashtags list, one per line |
username |
string | type: subscriptions | Username for subscriptions |
min |
int | type: subscriptions | Subscription quantity min |
max |
int | type: subscriptions | Subscription quantity max |
delay |
int | type: subscriptions | Delay in minutes (0, 5, 10, 15, 30, 60, 90) |
expiry |
date | no | Subscription expiry, format d/m/Y |
The required parameters depend on the service type. The order is charged atomically from your balance; concurrent requests can never overdraw it.
{ "status": "success", "order": 32 }
Order status
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | status |
order |
int | yes | Order ID |
Status values: pending, processing, inprogress, completed, partial, canceled, error.
{ "order": "32", "status": "inprogress", "charge": "1.2600", "start_count": "0", "remains": "0" }
Multiple order statuses
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | status |
orders |
string | yes | Comma-separated order IDs |
Up to 100 order IDs per request.
{ "12": { "order": "12", "status": "processing", ... }, "2": "Incorrect order ID" }
Balance
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | balance |
{ "status": "success", "balance": "24.56", "currency": "USD" }
Place new order
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | add |
service |
int | yes | Service ID |
link |
string | yes | Link to page, profile or video |
quantity |
int | type: service-dependent | Needed quantity |
runs |
int | no | Runs to deliver (drip-feed) |
interval |
int | no | Interval in minutes |
comments |
text | type: custom_comments | Comment list, one per line |
Same order flow as v1, served by the v2 endpoint for resellers that standardize on v2 paths.
{ "status": "success", "order": 32 }
Order status
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | status |
order |
int | yes | Order ID |
Also accepts a comma-separated list via the orders parameter for multi-status.
{ "order": "32", "status": "completed", "charge": "1.2600", "start_count": "0", "remains": "0" }
Order history
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | orders |
status |
string | no | Filter by status (optional) |
limit |
int | no | Max results, up to 500 (default 100) |
offset |
int | no | Pagination offset (default 0) |
{ "status": "success", "orders": [ { "order": 32, "service_id": 5, "service": "Instagram Followers", "link": "...", "quantity": 1000, "charge": "1.02", "status": "completed", "created": "2026-08-13 09:12:00" } ], "total": 412 }
Cancel order
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | cancel |
order |
int | yes | Order ID |
Only orders that support cancellation (service setting) can be cancelled. Refundable amounts return to your balance.
{ "status": "success", "cancel": 1 }
Request refill
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | refill |
order |
int | yes | Order ID |
Available when the refill module is enabled and the service is refillable.
{ "status": "success", "refill": 1 }
Refill status
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | refill_status |
refill |
int | yes | Refill request ID |
Refill status values follow the provider convention (pending / in process / completed / rejected).
{ "status": "success", "refill": 7 }
Service list (extended)
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | services |
v2 adds the provider name/id, original rate, cancel/refill flags, drip-feed support and average delivery time.
[ { "service": 5, "name": "Instagram Followers [15K]", "category": "Instagram", "rate": "1.02", "original_rate": "0.40", "min": 500, "max": 10000, "cancel": 1, "refill": 1, "dripfeed": 1, "avg_time": "0-24h" }, ... ]
Balance
| Parameter | Type | Required | Description |
|---|---|---|---|
key |
string | yes | Your API key |
action |
string | yes | balance |
{ "status": "success", "balance": "24.56", "currency": "USD" }
#Webhooks
Webhooks push order status changes to your server instead of you polling. Set your webhook URL in your profile; we sign every payload with an HMAC so you can verify it came from us.
Webhooks are currently enabled on this panel.
| Header | Value |
|---|---|
X-Smmize-Signature | HMAC-SHA256 of the raw body, hex-encoded, keyed with your webhook secret. |
{
"event": "order.status",
"order": 32,
"status": "completed",
"remains": 0,
"charge": "1.2600"
}
$payload = file_get_contents("php://input");
$signature = $_SERVER["HTTP_X_SMMIZE_SIGNATURE"] ?? "";
$expected = hash_hmac("sha256", $payload, YOUR_WEBHOOK_SECRET);
if (!hash_equals($expected, $signature)) { http_response_code(401); exit; }
// payload is verified — process the order update
Failed deliveries are retried automatically. Always verify the signature before acting on a payload.
#Code examples
curl -s "https://smmize.com/api/v1" \ -d key=YOUR_API_KEY \ -d action=add \ -d service=5 \ -d link=https://instagram.com/example \ -d quantity=1000
<?php $url = 'https://smmize.com/api/v1'; $data = [ 'key' => 'YOUR_API_KEY', 'action' => 'add', 'service' => 5, 'link' => 'https://instagram.com/example', 'quantity' => 1000, ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); echo $response;
import requests
url = 'https://smmize.com/api/v1'
data = {
'key': 'YOUR_API_KEY',
'action': 'add',
'service': 5,
'link': 'https://instagram.com/example',
'quantity': 1000,
}
response = requests.post(url, data=data)
print(response.json())
const axios = require('axios');
const url = 'https://smmize.com/api/v1';
const data = new URLSearchParams({
key: 'YOUR_API_KEY',
action: 'add',
service: 5,
link: 'https://instagram.com/example',
quantity: '1000',
});
axios.post(url, data).then(r => console.log(r.data));
Built on the Smmize delivery engine — the same pipeline that runs every order on the platform.
Get your API key