Documentation

Aozo CRM API

Leads, deals, contacts, tasks and pipeline analytics — the full REST surface behind crm.aozo.in.

Base URLhttps://crm.aozo.in/api
AuthBearer JWT or aozo_ API key
Formatapplication/json

Contacts

Companies and people your team is talking to.

MethodPathDescription
GET/contactsList contacts for an org (?orgId=)
POST/contactsCreate a contact
DELETE/contacts/:idDelete a contact

Create a contact

curl -X POST https://crm.aozo.in/api/contacts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "orgId": "org_123",
    "name": "Priya Sharma",
    "email": "priya@example.com",
    "phone": "+91 98765 43210",
    "company": "Acme Retail",
    "designation": "Procurement Lead",
    "type": "customer",
    "notes": "Met at trade fair"
  }'

Deals

The pipeline — one row per opportunity, moving through stages. Non-admin agents only see deals assigned to them.

MethodPathDescription
GET/dealsList deals (role-scoped)
POST/dealsCreate a deal
PUT/deals/:idUpdate a deal
DELETE/deals/:idDelete a deal

Create a deal

curl -X POST https://crm.aozo.in/api/deals \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "orgId": "org_123",
    "title": "Acme Retail — annual contract",
    "amount": 480000,
    "stage": "negotiation",
    "closeDate": "2026-09-30",
    "companyName": "Acme Retail",
    "contactEmail": "priya@example.com",
    "assignedToId": "user_45"
  }'

Leads

Top-of-funnel prospects, with automatic scoring and a webhook intake for external forms.

MethodPathDescription
GET/leadsList leads (role-scoped)
POST/leadsCreate a lead — auto-computes score & probability
POST/leads/webhookPublic intake endpoint — no auth header required
PUT/leads/:idUpdate a lead — recalculates score
GET/leads/:id/activitiesTimeline of activity on a lead
POST/leads/:id/activitiesAdd an activity note
POST/leads/:id/send-messageGenerate a WhatsApp/SMS deep link to the lead
DELETE/leads/:idDelete a lead
🔓 The webhook endpoint skips normal auth on purpose

POST /api/leads/webhook is built for Zapier, web forms and other external senders that can't do a Bearer/JWT handshake. Instead, authenticate with an x-api-key header, or simply pass orgId in the body.

curl -X POST https://crm.aozo.in/api/leads/webhook \
  -H "x-api-key: aozo_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "orgId": "org_123",
    "name": "Rahul Verma",
    "email": "rahul@example.com",
    "phone": "+91 90000 11122",
    "company": "Verma Traders",
    "value": 25000,
    "source": "website-form"
  }'

Tasks

MethodPathDescription
GET/tasksList tasks
POST/tasksCreate a task (title, dueDate, priority, assignedToId)
PUT/tasks/:idUpdate a task
DELETE/tasks/:idDelete a task

Analytics

MethodPathDescription
GET/analyticsDashboard summary — counts, pipeline value, won revenue, deals by stage
GET/analytics/leaderboardPer-agent leaderboard — won amount vs. target

Organization

Workspace settings, members and API keys. Most write actions require workspace ADMIN.

MethodPathDescription
GET/organizationList orgs you belong to (syncs from Central Auth first)
POST/organizationCreate an org (also registers it in Central Auth)
GET/organization/:idOrg details
PUT/organization/:idUpdate org profile — ADMIN only
GET/organization/:id/membersList members
POST/organization/:id/membersInvite a member — ADMIN only, seat-limited
GET/organization/:id/apikeysList API keys — ADMIN only
POST/organization/:id/apikeysGenerate a new API key — ADMIN only