Developer Docs

Build on Top of Oravio

Integrate Oravio's AI agent into your product, sync data with your systems, and automate workflows using our REST API and webhooks.

Quick Start

Get your first API call working in under 5 minutes. You'll need an API key from your Oravio dashboard under Settings → Developer → API Keys.

1
Get your API key

Go to Dashboard → Settings → API Keys and create a new key. Copy it - it won't be shown again.

2
Make your first request

Send a GET /v1/conversations to verify your key is working.

3
Handle the response

All responses are JSON. Check the status field - 200 OK means you're good.

# List recent conversations
curl https://api.oravio.in/v1/conversations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
Response 200 OK
{
  "data": [
    {
      "id": "conv_01HXYZ123",
      "contact_phone": "+919876543210",
      "status": "active",
      "last_message": "Bhai, aapka salon Sunday ko open hai-,
      "last_message_at": "2026-05-10T08:23:41Z",
      "ai_handled": true
    }
  ],
  "meta": { "total": 248, "page": 1, "per_page": 20 }
}

Authentication

Oravio uses Bearer token authentication. Pass your API key in the Authorization header of every request.

Never expose your API key in client-side code or public repositories. Use environment variables.
HTTP Header
Authorization: Bearer orv_live_xxxxxxxxxxxxxxxxxxxx

API Key Types

PrefixTypeUse
orv_live_Live keyProduction - real conversations & data
orv_test_Test keySandbox - no real messages sent

Base URL & Versioning

Base URL
https://api.oravio.in/v1

The current API version is v1. We follow semantic versioning - breaking changes result in a new major version (v2), and old versions are supported for a minimum of 12 months after deprecation notice.

Request Format

PropertyValue
ProtocolHTTPS only
Content-Typeapplication/json
EncodingUTF-8
TimestampsISO 8601 (2026-05-10T08:23:41Z)

Errors & Status Codes

Oravio uses standard HTTP status codes. All error responses include a JSON body with a machine-readable code and a human-readable message.

StatusMeaning
200 OKRequest succeeded
201 CreatedResource created successfully
400 Bad RequestInvalid parameters - check the errors array
401 UnauthorizedMissing or invalid API key
403 ForbiddenKey valid but lacks permission for this action
404 Not FoundResource doesn't exist
429 Too Many RequestsRate limit exceeded - back off and retry
500 Server ErrorSomething went wrong on our end
Error Response Example 401
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key. Check your Authorization header."
  }
}

Messages

Send messages to any contact using your connected WhatsApp number. Supports text, templates, and media.

POST /v1/messages

Request Body

ParameterTypeRequiredDescription
tostringrequiredRecipient phone with country code (+919876543210)
typestringrequiredtext · template · image
textstringconditionalRequired when type is text
templateobjectconditionalTemplate name & variables when type is template
Send a text message
curl -X POST https://api.oravio.in/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+919876543210",
    "type": "text",
    "text": "Namaste! Aapki appointment kal 3 baje confirm ho gayi hai. ✅"
  }'

Webhooks

Oravio sends POST requests to your webhook URL whenever a key event happens - new message received, lead captured, booking created, or human escalation triggered.

Verify webhook authenticity by checking the X-Oravio-Signature header against an HMAC-SHA256 hash of the payload using your webhook secret.

Webhook Events

EventTriggered when
message.receivedCustomer sends a message to your WhatsApp
message.sentAI sends a reply to a customer
lead.capturedAI collects contact details from a conversation
booking.createdCustomer books an appointment via AI
conversation.escalatedAI hands off conversation to a human agent
conversation.resolvedConversation marked as resolved
Webhook Payload - lead.captured
{
  "event": "lead.captured",
  "timestamp": "2026-05-10T08:41:12Z",
  "data": {
    "lead_id": "lead_01HXYZ789",
    "name": "Rahul Verma",
    "phone": "+919876543210",
    "source": "whatsapp",
    "intent": "appointment_booking",
    "conversation_id": "conv_01HXYZ123"
  }
}

SDKs & Libraries

Official SDKs wrap the REST API with idiomatic interfaces. Community libraries are listed below - they are not officially maintained.

JavaScript / Node.js

npm install @oravio/sdk
View docs →

Python

pip install oravio
View docs →

PHP

composer require oravio/sdk
View docs →

Rate Limits

Rate limits are applied per API key. When exceeded, requests return 429 Too Many Requests. Use the response headers to track your current usage.

PlanRequests/minuteRequests/day
Starter605,000
Growth30050,000
EnterpriseCustomUnlimited

Rate Limit Headers

Response Headers
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1715334600

Changelog

May 2026 v1.4

Added broadcast endpoint for sending bulk template messages.

New webhook event: booking.cancelled.

Mar 2026 v1.3

Introduced knowledge_base API - programmatically update your AI's knowledge.

Python SDK v1.0 officially released.

Jan 2026 v1.2

Added contacts and leads endpoints.

Webhook signature verification introduced.

Start automating your WhatsApp sales with Oravio

Start automating your WhatsApp sales with Oravio

Start automating your WhatsApp sales with Oravio

Try Oravio free for 14 days or let our team show you how AI agents can grow your business.

Try Oravio free or let our team show you how we can grow your business in a demo.