DocsActions reference
API v2 reference
The standard SMM panel API: one endpoint, form fields key and action. If your panel script can add a provider by URL and key, it already speaks this.
Requests and answers
- Send a
POSTtohttps://orbismm.com/api/v2with form fields.GETwith the same fields in the query string also works, but it puts your key in URLs and server logs, so preferPOST. - Every request carries
keyandaction. Action names are not case-sensitive. - Answers are JSON. Numbers that standard scripts expect as text (quantities, counts, money) come back as strings.
- Errors come back as
{"error": "…"}with HTTP 200, which is what existing panel scripts expect. See Errors. - With a test key (
orb_test_…) every action works on the sandbox: sandbox balance, sandbox orders, no supplier.
Actions
| Action | Scope | What it does |
|---|---|---|
services | read | List active services with your rate |
add | orders | Place an order |
status | read | Status of one order or up to 100 |
refill | orders | Request a refill for one order or up to 100 |
refill_status | read | Status of one refill or up to 100 |
cancel | orders | Cancel one order or up to 100 |
balance | read | Your balance |
List services
POST/api/v2action=servicesScope readEvery active service with your own rate per 1,000, after your tier discount. Paused services are left out.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | services |
Each service
| Name | Type | Description |
|---|---|---|
service | integer | The service ID you send to add. |
name | string | Service name. |
type | string | Always Default: every service takes a link and a quantity. |
category | string | Platform and kind, for grouping, for example Instagram Followers. |
rate | string | Your price per 1,000 in USD, as a string with up to six decimals (at least two), e.g. "2.40" or "0.00125". |
min, max | string | Smallest and largest quantity per order. |
refill | boolean | Whether drops are refilled on request within the service’s refill window. |
cancel | boolean | Whether the service supports cancel. |
dripfeed | boolean | Whether the service takes runs and interval. |
The refill window, measured start times and service notes are in the v1 services endpoint.
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=services
Response · 200 OK
[
{
"service": 1001,
"name": "Instagram Followers",
"type": "Default",
"category": "Instagram Followers",
"rate": "2.40",
"min": "50",
"max": "100000",
"refill": true,
"cancel": true,
"dripfeed": false
}
]Place an order
POST/api/v2action=addScope ordersChecks the order, takes the charge from your balance at once and sends it to a supplier line. Fields not listed here are ignored.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | add |
service | integer | required | Service ID from services. |
link | string | required | The profile, post, video or channel URL. Up to 1,000 characters. |
quantity | integer | required | Between the service’s min and max. With drip-feed, the quantity per run. |
runs | integer | optional | Drip-feed only: how many times to deliver quantity. You are charged for quantity × runs. |
interval | integer | optional | Drip-feed only: minutes between runs. |
At 2.40 per 1,000, this order costs $2.40. Possible errors: Incorrect service ID, Incorrect link, Quantity less than minimal 50, Quantity more than maximal 100000, This service does not support drip-feed, Not enough funds on balance
v2 has no protection against duplicates: sending the same add twice places two orders. If your script retries on timeouts, use v1 with an Idempotency-Key.
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=add \
-d service=1001 \
-d link=https://www.instagram.com/yourbrand \
-d quantity=1000
Response · 200 OK
{
"order": 58213
}Order status
POST/api/v2action=statusScope readSend order for one order, or orders with up to 100 comma-separated IDs.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | status |
order | integer | optional | One order ID. |
orders | string | optional | Comma-separated order IDs, for example 58213,58214. Up to 100; any beyond that are ignored. |
Answer
| Name | Type | Description |
|---|---|---|
charge | string | What the order cost you, less anything refunded to your balance. |
start_count | string | The count on the link when delivery started. 0 until it is known. |
status | string | One of the statuses below. |
remains | string | Units not delivered yet. For a closed order, the units that were refunded. |
currency | string | Always USD. |
| Status | Meaning |
|---|---|
Pending | Received, not sent to a supplier yet. |
Processing | Sent to a supplier line, waiting for delivery to start. |
In progress | Delivering. |
Completed | Delivered in full. |
Partial | Closed with part of it undelivered. That part went back to your balance. |
Canceled | Closed before delivery. The charge went back to your balance. |
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=status \
-d order=58213
Response · 200 OK
{
"charge": "2.40",
"start_count": "18420",
"status": "In progress",
"remains": "688",
"currency": "USD"
}Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=status \
-d orders=58213,58214,99999
Response · 200 OK, keyed by order ID
{
"58213": {
"charge": "2.40",
"start_count": "18420",
"status": "In progress",
"remains": "688",
"currency": "USD"
},
"58214": {
"charge": "2.40",
"start_count": "2210",
"status": "Completed",
"remains": "0",
"currency": "USD"
},
"99999": {
"error": "Incorrect order ID"
}
}Request a refill
POST/api/v2action=refillScope ordersAsks for a refill on a completed or partial order whose service has a refill window (the example service is refilled for 30 days). The window counts from the day the order completed. Only one refill runs per order at a time.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | refill |
order | integer | optional | One order ID. |
orders | string | optional | Comma-separated order IDs, up to 100. |
Possible errors: Incorrect order ID, This service has no refill., Refill becomes available when the order completes., The refill window for this order has ended., A refill is already in progress for this order., Refill is not available for this order., Refill is not available right now. Our team has been notified.
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=refill \
-d order=58214
Response · 200 OK
{
"refill": "912"
}Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=refill \
-d orders=58214,58213
Response · 200 OK
[
{
"order": 58214,
"refill": 912
},
{
"order": 58213,
"refill": {
"error": "Refill becomes available when the order completes."
}
}
]Refill status
POST/api/v2action=refill_statusScope readFields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | refill_status |
refill | integer | optional | One refill ID, as returned by refill. |
refills | string | optional | Comma-separated refill IDs, up to 100. |
The status is Pending, In progress, Completed or Rejected. A single unknown refill answers {"error": "Refill not found"}.
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=refill_status \
-d refill=912
Response · 200 OK
{
"status": "Completed"
}Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=refill_status \
-d refills=912,913
Response · 200 OK
[
{
"refill": 912,
"status": "Completed"
},
{
"refill": 913,
"status": {
"error": "Refill not found"
}
}
]Cancel orders
POST/api/v2action=cancelScope ordersAsks the supplier to stop. The order closes once the supplier confirms: Canceled if nothing was delivered, Partial if some was. The undelivered part goes back to your balance. Asking again while a cancel is under way is accepted and changes nothing.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | cancel |
orders | string | optional | Comma-separated order IDs, up to 100. |
order | integer | optional | One order ID, if you don’t send orders. |
Possible errors per order: Incorrect order ID, The order is already closed., This service does not support cancel.
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=cancel \
-d orders=58213,58214
Response · 200 OK, always a list
[
{
"order": 58213,
"cancel": 1
},
{
"order": 58214,
"cancel": {
"error": "The order is already closed."
}
}
]Balance
POST/api/v2action=balanceScope readYour balance in USD. With a test key, the sandbox balance.
Fields
| Name | Type | Required | Description |
|---|---|---|---|
key | string | required | Your API key, orb_live_… or orb_test_…. |
action | string | required | balance |
Request
curl https://orbismm.com/api/v2 \
-d key=$ORBISMM_KEY \
-d action=balance
Response · 200 OK
{
"balance": "231.50",
"currency": "USD"
}Errors
Every error is {"error": "<message>"} with HTTP 200. Besides the per-action errors above, any request can get these:
| Message | Why |
|---|---|
Invalid API key | The key is wrong, or it was revoked or rolled. |
This IP address is not allowed for this API key | The key has an IP allowlist and this address is not on it. |
Account suspended | The account is suspended. Write to support. |
This API key is not allowed to do that | The key lacks the scope the action needs. |
Incorrect request | Missing or unknown action (checked before the key), or cancel without order IDs. |
Incorrect order ID | No such order on this account, or it belongs to the other environment (live or sandbox). |
Limits
- 60 requests per second per key, unless we have set a different limit for your account. Over it, you get HTTP 429 with
{"error": "Too many requests"}and aRetry-Afterheader saying how many seconds to wait. - Up to 100 IDs per
status,refill,refill_statusandcancelcall. Repeated IDs are counted once.
Need safe retries, webhooks or batch orders? The REST API (v1) works on the same orders with the same key.