The Pixabits REST API lets you integrate SMS, WhatsApp, Voice, Email, RCS, VAS, Network, and Billing capabilities into your application. All requests use JSON and require an API key.
curl -X POST https://api.pixabits.ai/v2/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+919876543210","body":"Hello from Pixabits!","sender":"PIXABT"}'All API requests require a Bearer token in the Authorization header. Tokens are scoped to your organization and can be rotated at any time.
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
/v2/sms/sendv2Send a single SMS (OTP, transactional, or promotional)
{
"to": "+919876543210",
"body": "Your OTP is 482901",
"sender": "PIXABT",
"type": "otp"
}{
"message_id": "msg_abc123",
"status": "queued",
"credits_used": 0.15
}curl -X POST https://api.pixabits.ai/v2/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+919876543210","body":"Your OTP is 482901","sender":"PIXABT"}'/v2/sms/bulkv2Batch send up to 50,000 SMS in a single API call
{
"messages": [
{ "to": "+919876543210", "body": "Hello!" },
{ "to": "+919876543211", "body": "Hello!" }
],
"sender": "PIXABT"
}{
"batch_id": "batch_xyz789",
"total": 2,
"status": "processing"
}/v2/otp/sendv2Send a 6-digit OTP via SMS or email
{
"to": "+919876543210",
"channel": "sms",
"length": 6,
"expiry": 300
}{
"request_id": "otp_abc",
"status": "sent",
"expires_at": "2026-03-21T10:05:00Z"
}/v2/otp/verifyv2Verify a submitted OTP code
{
"request_id": "otp_abc",
"code": "482901"
}{
"valid": true,
"status": "verified"
}/v2/sms/analyticsv2Fetch SMS delivery analytics and reports
/v1/wa/messagesv1Send text, image, video, document, or location message
{
"to": "+919876543210",
"type": "text",
"text": { "body": "Hello from Pixabits!" }
}{
"message_id": "wamid_abc",
"status": "sent"
}curl -X POST https://api.pixabits.ai/v1/wa/messages \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+919876543210","type":"text","text":{"body":"Hello!"}}'/v1/wa/messages/templatev1Send a pre-approved template message with parameters
/v1/wa/broadcastsv1Bulk send WhatsApp messages to a segment or list
/v1/wa/media/{mediaId}v1Download media received from WhatsApp users
/v2/voice/calls/initiatev2Initiate an outbound voice call with TTS or audio
{
"to": "+919876543210",
"caller_id": "+918000000000",
"tts_text": "Your OTP is 482901",
"language": "en-IN"
}{
"call_id": "call_xyz",
"status": "initiated",
"duration_limit": 120
}/v2/voice/ivrv2Deploy an IVR flow with DTMF input and call routing
/v2/voice/recordings/{callId}v2Retrieve call recording audio file
/v2/voice/ttsv2Convert text to speech audio in 10+ Indian languages
/v2/email/sendv2Send a transactional or marketing email
{
"to": "user@example.com",
"from": "noreply@company.com",
"subject": "Your Invoice #1234",
"html": "<h1>Invoice</h1><p>Amount: ₹5,000</p>"
}{
"message_id": "email_abc",
"status": "queued"
}/v2/email/send/bulkv2Batch send emails to up to 10,000 recipients
/v2/email/analyticsv2Fetch open rates, click rates, and bounce metrics
/v1/rcs/sendv1Send an RCS text or suggested reply message
/v1/rcs/send-rich-cardv1Send a rich card with image, title, and action buttons
/v1/rcs/send-carouselv1Send a carousel of up to 10 rich cards
/v1/vas/kyc/aadhaar-otpv1Initiate Aadhaar eKYC via OTP (UIDAI licensed)
/v1/vas/verify/panv1Verify PAN card details against NSDL/UTIITSL
/v1/vas/verify/gstinv1Verify GSTIN and fetch registered business details
/v1/vas/verify/bankv1Verify bank account via penny drop or IMPS
/v1/vas/fraud/scorev1Get real-time fraud risk score for a transaction
/v1/net/sim-swapv1Detect recent SIM swap events (CAMARA-compliant)
/v1/net/number-verifyv1Silent number verification without OTP (CAMARA)
/v1/net/device-locationv1Get approximate device location from carrier network
/v1/net/hlr/{msisdn}v1HLR lookup — check if a number is active and its operator
/v1/net/mnp/{msisdn}v1MNP lookup — check if a number has been ported
/v1/billing/walletv1Get current wallet balance, credits, and plan details
/v1/billing/wallet/recharge/initiatev1Initiate wallet recharge via Razorpay or Stripe
Webhooks deliver real-time event notifications to your server via HTTP POST. Configure your webhook URL in the Dashboard. Each event includes a JSON payload with event type, timestamp, and relevant data.
| Event | Channel | Description |
|---|---|---|
| sms.message.delivered | SMS | SMS delivered to handset |
| sms.message.failed | SMS | SMS delivery failed |
| sms.otp.verified | SMS | OTP code verified successfully |
| wa.message.delivered | WhatsApp message delivered | |
| wa.message.read | WhatsApp message read by recipient | |
| wa.message.received | Incoming WhatsApp message from user | |
| voice.call.answered | Voice | Outbound call answered |
| voice.call.completed | Voice | Call ended — duration and recording available |
| email.delivered | Email delivered to inbox | |
| email.opened | Email opened by recipient | |
| email.clicked | Link clicked in email body | |
| email.bounced | Email bounced (hard or soft) | |
| rcs.message.delivered | RCS | RCS message delivered to handset |
| rcs.message.read | RCS | RCS message read by recipient |
| rcs.fallback.triggered | RCS | Fallback to SMS triggered for RCS |
| push.delivered | Push | Push notification delivered to device |
| push.clicked | Push | User tapped on push notification |
| vas.verification.success | VAS | KYC/verification completed successfully |
| vas.verification.failed | VAS | Verification failed or rejected |
| net.sim-swap.detected | Network API | SIM swap event detected on number |
| net.number.verified | Network API | Silent number verification completed |
| aicam.campaign.completed | AiCAM | Campaign run completed with results |
| aicam.ab-test.winner | AiCAM | A/B test winner variant selected by AI |
| wallet.recharged | Billing | Wallet recharge payment confirmed |
| wallet.balance.low | Billing | Wallet balance below threshold |
{
"event": "sms.message.delivered",
"timestamp": "2026-03-21T10:05:00Z",
"data": {
"message_id": "msg_abc123",
"to": "+919876543210",
"status": "delivered",
"delivered_at": "2026-03-21T10:04:58Z"
}
}All API responses include a standard HTTP status code. Below are the codes you may encounter.
| Status | Code | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | CREATED | Resource created successfully |
| 400 | BAD_REQUEST | Invalid request body or parameters |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Insufficient permissions or plan restriction |
| 404 | NOT_FOUND | Resource not found |
| 409 | CONFLICT | Duplicate resource or conflicting state |
| 422 | VALIDATION_ERROR | Request body failed validation |
| 429 | RATE_LIMITED | Too many requests — retry after cooldown |
| 500 | INTERNAL_ERROR | Server error — contact support if persistent |
| 503 | SERVICE_UNAVAILABLE | Temporary outage — retry with backoff |
Rate limits are enforced per API key. When you exceed the limit, the API returns a 429 status with a Retry-After header indicating when to retry.
| Plan | Requests/sec | Burst | Daily Limit |
|---|---|---|---|
| Starter | 10 req/sec | 50 | 1,000 messages |
| Growth | 200 req/sec | 1,000 | Unlimited |
| Enterprise | 1,000 req/sec | 5,000 | Unlimited |
| Premium | 5,000+ req/sec | 10,000 | Unlimited |
Official SDKs for popular languages. Install via your package manager and start building in minutes.