We maintain an sms-activate compatible API. Every number is one-time-use only — there are no long-term rentals.
You may have 60 active numbers at a time. Once you get the code or cancel, you can request another.
All calls require your API key as api_key in the URL. Generate or regenerate it on your Profile page.
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=getBalance"
# Response: ACCESS_BALANCE:50.30
# Invalid key: BAD_KEY
You need the service's shortcode (visible on the dashboard, or via getPrices below).
Optionally pass max_price (or maxPrice) — the request fails with MAX_PRICE_EXCEEDED if the current price is higher.
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=getNumber&service=tg&max_price=1.50"
# Success: ACCESS_NUMBER:308:13476711222
# Price too high: MAX_PRICE_EXCEEDED
# Unknown/inactive service: BAD_SERVICE
# Too many active numbers: TOO_MANY_ACTIVE_RENTALS
# Not enough balance: NO_MONEY
# None available right now: NO_NUMBERS
Use the ID from the getNumber response. Poll every 3+ seconds.
We check our own database first — most calls resolve instantly. If the code hasn't arrived yet, we check with our upstream provider on your behalf before responding.
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=getStatus&id=308"
# Got code: STATUS_OK:12345
# Waiting: STATUS_WAIT_CODE
# Cancelled/expired: STATUS_CANCEL
# Unknown ID: NO_ACTIVATION
Once you're finished with a number, mark it done so it no longer counts toward your active-number limit.
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=setStatus&id=308&status=6"
# Success: ACCESS_ACTIVATION
# Unknown ID: NO_ACTIVATION
Cancel a waiting number to get your balance refunded immediately.
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=setStatus&id=308&status=8"
# Success: ACCESS_CANCEL
# Already finalized: ACCESS_READY
# Unknown ID: NO_ACTIVATION
Two nesting orders are available. Counts of 100 indicate ample availability (exact live counts are checked automatically at purchase time).
# country => service => data
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=getPrices"
# service => country => data
curl "https://daisysms.app/stubs/handler_api.php?api_key=$APIKEY&action=getPricesVerification"
Set a webhook URL on your Profile page to receive a POST as soon as a code arrives — no polling required. If your endpoint doesn't respond quickly, we simply move on; the getStatus polling above always remains the reliable source of truth.
{
"activationId": 308,
"service": "tg",
"text": "Your code is 12345",
"code": "12345",
"country": 0,
"receivedAt": "2026-08-27 12:30:57"
}
(Timestamp is UTC.)