API Documentation
Build with
Amezly API
Integrate Amezly's AI chatbot, voice agent, CRM, orders, and WhatsApp automation into your own apps, websites, and workflows using our clean REST API.
REST API
JSON
Bearer Auth
Webhooks
Node.js SDK
Python SDK
Rate: 100 req/min
Quick Start
Up and Running in 5 Minutes
Get your API key, make your first request, and start building.
1
Get Your API Key
Log into your Amezly dashboard → Settings → API Keys → Generate New Key. Copy your secret key — it won't be shown again.
2
Set Your Organisation ID
Every API request requires your
orgId found in Settings → General. This scopes all data to your business.3
Make Your First Request
Use Bearer authentication with your API key. Base URL:
https://api.amezly.com/v14
Handle the Response
All responses are JSON. Successful responses return
200/201. Errors return structured JSON with a message field.
JavaScript / cURL
Copy
// Install: npm install @amezly/sdk import Amezly from '@amezly/sdk'; const amezly = new Amezly({ apiKey: 'amz_live_your_api_key_here', orgId: 'org_abc123' }); // Send a message to the AI chatbot const response = await amezly.chat.send({ message: 'What products do you have?', sessionId: 'sess_xyz789', language: 'hi' // Hindi }); console.log(response); // { // reply: "Namaste! Hamare paas...", // sessionId: "sess_xyz789", // products: [...], // leadCaptured: false // } // cURL equivalent: // curl -X POST https://api.amezly.com/v1/chat/send \ // -H "Authorization: Bearer amz_live_..." \ // -H "Content-Type: application/json" \ // -d '{"orgId":"org_abc123","message":"Hello"}'
API Reference
All API Endpoints
Complete reference for every Amezly API endpoint. Base URL: https://api.amezly.com/v1
💬 Chat & Conversations
POST
/chat/send
Send a message to the AI chatbot
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| orgId | string | Required | Your organisation ID |
| message | string | Required | The user's message text |
| sessionId | string | Optional | Conversation session ID (auto-generated if omitted) |
| language | string | Optional | Language code: en, hi, bn, ta, te (default: auto-detect) |
| visitorId | string | Optional | Unique visitor identifier for session continuity |
Response
{
"reply": "Namaste! Hamare paas 3 plans hain...",
"sessionId": "sess_abc123",
"products": [{ "id": "p1", "name": "Growth Plan", "price": 2999 }],
"leadCaptured": false,
"takenOver": false,
"confidence": 0.92
}
GET
/chat/sessions
List all chat sessions for your org
Auth Required
▶
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | number | Optional | Page number (default: 1) |
| limit | number | Optional | Results per page, max 100 (default: 20) |
| status | string | Optional | Filter: active, takenOver, closed |
| from | date | Optional | Start date filter (ISO 8601) |
Response
{
"sessions": [{ "id": "sess_abc", "status": "active", "messageCount": 8 }],
"total": 2847,
"page": 1,
"pages": 143
}
GET
/chat/sessions/:sessionId/messages
Get all messages in a session
Auth Required
▶
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| sessionId | string | Required | The session ID to fetch messages for |
Response
{
"messages": [
{ "role": "USER", "content": "Hello", "createdAt": "2026-06-15T09:30:00Z" },
{ "role": "ASSISTANT", "content": "Namaste!..." }
],
"sessionId": "sess_abc"
}
🎯 Leads
GET
/leads
List all captured leads
Auth Required
▶
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | hot, warm, cold, converted |
| source | string | Optional | chatbot, voice, whatsapp, email |
| from | date | Optional | Date range start |
| limit | number | Optional | Max 100 per page |
Response
{
"leads": [{
"id": "lead_xyz",
"name": "Priya Sharma",
"mobile": "+919876543210",
"source": "chatbot",
"status": "hot",
"capturedAt": "2026-06-15T10:00:00Z"
}],
"total": 384
}
POST
/leads
Manually create a lead
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Lead's full name |
| mobile | string | Required | Mobile number with country code |
| string | Optional | Email address | |
| source | string | Optional | Origin channel (default: api) |
| notes | string | Optional | Additional notes about the lead |
PUT
/leads/:leadId
Update lead status or details
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | hot, warm, cold, converted, lost |
| notes | string | Optional | Updated notes |
| assignedTo | string | Optional | Team member user ID |
📦 Orders
GET
/orders
List all orders with filters
Auth Required
▶
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | pending, processing, shipped, delivered, cancelled |
| from | date | Optional | Order date range start |
| to | date | Optional | Order date range end |
| minAmount | number | Optional | Minimum order amount (INR) |
PUT
/orders/:orderId/status
Update order status (triggers WhatsApp/email notification)
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | string | Required | New status: shipped, delivered, cancelled |
| trackingUrl | string | Optional | Tracking link sent to customer via WhatsApp |
| notify | boolean | Optional | Send WhatsApp + email notification (default: true) |
👥 Contacts (CRM)
GET
/contacts
List CRM contacts with filters
Auth Required
▶
Response Sample
{
"contacts": [{
"id": "c_xyz",
"name": "Ravi Kumar",
"mobile": "+919876543210",
"ltv": 12000,
"tags": ["repeat-buyer", "high-value"],
"lastOrderAt": "2026-06-10T00:00:00Z"
}]
}
POST
/contacts/:contactId/tag
Add or remove tags from a contact
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| add | string[] | Optional | Tags to add e.g. ["vip", "festival-sale"] |
| remove | string[] | Optional | Tags to remove |
📣 Campaigns
POST
/campaigns/whatsapp/send
Send a WhatsApp campaign to a segment
Auth Required
▶
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| templateId | string | Required | Approved MSG91 template ID |
| segment | object | Required | Filter: {tags, minLtv, lastOrderDays} |
| scheduledAt | datetime | Optional | Schedule for later (ISO 8601) |
| variables | object | Optional | Template variable values |
GET
/campaigns/:campaignId/stats
Get campaign open, click, conversion stats
Auth Required
▶
Response
{
"sent": 240,
"delivered": 238,
"opened": 163,
"clicked": 58,
"converted": 12,
"revenue": 28800,
"openRate": "68%"
}
📊 Analytics
GET
/analytics/overview
Get business overview metrics for a date range
Auth Required
▶
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| from | date | Required | Start date (ISO 8601) |
| to | date | Required | End date (ISO 8601) |
| metrics | string[] | Optional | Specific metrics: revenue,leads,conversations,orders |
Response
{
"revenue": 124000,
"orders": 317,
"leads": 384,
"conversations": 2847,
"conversionRate": "13.5%",
"topChannel": "chatbot"
}
SDKs
Official Client Libraries
Use our official SDKs for faster integration — typed, documented, and production-ready.
🟨
JavaScript / Node.js
Full-featured SDK for Node.js and browser environments. TypeScript types included. Works with Next.js, Express, and any JS framework.
npm install @amezly/sdk
🐍
Python
Python SDK with async support. Compatible with Django, FastAPI, Flask. Ideal for data pipelines, automation scripts, and backend integrations.
pip install amezly-python
🔗
REST / cURL
No SDK needed — use plain HTTP requests with any language (PHP, Ruby, Go, Java). Every endpoint works with standard Bearer token auth and JSON.
curl -H "Authorization: Bearer ..."
Webhooks
Real-Time Event Notifications
Subscribe to events in your Amezly account and receive instant POST requests to your server.
chat.message.received
New Chat Message
Fired when a visitor sends a message to the chatbot. Includes session ID, message, and visitor context.
lead.captured
Lead Captured
Fires when the chatbot or voice agent captures a qualified lead — includes name, mobile, email, and source channel.
order.status.changed
Order Status Updated
Fires when an order moves to a new status. Use this to trigger your own fulfilment workflows or 3PL integrations.
chat.takeover.requested
Live Chat Takeover
Fires when a visitor asks to speak to a human. Build custom mobile app alerts or Slack notifications on this event.
campaign.completed
Campaign Sent
Fires when a WhatsApp or email campaign finishes sending. Payload includes total sent, delivered, failed counts.
payment.received
Payment Received
Fires when a Razorpay payment is confirmed and linked to an order. Includes amount, order ID, and contact details.
Rate Limits
API Usage Limits
Limits vary by plan. All limits apply per API key per minute. Exceeded limits return HTTP 429.
| Plan | Requests / Min | Chat Messages / Day | Campaign Sends / Day | Webhooks |
|---|---|---|---|---|
| Starter | 30 req/min | 1,000 / day | 500 / day | 3 endpoints |
| Growth | 100 req/min | 5,000 / day | 5,000 / day | 10 endpoints |
| Enterprise | 1,000 req/min | Unlimited | Unlimited | Unlimited |
| Error code | HTTP 429 Too Many Requests — retry after X-RateLimit-Reset header value | |||
Ready to Start Building?
Get your API key from your Amezly dashboard and make your first request in under 5 minutes.