# OTP.ID ## Docs - [GET /v3/otp/{otp_id} — Check OTP Transaction Status](https://docs.otp.id/api-reference/get-otp-status.md): GET /v3/otp/{otp_id} retrieves the current status and delivery details of an OTP transaction. Read-only and safe to call repeatedly for polling. - [POST /v3/request — Create OTP with Server-Generated Code](https://docs.otp.id/api-reference/request-otp.md): POST /v3/request creates an OTP transaction and delivers a server-generated code via your chosen channel. Returns otp_id, status, price, and balance. - [POST /v3/send — Deliver a Client-Supplied OTP Code](https://docs.otp.id/api-reference/send-otp.md): POST /v3/send delivers an OTP code you generate yourself. Provide the code in the otp field. Returns otp_id, status, price, and balance. - [POST /v3/verify — Verify a User-Submitted OTP Code](https://docs.otp.id/api-reference/verify-otp.md): POST /v3/verify checks a user-entered OTP against a transaction. Returns verified:true on success, verified:false on mismatch (HTTP 200, not an error). - [otp.verified Webhook — OTP Verification Notification](https://docs.otp.id/api-reference/webhook-otp-verified.md): The otp.verified webhook is sent by OTP.ID to your server when an OTP is verified. Verify the HMAC-SHA256 signature before trusting the payload. - [API Authentication — OTP.ID Bearer Key Setup Guide](https://docs.otp.id/authentication.md): Learn how to get your OTP.ID API key, add the Authorization: Bearer header to every request, and handle all three types of authentication errors. - [OTP.ID Billing: Prepaid IDR Balance and Deduction Rules](https://docs.otp.id/concepts/billing.md): OTP.ID uses a prepaid IDR balance. Learn when charges apply, how the price and last_balance fields work, and how to handle insufficient balance errors. - [OTP Delivery Channels: WhatsApp, SMS, Email & More](https://docs.otp.id/concepts/channels.md): OTP.ID supports five delivery channels: WhatsApp, SMS, Email, Missed Call, and WhatsApp Inbound. Learn when to use each and what restrictions apply. - [OTP Transaction Lifecycle, Statuses, and Expiry Rules](https://docs.otp.id/concepts/otp-lifecycle.md): Understand how an OTP transaction moves through creation, delivery, verification, expiry, and failure states — including TTL and attempt-limit rules. - [Idempotent OTP Requests Using the external_id Field](https://docs.otp.id/guides/idempotency.md): Use external_id to make OTP creation requests safe to retry. Duplicate requests with the same external_id return the original transaction. - [How to Send an OTP via WhatsApp, SMS, Email, or Misscall](https://docs.otp.id/guides/send-otp.md): Learn how to create and deliver OTPs using POST /v3/request for server-generated codes and POST /v3/send for client-supplied codes. - [Verify a One-Time Password Code with POST /v3/verify](https://docs.otp.id/guides/verify-otp.md): Use POST /v3/verify to validate a user-entered OTP code. Understand how mismatch (HTTP 200), expiry, and attempt-limit errors work. - [Webhook Notifications for OTP Verification | OTP.ID](https://docs.otp.id/guides/webhooks.md): Configure a webhook URL to receive real-time notifications when OTP.ID verifies a transaction. Includes HMAC signature verification. - [WhatsApp Inbound OTP: Tap-to-Verify for Mobile Apps](https://docs.otp.id/guides/whatsapp-inbound.md): Use the whatsapp_inbound channel so users tap a deep-link to send a pre-filled WhatsApp message. No manual code typing required on your UI. - [OTP.ID: Multi-Channel OTP Delivery & Verification API](https://docs.otp.id/introduction.md): Learn what OTP.ID is, how the API works, and what you can build with multi-channel OTP delivery over WhatsApp, SMS, Email, and more. - [OTP.ID Quickstart: Send and Verify Your First OTP Code](https://docs.otp.id/quickstart.md): Send and verify your first OTP in under 5 minutes using the OTP.ID REST API. Covers API keys, POST /v3/request, POST /v3/verify, and status polling. - [OTP.ID API Error Codes: All 14 Codes and How to Handle Them](https://docs.otp.id/reference/error-codes.md): Complete reference for all 14 OTP.ID API error codes with HTTP statuses, causes, example responses, and resolution steps for each code. - [OTP.ID API Rate Limits: Global and Per-Destination Policies](https://docs.otp.id/reference/rate-limits.md): OTP.ID enforces a global 20 req/s limit per API key and per-destination limits of 5 OTPs per 10 minutes and 10 per hour. Learn how to handle both. - [OTP.ID API Response Format: JSON Envelope Structure Guide](https://docs.otp.id/reference/response-format.md): Every OTP.ID API response uses a consistent JSON envelope with success, data, and error fields. Learn the structure and how to parse responses.