iOS

Voice OTP for iOS

Send voice OTPs from an iOS app 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 iOS SDK on request

Send a Voice OTP from iOS

Never put the API key in the app. The app calls your backend, and your backend calls Edesy (see the Node.js or Python example).

// iOS (Swift): call YOUR backend, which calls Edesy
var request = URLRequest(url: URL(string: "https://your-backend.com/api/otp/voice")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try JSONEncoder().encode(["phone": phone])
let (_, response) = try await URLSession.shared.data(for: request)
guard (response as? HTTPURLResponse)?.statusCode == 200 else { throw OTPError.failed }

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.