API
Automate rentals instead of clicking through the dashboard. Every account can issue its own API key โ generate yours on the Profile page (it is shown once, then stored only as a hash). Send it as a query parameter ?api_key=YOUR_KEY, an X-API-Key header, or an Authorization: Bearer header.
How a rental flows
- 1. Ask for a number โ choose a service and receive a USA number plus a rental ID.
- 2. Poll for the code โ check the rental status every few seconds until the SMS code shows up.
- 3. Done โ once the code is delivered the rental completes on its own; there is nothing else to confirm.
Endpoints
GET/api/v1/balance
Your wallet balance.
{"ok":true,"balance_cents":856,"balance":"8.56","currency":"USD"}
GET/api/v1/services
The full catalogue with final prices (markup already included).
{"ok":true,"services":[{"code":"wa","name":"WhatsApp","price":"1.44", ...}]}
POST/api/v1/rent
Rent a number. Body (JSON or form): {"service":"wa"} โ the service codes are the ones from the services list.
{"ok":true,"rental_id":"r_1","service":"wa","phone":"+15551234567",
"price_cents":144,"status":"active","expires_at":"2026-10-21T12:20:00.000Z"}
GET/api/v1/rentals/:id/status
Status of one of your rentals. While it is active this also checks the provider, so the code appears here as soon as it lands.
{"ok":true,"rental_id":"r_1","status":"completed","code":"482916",
"charged":true,"price_cents":144}
Errors come back as {"ok":false,"error":"..."} with a matching HTTP status (401 for a bad key, 402 for low balance, 409 when your active-rental limit is full, 503 while a service is unavailable).
Billing rule
Exactly like the dashboard: your wallet is debited only when a code is delivered. Rentals that expire or are cancelled before any code arrives are free, and every charge is written to your wallet history.