Skip to content
DocsOrders and refills

Orders and refills

Place orders one at a time or up to 100 at once, follow them through their statuses, cancel them and request refills.

The order object

NameTypeDescription
idintegerOrder ID. The same ID works on API v2 and in the panel.
objectstringAlways order.
serviceobjectThe service ordered: id, name and platform.
linkstringThe link you sent.
quantityintegerUnits ordered. With drip-feed, units per run.
statusstringSee Statuses.
start_countinteger or nullThe count on the link when delivery started, once the supplier reports it.
deliveredintegerUnits delivered so far.
remainsintegerUnits not delivered. For a closed order, the units that were refunded.
ratestringYour price per 1,000 when you placed the order.
chargestringWhat was taken from your balance.
refundedstringWhat went back to your balance for undelivered units.
currencystringAlways USD.
runs, intervalinteger or nullDrip-feed runs and minutes between them, or null.
reroutedbooleanOnly when you list or get orders: true if the order moved to a backup line.
cancel_requestedbooleantrue once a cancel has been asked for.
can_cancelbooleanWhether a cancel would be accepted now.
refill.availablebooleanWhether you can request a refill now.
refill.untilstring or nullWhen the refill window closes. null for lifetime refill or when refill isn’t available.
livemodebooleanfalse for sandbox orders.
created_at, started_at, completed_at, updated_atstring or nullISO 8601 times in UTC.
eventsarrayOnly on Get an order and Cancel: the order’s timeline, each with type, message and at.

Timeline event types: created, sent, queued_same_link, started, cancel_requested, cancel_confirmed, completed, partial, canceled,refill_requested, refill_completed, refill_rejected.

Statuses

StatusMeaning
pendingReceived and paid, not sent to a supplier yet.
processingSent to a supplier line, waiting for delivery to start.
in_progressDelivering.
completedDelivered in full. Final.
partialClosed with part undelivered; that part is in refunded. Final.
canceledClosed before delivery; the charge is in refunded. Final.

Place an order

POST/v1/ordersScope orders

Checks the order, takes the charge from your balance and sends it to a supplier line. Send an Idempotency-Key header so a retry can never place it twice; see Idempotency.

Body

NameTypeRequiredDescription
serviceintegerrequiredService ID.
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: 2 to 1,000 runs. Requires interval. You are charged for quantity × runs.
intervalintegeroptionalDrip-feed: 1 to 1,440 minutes between runs. Requires runs.

Headers

NameTypeDescription
Idempotency-Keystring1 to 64 characters. Recommended.

Answers: 201 with the new order, or 200 with Idempotent-Replayed: true for a replayed key. Errors: 402 not_enough_funds, 409 idempotency_conflict, 422 withinvalid_request, incorrect_service, incorrect_link, quantity_out_of_range or dripfeed_not_supported.

Request
curl https://orbismm.com/api/v1/orders \
  -H "Authorization: Bearer $ORBISMM_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 3f6c2a9e-8d41-4b7a-9e0c-5d2f1b7a4c88" \
  -d '{"service":1001,"link":"https://www.instagram.com/yourbrand","quantity":1000}'

Response · 201 Created
{
  "id": 58213,
  "object": "order",
  "service": {
    "id": 1001,
    "name": "Instagram Followers",
    "platform": "instagram"
  },
  "link": "https://www.instagram.com/yourbrand",
  "quantity": 1000,
  "status": "pending",
  "start_count": null,
  "delivered": 0,
  "remains": 1000,
  "rate": "2.4000",
  "charge": "2.4000",
  "refunded": "0.0000",
  "currency": "USD",
  "runs": null,
  "interval": null,
  "cancel_requested": false,
  "can_cancel": true,
  "refill": {
    "available": false,
    "until": null
  },
  "livemode": true,
  "created_at": "2026-09-26T14:02:11Z",
  "started_at": null,
  "completed_at": null,
  "updated_at": "2026-09-26T14:02:11Z"
}
Try it in the sandbox

Place orders in a batch

POST/v1/orders/batchScope orders

Up to 100 orders in one call. Each is checked, charged and placed on its own, in the order you sent them: one failing doesn’t stop the rest. The answer lists every item by its index with either the order or anerror in the usual error format.

Body

NameTypeRequiredDescription
ordersarrayrequired1 to 100 items, each with the fields of Place an order.
orders[].idempotency_keystringoptionalUp to 64 characters. Works like the Idempotency-Key header, per item.

The call itself answers 200 whenever the list is valid; check each item. A list that is missing, empty or longer than 100 gets 422 invalid_request.

Request
curl https://orbismm.com/api/v1/orders/batch \
  -H "Authorization: Bearer $ORBISMM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orders":[{"service":1001,"link":"https://www.instagram.com/yourbrand","quantity":1000,"idempotency_key":"batch-0926-001"},{"service":1001,"link":"https://www.instagram.com/secondbrand","quantity":1,"idempotency_key":"batch-0926-002"}]}'

Response · 200 OK
{
  "data": [
    {
      "index": 0,
      "order": {
        "id": 58213,
        "object": "order",
        "service": {
          "id": 1001,
          "name": "Instagram Followers",
          "platform": "instagram"
        },
        "link": "https://www.instagram.com/yourbrand",
        "quantity": 1000,
        "status": "pending",
        "start_count": null,
        "delivered": 0,
        "remains": 1000,
        "rate": "2.4000",
        "charge": "2.4000",
        "refunded": "0.0000",
        "currency": "USD",
        "runs": null,
        "interval": null,
        "cancel_requested": false,
        "can_cancel": true,
        "refill": {
          "available": false,
          "until": null
        },
        "livemode": true,
        "created_at": "2026-09-26T14:02:11Z",
        "started_at": null,
        "completed_at": null,
        "updated_at": "2026-09-26T14:02:11Z"
      }
    },
    {
      "index": 1,
      "error": {
        "code": "quantity_out_of_range",
        "message": "Quantity must be between 50 and 100000."
      }
    }
  ]
}

