Orders
Purchase and manage virtual number orders via the API.
Order Lifecycle
PROCESSING → ACTIVE → COMPLETED
ACTIVE → CANCELLED | EXPIRED | FAILED
Create Order
POST /api/v1/orders
{
"countryId": "clxxx...",
"serviceId": "clxxx...",
"quantity": 1
}Response
JSON
{
"success": true,
"data": {
"id": "clxxx...",
"status": "ACTIVE",
"phoneNumber": "+5511999999999",
"sellPrice": 3.5,
"expiresAt": "2026-07-05T15:30:00.000Z",
"country": { "code": "BR", "name": "Brazil", "flag": "🇧🇷" },
"service": { "slug": "whatsapp", "name": "WhatsApp" }
}
}Cancel / Finish
cURL
# Cancel an order that has not received an SMS — refunds in full
POST /api/v1/orders/{id}/cancel
# Finish after receiving SMS
POST /api/v1/orders/{id}/finishRefunds
A number that never delivers a code is not a service rendered, so the full amount goes back to your wallet automatically:
- Cancelled without SMS — refunded when you call
/cancel. - Expired without SMS — refunded automatically when the number expires. No call needed.
- Provider failure — refunded, and the order is marked
FAILED.
Once any SMS arrives the number counts as delivered and there is no refund. Cancelling such an order is rejected with 400 — close it with /finish instead. Every refund appears as a REFUND transaction in your wallet history.
Rate Limits
API keys allow 120 requests per minute, and order creation is capped at 20 per minute per account — the dashboard and the API share that budget. Exceeding a limit returns 429 carrying Retry-After, X-RateLimit-Limit and X-RateLimit-Remaining, so you know exactly how long to back off.