API Documentation

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/v1
4
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
ParameterTypeRequiredDescription
orgIdstringRequiredYour organisation ID
messagestringRequiredThe user's message text
sessionIdstringOptionalConversation session ID (auto-generated if omitted)
languagestringOptionalLanguage code: en, hi, bn, ta, te (default: auto-detect)
visitorIdstringOptionalUnique 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
ParameterTypeRequiredDescription
pagenumberOptionalPage number (default: 1)
limitnumberOptionalResults per page, max 100 (default: 20)
statusstringOptionalFilter: active, takenOver, closed
fromdateOptionalStart 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
ParameterTypeRequiredDescription
sessionIdstringRequiredThe 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
ParameterTypeRequiredDescription
statusstringOptionalhot, warm, cold, converted
sourcestringOptionalchatbot, voice, whatsapp, email
fromdateOptionalDate range start
limitnumberOptionalMax 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
ParameterTypeRequiredDescription
namestringRequiredLead's full name
mobilestringRequiredMobile number with country code
emailstringOptionalEmail address
sourcestringOptionalOrigin channel (default: api)
notesstringOptionalAdditional notes about the lead
PUT /leads/:leadId Update lead status or details Auth Required
Request Body
ParameterTypeRequiredDescription
statusstringOptionalhot, warm, cold, converted, lost
notesstringOptionalUpdated notes
assignedTostringOptionalTeam member user ID
📦 Orders
GET /orders List all orders with filters Auth Required
Query Parameters
ParameterTypeRequiredDescription
statusstringOptionalpending, processing, shipped, delivered, cancelled
fromdateOptionalOrder date range start
todateOptionalOrder date range end
minAmountnumberOptionalMinimum order amount (INR)
PUT /orders/:orderId/status Update order status (triggers WhatsApp/email notification) Auth Required
Request Body
ParameterTypeRequiredDescription
statusstringRequiredNew status: shipped, delivered, cancelled
trackingUrlstringOptionalTracking link sent to customer via WhatsApp
notifybooleanOptionalSend 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
ParameterTypeRequiredDescription
addstring[]OptionalTags to add e.g. ["vip", "festival-sale"]
removestring[]OptionalTags to remove
📣 Campaigns
POST /campaigns/whatsapp/send Send a WhatsApp campaign to a segment Auth Required
Request Body
ParameterTypeRequiredDescription
templateIdstringRequiredApproved MSG91 template ID
segmentobjectRequiredFilter: {tags, minLtv, lastOrderDays}
scheduledAtdatetimeOptionalSchedule for later (ISO 8601)
variablesobjectOptionalTemplate 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
ParameterTypeRequiredDescription
fromdateRequiredStart date (ISO 8601)
todateRequiredEnd date (ISO 8601)
metricsstring[]OptionalSpecific 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.

PlanRequests / MinChat Messages / DayCampaign Sends / DayWebhooks
Starter30 req/min1,000 / day500 / day3 endpoints
Growth100 req/min5,000 / day5,000 / day10 endpoints
Enterprise1,000 req/minUnlimitedUnlimitedUnlimited
Error codeHTTP 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.

Scroll to Top