OTPsignal

OTPsignal · OTP API

One API for every OTP

Verify users over WhatsApp (25 dinar / msg), Gmail (15 dinar / msg), and Iraqi SIM — Asiacell, Korek, Zain (60 dinar / msg). Top up credits, send OTPs, and only pay for what you deliver.

Pricing

Simple per-message rates

Top up at least 75,000 dinar into one wallet. WhatsApp costs 25 dinar, Gmail costs 15 dinar, and SIM OTP (Asiacell, Korek, Zain) costs 60 dinar per message. Those three networks are one service — one message, any of them. Mix channels from the same wallet; you do not receive every total at once.

WhatsApp

WhatsApp

25 dinar

per verified message

  • · Instant delivery to WhatsApp
  • · 75,000 dinar covers up to 3,000 WhatsApp messages
  • · Deducted from your wallet balance
Gmail / Email

Gmail / Email

15 dinar

per verified message

  • · Works with Gmail and any email
  • · 75,000 dinar covers up to 5,000 Gmail / Email messages
  • · Deducted from your wallet balance
AsiacellKorekZain

SIM OTP

Asiacell · Korek · Zain

60 dinar

per verified message

  • · Asiacell, Korek, and Zain — one SIM service, one price
  • · 75,000 dinar covers up to 1,250 SIM messages
  • · Deducted from your wallet balance

Cost meter

What this wallet can send

Enter dinar. WhatsApp 25 dinar · Gmail 15 dinar · SIM (Asiacell, Korek, Zain) 60 dinar per message. Minimum purchase 75,000 dinar. Mix splits the same wallet across WhatsApp, Gmail, and SIM. The three SIM networks share one slice, not three.

You receive dinar wallet credit. Counts below are estimates only — each successful send deducts its unit price. Failed sends are not charged.

WhatsApp

WhatsApp

3,000

messages on 75,000 IQD

25 dinar per message

Gmail / Email

Gmail / Email

5,000

messages on 75,000 IQD

15 dinar per message

AsiacellKorekZain

SIM OTP

Asiacell · Korek · Zain

1,250

messages on 75,000 IQD

60 dinar per message

You pay

75,000 dinar

Platform

Data, flow, and use cases

Live stats from your OTP database, how send and verify work end to end, and real integration patterns teams run in production.

Live platform data

Real counts from your OTP database — messages sent, verification outcomes, and active workspaces on this instance.

OTPs sent

0

All time on this server

Verified

0

0% of completed attempts

WhatsApp

0

WhatsApp channel

Gmail

0

Gmail / email channel

SIM

0

Asiacell 0 · Korek 0 · Zain 0

Pending

0

Active users

0

Active API keys

0

How the system works

01

Authenticate

Every request sends Authorization: Bearer otp_live_… from your dashboard API key.

HEADER

02

Send OTP

POST /api/otp/send with recipient, channel (whatsapp | email | asia | korek | zain), and optional purpose. Balance is charged in IQD dinar per message.

POST /api/otp/send

03

Deliver code

WhatsApp, Gmail, or Iraqi SIM (Asiacell, Korek, Zain) delivers the code. Response includes request_id, cost, balance, and expires_in.

Response JSON

04

Verify OTP

POST /api/otp/verify with recipient, otp, and request_id. Status moves from pending → verified.

POST /api/otp/verify

API reference

POST/api/otp/send

Request

{ "recipient": "+1...", "channel": "whatsapp", "purpose": "login" }

Response

{ "success": true, "request_id": 42, "expires_in": 300, "cost_iqd": 25 }

POST/api/otp/verify

Request

{ "recipient": "+1...", "otp": "847291", "request_id": 42 }

Response

{ "success": true, "message": "OTP verified" }

GET/api/dashboard

Request

Session cookie (logged-in user)

Response

{ "balance_iqd": 3860, "keys": [...], "recent_otps": [...] }

Production use cases

Where teams deploy OTPsignal

Platform

Three steps to verified users

01

Create your workspace

Sign up with 0 dinar, request balance from admin, generate an API key, and choose WhatsApp, Gmail, or SIM (Asiacell, Korek, Zain).

02

Send an OTP

Hit our REST endpoint. WhatsApp 25 dinar, Gmail 15 dinar, SIM 60 dinar — deducted instantly.

03

Verify in your app

Confirm the code through the verify API and unlock login, checkout, or account recovery.

WhatsApp messaging on a phone

WhatsApp & support

Talk to us where your users already are

Chat with our team on WhatsApp for onboarding, integration help, or volume pricing.

Open WhatsApp chat

Integration

Connect in three API calls

Copy working send and verify examples below. Replace the API key with yours from the dashboard — WhatsApp, Gmail, and SIM channels use the same endpoints.

POST/api/otp/send

<?php
$apiKey = "otp_live_YOUR_API_KEY";
$url = "https://otpsignal.com/api/otp/send";

$payload = [
    "recipient" => "+9647515171795",
    "channel"   => "whatsapp",
    "purpose"   => "login",
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        "Authorization: Bearer " . $apiKey,
        "Content-Type: application/json",
        "Accept: application/json",
    ],
    CURLOPT_POSTFIELDS     => json_encode($payload),
    CURLOPT_TIMEOUT        => 30,
]);

$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = json_decode($response, true);
if ($code >= 400) {
    throw new Exception($data["error"] ?? "Send failed");
}

echo $data["request_id"] . " " . $data["cost_iqd"] . " " . $data["balance_iqd"];

Response

{
  "success": true,
  "request_id": 42,
  "channel": "whatsapp",
  "recipient": "+9647515171795",
  "cost_iqd": 25,
  "balance_iqd": 3825,
  "currency": "IQD",
  "expires_in": 300,
  "delivered_via": "whatsapp-web",
  "message": "OTP sent via WhatsApp"
}

Step 1

Get your API key

Create a workspace, request balance, then generate a key from the dashboard.

Step 2

Send an OTP

POST /api/otp/send with recipient, channel (whatsapp, email, asia, korek, or zain), and optional purpose. Same JSON from PHP, Node, Python, or any HTTP client.

Step 3

Verify the code

POST /api/otp/verify with recipient, otp, and request_id from the send response.

Contact

Need help integrating?

Share your stack and expected OTP volume. We will map the right channel mix and send API credentials the same day.