API documentation
SMM ORO API
Place orders, check their progress, request refills and read your balance from your own website, app or panel. It is the same standard SMM API that most panels use, so existing scripts work with only the URL and key changed.
https://smmoro.com/api/v2Authentication
Send your API key in the key field of every request. Keep it secret: anyone with the key can place orders from your balance. You can create a new key at any time, which stops the old one.
Errors
When something goes wrong the response has an error field with a readable message, and a matching HTTP status.
| HTTP | Meaning | Example |
|---|---|---|
| 400 | Not enough balance, or a missing field | {"error": "Insufficient balance."} |
| 403 | Wrong API key, disabled account or unknown action | {"error": "Invalid API Key"} |
| 404 | Service or order not found | {"error": "Incorrect order ID"} |
| 422 | A field is not valid (link, quantity…) | {"error": "The quantity field must be between 100 and 10000."} |
| 503 | The order could not be created right now; try again | {"error": "Order is not created, try again later."} |
Services action=services
All services you can order, with your price per 1000 (after your discount). Cache the list; it rarely changes more than a few times a day.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | services |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=services
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]),
],
]));
$data = json_decode($response, true);
[
{
"service": 2229,
"name": "Instagram Followers",
"type": "Default",
"category": "Instagram",
"rate": "0.9000",
"min": 100,
"max": 10000,
"refill": true,
"cancel": false,
"dripfeed": false,
"description": "Real accounts, start within 1 hour.",
"important_message": null,
"average_time": 3600,
"average_time_text": "1 hour"
}
]
Add order action=add
Creates an order and takes the price from your balance straight away.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | add |
service | Yes | Service ID from the services list |
link | Default services | Link to the page, post or profile |
quantity | Default services | Between the service's min and max |
email | If email_req is true | Email for package services that need it |
whatsapp | If whatsapp_req is true | WhatsApp number for package services that need it |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=add \
-d service=2229 \
-d link=https://instagram.com/yourpage \
-d quantity=1000
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => '2229',
'link' => 'https://instagram.com/yourpage',
'quantity' => '1000',
]),
],
]));
$data = json_decode($response, true);
{
"order": 23501
}
Order status action=status
Progress of one of your orders.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | status |
order | Yes | Order ID returned by "add" |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=status \
-d order=23501
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'order' => '23501',
]),
],
]));
$data = json_decode($response, true);
{
"charge": "0.90000",
"start_count": 3572,
"status": "In progress",
"remains": 157,
"currency": "USD"
}
Multiple orders status action=status
Up to 100 of your orders in one call. Orders that are not yours or do not exist are left out.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | status |
orders | Yes | Order IDs separated by commas (max 100) |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=status \
-d orders=23501,23502
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'status',
'orders' => '23501,23502',
]),
],
]));
$data = json_decode($response, true);
[
{
"id": 23501,
"charge": "0.90000",
"start_count": 3572,
"status": "Completed",
"remains": 0,
"currency": "USD"
}
]
Create refill action=refill
Asks for a refill on an order whose service offers one (refill: true). Available 24 hours after the order was placed.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | refill |
order | Yes | Order ID |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=refill \
-d order=23501
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'refill',
'order' => '23501',
]),
],
]));
$data = json_decode($response, true);
{
"refill": 1087
}
Refill status action=refill_status
Progress of a refill you asked for.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | refill_status |
refill | Yes | Refill ID returned by "refill" |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=refill_status \
-d refill=1087
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'refill_status',
'refill' => '1087',
]),
],
]));
$data = json_decode($response, true);
{
"status": "In Progress"
}
Cancel order action=cancel
Cancels an order whose service allows it (cancel: true) and returns the price to your balance.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | cancel |
order | Yes | Order ID |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=cancel \
-d order=23501
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'cancel',
'order' => '23501',
]),
],
]));
$data = json_decode($response, true);
{
"cancel": true
}
Balance action=balance
Your current balance.
| Field | Required | Description |
|---|---|---|
key | Yes | Your API key |
action | Yes | balance |
curl -X POST https://smmoro.com/api/v2 \
-d key=YOUR_API_KEY \
-d action=balance
$response = file_get_contents('https://smmoro.com/api/v2', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'balance',
]),
],
]));
$data = json_decode($response, true);
{
"balance": "100.84",
"currency": "USD"
}
Order statuses
| Status | Meaning |
|---|---|
| Pending | Received, waiting to start |
| In progress | Being delivered |
| Processing | Started; delivery is being set up |
| Completed | Fully delivered |
| Partial | Stopped early; the undelivered part (remains) is refunded to your balance |
| Canceled | Not delivered; the full price is refunded to your balance |
Service fields
| Field | Description |
|---|---|
service | Service ID to send with "add" |
name / category | Service name and the category it belongs to |
type | Default (link + quantity) or Package (fixed quantity) |
rate | Your price in USD per 1000 (per package for packages), after your discount |
min / max | Allowed quantity |
refill / cancel | Whether refills / cancelling are offered |
email_req / whatsapp_req | Package services that need an email / WhatsApp number with the order |
description / important_message | Service details and any warning to read before ordering, or null |
average_time | Average delivery time in seconds for 1000 (for one order on packages), from the last 10 completed orders. null when not known yet |
average_time_text | The same time as text, e.g. "2 hours and 15 minutes", or null |