For resellers and developers
Resell OTP numbers under your own brand
A REST API for single-use SMS verification numbers, from $0.52 per activation — wallet-funded, refundable and webhook-driven, on top of the same real-carrier numbers sold on the site.
One API for every one-off verification code
Instant provisioning
A number is issued the moment your request is charged — no queue, no manual approval step.
One wallet for both products
The same balance funds permanent numbers and OTP activations, so there's nothing extra to set up.
Full refund on cancel
Cancel a waiting activation before it catches an SMS and the price returns to the wallet automatically.
One key, every endpoint
The API key you already generated for the Numbers API works here too — nothing new to provision.
Signed webhooks
Register a URL once and receive a signed otp.completed event instead of polling for a status change.
Rate-limited responses
Every response carries your remaining quota, so a busy integration can back off cleanly.
From order to verified code
- 1
Check the catalog
GET the OTP catalog for the service and country you need — the response returns only your own resale price.
- 2
Buy the activation
POST to create it, charged from your wallet balance instantly.
- 3
Wait for the code
Poll GET /otp-numbers/{id} or, better, let your registered webhook tell you the moment it lands.
- 4
Resend or cancel
Request a resend if the upstream route supports it, or cancel for a full refund if you no longer need it.
Order an OTP number in one request
curl https://vnumbr.com/api/v1/otp-numbers \
-X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: otp-8f21" \
-H "Content-Type: application/json" \
-d '{"service":"whatsapp","countryCode":"US"}'The Idempotency-Key header means a retried request returns the original activation instead of buying a second one.
A complete OTP order lifecycle
| Method | Path | What it does |
|---|---|---|
| GET | /api/v1/otp-catalog | List OTP services, countries and your resale price for each |
| POST | /api/v1/otp-numbers | Buy a single-use OTP number, charged from your balance |
| GET | /api/v1/otp-numbers | List your OTP activations, with status |
| GET | /api/v1/otp-numbers/{id} | Get one activation's live status and SMS code |
| POST | /api/v1/otp-numbers/{id}/resend | Request an SMS resend, where the upstream route supports it |
| POST | /api/v1/otp-numbers/{id}/cancel | Cancel a waiting activation for a full refund |
Full request and response fields are documented in your dashboard's developer section once you have a key.
Who builds on the OTP verification API
AI agents and chatbots
Give an automated workflow its own number to complete a signup or verification step without a human in the loop.
SaaS onboarding flows
Verify a user's phone during your own signup without running a carrier relationship yourself.
QA and testing teams
Spin up disposable numbers for automated test suites that need a real SMS code on demand.
Resale and marketplace platforms
Wrap the catalog in your own pricing and UI — every response already excludes the underlying cost.
Reliable enough to bill your own customers on
A 15-minute window
Every activation shows a consistent 15-minute countdown to your customer, regardless of which upstream route fulfilled it.
Real carrier numbers
Sourced the same way as VNumbr's permanent numbers — genuine mobile allocations, not a shared VoIP pool.
Transparent refunds
Refund rules are fixed and documented, not case-by-case, so your own support team can explain them with confidence.
Idempotent by design
Every purchase accepts an Idempotency-Key, so a network retry from your side never double-charges a customer.
Predictable limits
Rate-limit headers on every response mean you can build back-off logic instead of guessing at a ceiling.
Revocable keys
Rotate or revoke an API key instantly from your dashboard if one is ever compromised.
Frequently asked questions
How is this different from the main Numbers API?
The same API key and wallet work for both. The Numbers API provisions permanent numbers billed monthly or yearly; this one buys single-use OTP numbers billed per activation. Use whichever endpoints fit the order.
Can I resell this under my own brand?
Yes. Every response is scoped to your account and returns only your resale price — your own customers never see VNumbr or the upstream cost.
What happens if the code never arrives?
Cancel the activation with the cancel endpoint before it expires and the full price is refunded to your wallet. Letting it run out instead of cancelling does not refund — that is what covers the cost when a code genuinely never comes.
Is resending a code always possible?
No. Resend depends on the upstream route for that specific activation. Where it isn't supported, the endpoint returns a clear error instead of pretending to resend.
Do I need a separate key for OTP numbers?
No, one API key covers your whole account — permanent numbers, OTP numbers and webhooks.
What are the rate limits?
Every response carries rate-limit headers so you can see your remaining quota and back off before you hit it.
Can I get notified instead of polling?
Yes. Register a webhook URL and VNumbr posts a signed otp.completed event the moment a code arrives, instead of you polling the status endpoint.
Start reselling OTP numbers today.
Create a free account, generate a key, and your first activation can be live in minutes.
