Skip to content
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 POST to https://orbismm.com/api/v2 with form fields. GET with the same fields in the query string also works, but it puts your key in URLs and server logs, so prefer POST.
  • Every request carries key and action. 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

ActionScopeWhat it does
servicesreadList active services with your rate
addordersPlace an order
statusreadStatus of one order or up to 100
refillordersRequest a refill for one order or up to 100
refill_statusreadStatus of one refill or up to 100
cancelordersCancel one order or up to 100
balancereadYour balance

List services

POST/api/v2action=servicesScope read

Every active service with your own rate per 1,000, after your tier discount. Paused services are left out.

Fields

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredservices

Each service

NameTypeDescription
serviceintegerThe service ID you send to add.
namestringService name.
typestringAlways Default: every service takes a link and a quantity.
categorystringPlatform and kind, for grouping, for example Instagram Followers.
ratestringYour 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, maxstringSmallest and largest quantity per order.
refillbooleanWhether drops are refilled on request within the service’s refill window.
cancelbooleanWhether the service supports cancel.
dripfeedbooleanWhether 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 orders

Checks the order, takes the charge from your balance at once and sends it to a supplier line. Fields not listed here are ignored.

Fields

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredadd
serviceintegerrequiredService ID from services.
linkstringrequiredThe profile, post, video or channel URL. Up to 1,000 characters.
quantityintegerrequiredBetween the service’s min and max. With drip-feed, the quantity per run.
runsintegeroptionalDrip-feed only: how many times to deliver quantity. You are charged for quantity × runs.
intervalintegeroptionalDrip-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
}
Try it in the sandbox

Order status

POST/api/v2action=statusScope read

Send order for one order, or orders with up to 100 comma-separated IDs.

Fields

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredstatus
orderintegeroptionalOne order ID.
ordersstringoptionalComma-separated order IDs, for example 58213,58214. Up to 100; any beyond that are ignored.

Answer

NameTypeDescription
chargestringWhat the order cost you, less anything refunded to your balance.
start_countstringThe count on the link when delivery started. 0 until it is known.
statusstringOne of the statuses below.
remainsstringUnits not delivered yet. For a closed order, the units that were refunded.
currencystringAlways USD.
StatusMeaning
PendingReceived, not sent to a supplier yet.
ProcessingSent to a supplier line, waiting for delivery to start.
In progressDelivering.
CompletedDelivered in full.
PartialClosed with part of it undelivered. That part went back to your balance.
CanceledClosed 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 orders

Asks 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

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredrefill
orderintegeroptionalOne order ID.
ordersstringoptionalComma-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 read

Fields

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredrefill_status
refillintegeroptionalOne refill ID, as returned by refill.
refillsstringoptionalComma-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 orders

Asks 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

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredcancel
ordersstringoptionalComma-separated order IDs, up to 100.
orderintegeroptionalOne 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 read

Your balance in USD. With a test key, the sandbox balance.

Fields

NameTypeRequiredDescription
keystringrequiredYour API key, orb_live_… or orb_test_….
actionstringrequiredbalance
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:

MessageWhy
Invalid API keyThe key is wrong, or it was revoked or rolled.
This IP address is not allowed for this API keyThe key has an IP allowlist and this address is not on it.
Account suspendedThe account is suspended. Write to support.
This API key is not allowed to do thatThe key lacks the scope the action needs.
Incorrect requestMissing or unknown action (checked before the key), or cancel without order IDs.
Incorrect order IDNo 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 a Retry-After header saying how many seconds to wait.
  • Up to 100 IDs per status, refill, refill_status and cancel call. 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.