OTP Gateway
OTP SMS API for India — delivered in under 3 seconds
An OTP that arrives late is an abandoned signup. BrookTel routes one-time passwords over DLT-approved transactional paths with sub-3-second delivery and 99.99% uptime, so your login, payment and verification flows do not leak users at the last step.
Why OTP traffic needs its own treatment
OTP is transactional traffic. It is time-critical, it must never be queued behind a promotional campaign, and it is exempt from DND scrubbing precisely because the user asked for it seconds ago.
That only holds if the message is submitted on the right DLT template category. Send an OTP on a promotional template and it gets scrubbed against DND, delayed, or dropped entirely — and your support inbox fills up with "I never got the code".
- Dedicated transactional routing, never mixed with campaign queues
- Sub-3-second typical delivery to Indian mobile numbers
- 99.99% platform uptime
- Delivery webhooks so your app knows the moment a code lands or fails
- Per-message failure reasons — not a generic "failed" status
Sending an OTP
One call, one template ID, one variable. Generate and store the code on your side; BrookTel delivers it and reports back.
const res = await fetch('https://api.brooktel.in/v1/sms/send', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BROOKTEL_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+919876543210',
senderId: 'BRKTEL',
templateId: '1207xxxxxxxxxxxxx',
variables: { otp: code },
}),
});
const { messageId } = await res.json();
// Persist messageId, then match it against the delivery webhook.Common reasons OTPs do not arrive — and how we surface them
| Cause | What you see | Fix |
|---|---|---|
| Template variable mismatch | Rejected before submission | Payload is validated against the approved DLT template |
| Wrong template category | Delivered late or scrubbed | Categories are explicit per template in the dashboard |
| Unregistered sender header | Blocked at operator | Header approval status shown against your account |
| Invalid or ported number | Failure reason on the webhook | Numbers are validated before submission |
| Handset-level spam filter | Delivered, not read | Keep sender ID consistent and content transactional |
Where teams use it
- Account signup and login verification
- Payment and transaction confirmation (2FA)
- Password and PIN reset flows
- Delivery-agent and field-staff verification
- KYC and document-submission verification steps
Frequently asked questions
How fast do OTPs deliver?
Typically under 3 seconds to Indian mobile numbers on transactional DLT routes. Final delivery still depends on the recipient's operator and handset state — a phone with no signal will receive the message when it reconnects.
Do OTP messages go to DND numbers?
Yes. Genuine transactional OTP traffic on the correct DLT template category is exempt from DND scrubbing, because the user explicitly initiated the request. This exemption does not apply if you send OTPs on a promotional template.
Do you generate the OTP code for me?
No, and that is deliberate. You generate and verify the code in your own system so the secret never leaves your control. BrookTel handles delivery and reports the outcome.
What does an OTP SMS cost?
OTP is billed per message from your prepaid BrookTel wallet, at a rate that depends on your monthly volume. The platform subscription is separate. Share your expected monthly volume and we will quote a rate.
Can I send OTPs over WhatsApp instead?
Yes — WhatsApp authentication templates are supported, and many teams run WhatsApp as the primary channel with SMS as the fallback. WhatsApp delivery is billed by Meta directly to your own Meta Business account.