Node.js

Voice OTP for Node.js

Send voice OTPs from a Node.js backend with the REST API. One HTTPS call, a webhook for the result, Rs 1.50 per answered call-minute.

REST API

No KYC to start

Native Node.js SDK on request

Send a Voice OTP from Node.js

Call this from your server. Keep the API key in an environment variable, never in client code.

// Node.js 18+ (built-in fetch)
const res = await fetch("https://voice-api.edesy.in/v1/voice-otp/send", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.EDESY_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    phone_number: "9876543210",       // 10-digit Indian mobile
    otp_code: "482913",               // optional - omit to get a 6-digit code
    callback_url: "https://your-app.com/webhooks/voice-otp",
    external_id: "signup-123",        // optional - your own reference
  }),
});
const call = await res.json();
// { data: { id, call_sid, phone_number, otp_code, status, created_at }, meta }
// Store call.data.otp_code against the user and compare when they type it in.

The result arrives on your webhook

Status is one of delivered, no-answer, busy or failed. dtmf_response is set when you enable press-1 confirmation.

POST https://your-app.com/webhooks/voice-otp
X-Edesy-Event: voice-otp.completed
Content-Type: application/json

{
  "id": "5b1c...-uuid",
  "external_id": "signup-123",
  "phone_number": "9876543210",
  "status": "delivered",
  "dtmf_response": "1",
  "duration_sec": 18,
  "price": "1.5000",
  "completed_at": "2026-09-26T10:15:30Z"
}

Other Platforms

Available Now vs Built On Request

Voice OTP is live today as a self-serve REST API for Indian mobile numbers. Everything in the second list we build for customers who need it - tell us your use case and volume.

Available now

  • Voice OTP call API

    POST a phone number; we call and read the code aloud. Send your own code or let us generate a 6-digit one.

  • Custom message template

    Put your brand name and wording in the call.

  • "Press 1 to confirm"

    Optional keypad confirmation - also used for COD order confirmation calls.

  • Delivery webhook

    We POST the call result (delivered, no-answer, busy, failed) to your callback URL.

  • Call logs and stats

    Every OTP call with status and duration in the dashboard and via API.

  • Abuse protection

    Per-number rate limit (5 calls per hour by default).

  • Self-serve, no KYC

    Sign up, create an API key, top up a prepaid wallet with UPI or card.

  • English voice

    Clear Indian-English voice out of the box.

Pricing

Rs 1.50 per call-minute, billed per started minute. A typical OTP call is under a minute, so most OTPs cost Rs 1.50. Unanswered calls are not charged. New accounts get Rs 20 of free credit. Volume pricing on request.

Built on request

  • Hindi and regional-language voice

    Hindi, Tamil, Telugu, Bengali, Marathi and more.

  • SMS OTP with voice fallback

    Send by SMS first, call if it is not verified in time.

  • WhatsApp OTP

    Authentication templates on WhatsApp.

  • Verify API

    We store and check the code so your backend does not have to.

  • Automatic retries

    Redial unanswered calls after a delay you choose.

  • Flash call / missed call verification

    Verify a number without the user typing a code.

  • SDKs

    Node.js, Python, PHP, Java, Android, iOS or Flutter client libraries.

  • Dedicated caller ID

    Call from a number reserved for your brand.

  • Volume pricing

    Per-OTP pricing for committed monthly volumes.

Need something from the on-request list?

Tick what you need. We prioritise what customers ask for and reply with a timeline and price.

Capabilities you need

FAQ

Ready to Integrate?

Sign up, get Rs 20 of free credit (about 13 test calls) and send your first voice OTP in minutes.