List orders

GET/v1/ordersScope read

Newest first, with a cursor. See Pagination.

Query parameters

NameTypeDescription
statusstringOne or more statuses, comma-separated, for example pending,processing,in_progress. An unknown status gets 422.
serviceintegerOnly this service.
platformstringOnly this platform.
linkstringOnly orders on exactly this link.
idsstringComma-separated order IDs, up to 100.
qstringSearch by order ID, part of the link or part of the service name.
created_afterstringOrders created at or after this time (ISO 8601).
created_beforestringOrders created before this time.
limitinteger1 to 100. Default 50.
starting_afterintegerThe next_cursor from the previous page.
Request
curl "https://orbismm.com/api/v1/orders?status=in_progress&limit=20" \
  -H "Authorization: Bearer $ORBISMM_KEY"

Response · 200 OK
{
  "data": [
    {
      "id": 58213,
      "object": "order",
      "service": {
        "id": 1001,
        "name": "Instagram Followers",
        "platform": "instagram"
      },
      "link": "https://www.instagram.com/yourbrand",
      "quantity": 1000,
      "status": "in_progress",
      "start_count": 18420,
      "delivered": 312,
      "remains": 688,
      "rate": "2.4000",
      "charge": "2.4000",
      "refunded": "0.0000",
      "currency": "USD",
      "runs": null,
      "interval": null,
      "rerouted": false,
      "cancel_requested": false,
      "can_cancel": true,
      "refill": {
        "available": false,
        "until": null
      },
      "livemode": true,
      "created_at": "2026-09-26T14:02:11Z",
      "started_at": "2026-09-26T14:09:40Z",
      "completed_at": null,
      "updated_at": "2026-09-26T14:31:02Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Get an order

GET/v1/orders/{id}Scope read

One order with its timeline.

Request
curl https://orbismm.com/api/v1/orders/58213 \
  -H "Authorization: Bearer $ORBISMM_KEY"

Response · 200 OK
{
  "id": 58213,
  "object": "order",
  "service": {
    "id": 1001,
    "name": "Instagram Followers",
    "platform": "instagram"
  },
  "link": "https://www.instagram.com/yourbrand",
  "quantity": 1000,
  "status": "in_progress",
  "start_count": 18420,
  "delivered": 312,
  "remains": 688,
  "rate": "2.4000",
  "charge": "2.4000",
  "refunded": "0.0000",
  "currency": "USD",
  "runs": null,
  "interval": null,
  "rerouted": false,
  "cancel_requested": false,
  "can_cancel": true,
  "refill": {
    "available": false,
    "until": null
  },
  "livemode": true,
  "created_at": "2026-09-26T14:02:11Z",
  "started_at": "2026-09-26T14:09:40Z",
  "completed_at": null,
  "updated_at": "2026-09-26T14:31:02Z",
  "events": [
    {
      "type": "created",
      "message": "Order received",
      "at": "2026-09-26T14:02:11Z"
    },
    {
      "type": "sent",
      "message": "Sent to line 1",
      "at": "2026-09-26T14:02:12Z"
    },
    {
      "type": "started",
      "message": "Started · start count 18420",
      "at": "2026-09-26T14:09:40Z"
    }
  ]
}

Cancel an order

POST/v1/orders/{id}/cancelScope orders

Asks the supplier to stop. The answer is 202 Accepted with the order and cancel_requested: true. The order closes once the supplier confirms: canceled if nothing was delivered, partial if some was. The undelivered part goes back to your balance and shows in refunded. Asking again while the cancel is under way answers 202 and changes nothing.

Errors: 404 not_found, 409 order_closed, 422 cancel_not_supported.

Request
curl -X POST https://orbismm.com/api/v1/orders/58213/cancel \
  -H "Authorization: Bearer $ORBISMM_KEY"

Response · 202 Accepted: the order object with its timeline, where
{
  "id": 58213,
  "object": "order",
  "status": "in_progress",
  "cancel_requested": true,
  "can_cancel": false
}

Request a refill

POST/v1/orders/{id}/refillScope orders

For a completed or partial order whose service has a refill window, while refill.available is true. One refill runs per order at a time. The answer is 202 Accepted with arefill object.

Errors: 404 not_found, 409 with refill_not_available, refill_window_ended or refill_in_progress, 422 refill_not_supported.

Request
curl -X POST https://orbismm.com/api/v1/orders/58214/refill \
  -H "Authorization: Bearer $ORBISMM_KEY"

Response · 202 Accepted
{
  "id": 912,
  "object": "refill",
  "order": 58214,
  "status": "in_progress",
  "created_at": "2026-10-08T09:15:03Z",
  "completed_at": null
}

The refill object

NameTypeDescription
idintegerRefill ID. Also works with v2 refill_status.
objectstringAlways refill.
orderintegerThe order being refilled.
statusstringpending, in_progress, completed or rejected, or requested when the supplier doesn’t report refill progress. After a requested refill you can ask for another one 24 hours later.
created_at, completed_atstring or nullISO 8601 times in UTC.

Get a refill

GET/v1/refills/{id}Scope read

To hear about refills as they finish, subscribe to refill.completed and refill.rejected.

Request
curl https://orbismm.com/api/v1/refills/912 \
  -H "Authorization: Bearer $ORBISMM_KEY"

Response · 200 OK
{
  "id": 912,
  "object": "refill",
  "order": 58214,
  "status": "completed",
  "created_at": "2026-10-08T09:15:03Z",
  "completed_at": "2026-10-08T15:40:27Z"
}