Create an order
Purchase a number using an approved quote and a persisted idempotency key.
01 / Request
Make a request
/api/v1/ordersThis request spends wallet funds. Persist a UUID v4 Idempotency-Key and quoteId before sending it. Reuse the same pair if the outcome is uncertain.
201 means a new order record was created; 200 can recover an existing request. Neither status alone proves that a number was allocated. Inspect order.status and order.phone.
Do not automatically place a replacement purchase when status is purchase_unknown. Retrieve the saved order and contact support if it remains unresolved.
Required headers
AuthorizationstringRequired- Bearer followed by your ScrapingBuddy customer API key. Keep it on your server.
Content-TypestringRequired- application/json.
Idempotency-KeyUUID v4Required- Generate once per purchase and persist with quoteId before sending. Reuse the same pair on an uncertain retry.
JSON body
quoteIdUUIDRequired- Your saved, unexpired quote ID. Check its price against your budget before purchasing.
02 / Response
Understand the response
Success returns HTTP 201 / 200 with JSON. Always inspect order.status before using the number or taking another action.
order.idUUID- Save this identifier to retrieve, refresh, cancel or finish the order.
order.country / productstring- Country and service IDs used for this purchase.
order.operatorstring | null- Assigned operator; may be null while purchasing.
order.amount_centsinteger- Customer price in USD cents. 25 means $0.25. This field uses snake_case.
order.statusstring- Current lifecycle state. Read sms to detect a message; RECEIVED alone is not proof that a code arrived.
order.phonestring | null- Allocated phone number, including its country prefix. May be null while purchasing.
order.smsarray- Received messages. An empty array means no message has been recorded yet.
order.sms[].sender / text / code / datestring- Sender, complete message, extracted verification code and provider message date. A message may also contain an id.
order.expires_atdate-time | null- Order expiry reported by the provider. May be null while purchasing.
order.created_at / updated_atdate-time- When the order was created and last updated.
order.refunded_atdate-time | null- A timestamp confirms a recorded refund. Do not infer a refund from a local timer or status alone.
order.error_codestring | null- Failure or review details, when present. Include this and the order ID in a support ticket, never your API key.
{
"order": {
"id": "22222222-2222-4222-8222-222222222222",
"country": "england",
"product": "google",
"operator": "assigned-operator",
"amount_cents": 25,
"status": "PENDING",
"phone": "+440000000000",
"sms": [],
"expires_at": "2026-09-12T12:15:00.000Z",
"created_at": "2026-09-12T12:00:00.000Z",
"updated_at": "2026-09-12T12:01:00.000Z",
"refunded_at": null,
"error_code": null
}
}Prices, stock, phone numbers, messages and timestamps here are illustrative, not live availability or a price guarantee.
Errors & next steps
Failures return an HTTP error status and a JSON error message. Correct validation and authentication errors before retrying. For 429, honor Retry-After; longer account limits may still apply.
All keys share the account limit of 60 API requests per minute. Purchase recovery must keep the original idempotency key and quote ID.