Getting Started with the VerifyNumber API
A 5-minute walkthrough of the verifynumber.io REST API — request a number, poll for the SMS, and verify in production. Includes curl and Node examples.
The VerifyNumber API is built around two ideas: request a number and wait for the SMS. That’s it. No hardware. No long-lived state. Sessions are ephemeral, billing is per-verification, and the whole surface fits in a single page.
Get an API key
Head to your dashboard, generate a key, and store it as VERIFYNUMBER_API_KEY.
Request a number
curl -X POST https://api.verifynumber.io/v1/sessions \
-H "Authorization: Bearer $VERIFYNUMBER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "country": "US", "service": "discord" }'
You’ll get back a session with a real phone number:
{
"session_id": "ses_01HQ...",
"phone_number": "+1 415 555 0142",
"expires_at": "2026-04-15T18:30:00Z"
}
Poll for the SMS
const res = await fetch(
`https://api.verifynumber.io/v1/sessions/${sessionId}/messages`,
{ headers: { Authorization: `Bearer ${process.env.VERIFYNUMBER_API_KEY}` } }
);
const { messages } = await res.json();
// messages[0].code → "847293"
Or use the webhook flow if polling feels gross. Both are documented.
What’s next
That’s the whole thing. If your verification stack is more complicated than this, it’s probably more complicated than it needs to be.