For the complete documentation index, see llms.txt. This page is also available as Markdown.

Poll an Order

Poll a protected receive-SMS or rental order and read its messages and cancellation state.

GET /v2/receive-sms/orders/{orderId}

GET /v2/rent-numbers/orders/{orderId}

Authorization: Bearer <accessToken>
curl -sS https://api.sms4sats.com/v2/receive-sms/orders/ORDER_ID \
  -H 'Authorization: Bearer ACCESS_TOKEN'

Representative response

{
  "id": "<payment-hash>",
  "orderId": "<payment-hash>",
  "type": "receive-sms",
  "country": "151",
  "service": "tg",
  "status": "waiting_for_sms",
  "orderStatus": "waiting_for_sms",
  "priceSats": 350,
  "phoneNumber": "+1...",
  "messages": [],
  "durationMinutes": null,
  "createdAt": "2026-09-30T19:00:00.000Z",
  "updatedAt": "2026-09-30T19:01:10.000Z",
  "paidAt": "2026-09-30T19:01:00.000Z",
  "expiresAt": "2026-09-30T19:21:00.000Z",
  "completedAt": null,
  "cancelledAt": null,
  "failedAt": null,
  "cancellation": {
    "eligible": false,
    "availableAt": "2026-09-30T19:04:00.000Z"
  }
}

A delivered message appears as:

Polling rules

  • Poll every 5–10 seconds.

  • The server also performs restart-safe background polling; client polling is not the sole fulfillment mechanism.

  • Treat status and orderStatus as equivalent lifecycle fields.

  • Do not infer success from the presence of a phone number; wait for a message and terminal state.

  • Stop on completed, cancelled, expired, or failed.

  • Keep polling transitional states rather than creating a replacement order.

See Order States for the complete state machine.

Last updated