Sign in

API reference / ZiloCRM

ZiloCRM

Leads, activities and deals.

Base URL https://api.zilomail.in

List leads#

GET/v1/crm/leads
crm.read

Newest first; the person's territory decides which.

Query

qstring
Up to 200 characters.
stagestring
Up to 30 characters.
limitinteger
How many to return (1–200). Default 50.
cursorstring
The next value from the previous page. Up to 500 characters.

Answer · 200 OK

dataarray of object
idstring
codestring
namestring
contactNamestring | null
phonestring | null
emailstring | null
sourcestring
stagestring
NEW, CONTACTED, QUALIFIED, PROPOSAL, WON or LOST.
lostReasonstring | null
expectedValuestring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
expectedCloseDatestring | null
nextFollowUpstring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
citystring | null
statestring | null
countrystring | null
notesstring | null
customerIdstring | null
Set once it became a customer.
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
nextstring | null
Pass as cursor for the next page; null on the last.
curl "https://api.zilomail.in/v1/crm/leads?limit=20" \
  -H "Authorization: Bearer $ZILO_TOKEN"
Answer · 200 OK
{
  "data": [
    {
      "id": "string",
      "code": "string",
      "name": "string",
      "contactName": "string",
      "phone": "string",
      "email": "string",
      "source": "string",
      "stage": "string",
      "lostReason": "string",
      "expectedValue": "string",
      "expectedCloseDate": "2026-10-17",
      "nextFollowUp": "2026-10-17",
      "owner": {
        "id": "string",
        "email": "string",
        "name": "string"
      },
      "city": "string",
      "state": "string",
      "country": "string",
      "notes": "string",
      "customerId": "string",
      "createdAt": "2026-10-17T09:30:00.000Z",
      "updatedAt": "2026-10-17T09:30:00.000Z"
    }
  ],
  "next": "string"
}
Try it

Sign in to call it as yourself.

Get a lead#

GET/v1/crm/leads/{id}
crm.readETag · If-Match

Path

idstringrequired
An id this API gave out. Up to 64 characters.

Answer · 200 OK

idstring
codestring
namestring
contactNamestring | null
phonestring | null
emailstring | null
sourcestring
stagestring
NEW, CONTACTED, QUALIFIED, PROPOSAL, WON or LOST.
lostReasonstring | null
expectedValuestring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
expectedCloseDatestring | null
nextFollowUpstring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
citystring | null
statestring | null
countrystring | null
notesstring | null
customerIdstring | null
Set once it became a customer.
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl "https://api.zilomail.in/v1/crm/leads/ID" \
  -H "Authorization: Bearer $ZILO_TOKEN"
Answer · 200 OK
{
  "id": "string",
  "code": "string",
  "name": "string",
  "contactName": "string",
  "phone": "string",
  "email": "string",
  "source": "string",
  "stage": "string",
  "lostReason": "string",
  "expectedValue": "string",
  "expectedCloseDate": "2026-10-17",
  "nextFollowUp": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "city": "string",
  "state": "string",
  "country": "string",
  "notes": "string",
  "customerId": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

Add a lead#

POST/v1/crm/leads
crm.writemay wait for approval (202)Idempotency-Key

Body

namestringrequired
Up to 200 characters.
contactNamestring
Up to 120 characters.
phonestring
Up to 30 characters.
emailstring
Up to 254 characters.
sourcestring
WEB, REFERRAL, WALK_IN, CALL, CAMPAIGN, EXHIBITION or OTHER. Up to 30 characters.
stagestring
Up to 30 characters.
lostReasonstring
Up to 500 characters.
expectedValuenumber
expectedCloseDatestring
A calendar date, YYYY-MM-DD.
nextFollowUpstring
A calendar date, YYYY-MM-DD.
ownerstring
A colleague: their ZiloOne user id or email address. Up to 320 characters.
citystring
Up to 100 characters.
statestring
Up to 100 characters.
countrystring
Up to 2 characters.
addressstring
Up to 500 characters.
notesstring
Up to 4000 characters.

Answer · 201 Created

idstring
codestring
namestring
contactNamestring | null
phonestring | null
emailstring | null
sourcestring
stagestring
NEW, CONTACTED, QUALIFIED, PROPOSAL, WON or LOST.
lostReasonstring | null
expectedValuestring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
expectedCloseDatestring | null
nextFollowUpstring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
citystring | null
statestring | null
countrystring | null
notesstring | null
customerIdstring | null
Set once it became a customer.
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.

Or 202 with the approval it waits for: see Approvals.

curl -X POST "https://api.zilomail.in/v1/crm/leads" \
  -H "Authorization: Bearer $ZILO_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Sharma Stores",
  "contactName": "Anil Sharma",
  "phone": "+91 98640 11223",
  "source": "WEB",
  "expectedValue": 45000,
  "nextFollowUp": "2026-10-20"
}'
Answer · 201 Created
{
  "id": "string",
  "code": "string",
  "name": "string",
  "contactName": "string",
  "phone": "string",
  "email": "string",
  "source": "string",
  "stage": "string",
  "lostReason": "string",
  "expectedValue": "string",
  "expectedCloseDate": "2026-10-17",
  "nextFollowUp": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "city": "string",
  "state": "string",
  "country": "string",
  "notes": "string",
  "customerId": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

Change a lead#

PATCH/v1/crm/leads/{id}
crm.writemay wait for approval (202)ETag · If-Match

Only the fields sent change (moving stage to LOST needs lostReason).

Path

idstringrequired
An id this API gave out. Up to 64 characters.

Body

namestring
Up to 200 characters.
contactNamestring
Up to 120 characters.
phonestring
Up to 30 characters.
emailstring
Up to 254 characters.
sourcestring
WEB, REFERRAL, WALK_IN, CALL, CAMPAIGN, EXHIBITION or OTHER. Up to 30 characters.
stagestring
Up to 30 characters.
lostReasonstring
Up to 500 characters.
expectedValuenumber
expectedCloseDatestring
A calendar date, YYYY-MM-DD.
nextFollowUpstring
A calendar date, YYYY-MM-DD.
ownerstring
A colleague: their ZiloOne user id or email address. Up to 320 characters.
citystring
Up to 100 characters.
statestring
Up to 100 characters.
countrystring
Up to 2 characters.
addressstring
Up to 500 characters.
notesstring
Up to 4000 characters.

Answer · 200 OK

idstring
codestring
namestring
contactNamestring | null
phonestring | null
emailstring | null
sourcestring
stagestring
NEW, CONTACTED, QUALIFIED, PROPOSAL, WON or LOST.
lostReasonstring | null
expectedValuestring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
expectedCloseDatestring | null
nextFollowUpstring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
citystring | null
statestring | null
countrystring | null
notesstring | null
customerIdstring | null
Set once it became a customer.
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.

Or 202 with the approval it waits for: see Approvals.

curl -X PATCH "https://api.zilomail.in/v1/crm/leads/ID" \
  -H "Authorization: Bearer $ZILO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
Answer · 200 OK
{
  "id": "string",
  "code": "string",
  "name": "string",
  "contactName": "string",
  "phone": "string",
  "email": "string",
  "source": "string",
  "stage": "string",
  "lostReason": "string",
  "expectedValue": "string",
  "expectedCloseDate": "2026-10-17",
  "nextFollowUp": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "city": "string",
  "state": "string",
  "country": "string",
  "notes": "string",
  "customerId": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

Log an activity#

POST/v1/crm/leads/{id}/activities
crm.writemay wait for approval (202)Idempotency-Key

A call, meeting, email or task on a lead. A planned one (not done, with due) becomes the lead's next follow-up.

Path

idstringrequired
An id this API gave out. Up to 64 characters.

Body

typeenumrequired
One of CALL, MEETING, VISIT, EMAIL, NOTE, TASK.
subjectstringrequired
Up to 200 characters.
detailsstring
Up to 4000 characters.
duestring
ISO date or date and time.
doneboolean
Default false.

Answer · 201 Created

oktrue

Or 202 with the approval it waits for: see Approvals.

curl -X POST "https://api.zilomail.in/v1/crm/leads/ID/activities" \
  -H "Authorization: Bearer $ZILO_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "CALL",
  "subject": "string"
}'
Answer · 201 Created
{
  "ok": true
}
Try it

Sign in to call it as yourself.

List deals#

GET/v1/crm/deals
crm.read

Query

stagestring
Up to 30 characters.
limitinteger
How many to return (1–200). Default 50.
cursorstring
The next value from the previous page. Up to 500 characters.

Answer · 200 OK

dataarray of object
idstring
codestring
namestring
stagestring
QUALIFY, PROPOSAL, NEGOTIATION, WON or LOST.
amountstring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
probabilityinteger
sourcestring
expectedCloseDatestring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
accountIdstring | null
leadIdstring | null
lostReasonstring | null
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
nextstring | null
Pass as cursor for the next page; null on the last.
curl "https://api.zilomail.in/v1/crm/deals?limit=20" \
  -H "Authorization: Bearer $ZILO_TOKEN"
Answer · 200 OK
{
  "data": [
    {
      "id": "string",
      "code": "string",
      "name": "string",
      "stage": "string",
      "amount": "string",
      "probability": 0,
      "source": "string",
      "expectedCloseDate": "2026-10-17",
      "owner": {
        "id": "string",
        "email": "string",
        "name": "string"
      },
      "accountId": "string",
      "leadId": "string",
      "lostReason": "string",
      "createdAt": "2026-10-17T09:30:00.000Z",
      "updatedAt": "2026-10-17T09:30:00.000Z"
    }
  ],
  "next": "string"
}
Try it

Sign in to call it as yourself.

Get a deal#

GET/v1/crm/deals/{id}
crm.readETag · If-Match

Path

idstringrequired
An id this API gave out. Up to 64 characters.

Answer · 200 OK

idstring
codestring
namestring
stagestring
QUALIFY, PROPOSAL, NEGOTIATION, WON or LOST.
amountstring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
probabilityinteger
sourcestring
expectedCloseDatestring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
accountIdstring | null
leadIdstring | null
lostReasonstring | null
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
curl "https://api.zilomail.in/v1/crm/deals/ID" \
  -H "Authorization: Bearer $ZILO_TOKEN"
Answer · 200 OK
{
  "id": "string",
  "code": "string",
  "name": "string",
  "stage": "string",
  "amount": "string",
  "probability": 0,
  "source": "string",
  "expectedCloseDate": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "accountId": "string",
  "leadId": "string",
  "lostReason": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

Add a deal#

POST/v1/crm/deals
crm.writemay wait for approval (202)Idempotency-Key

Body

namestringrequired
Up to 160 characters.
stagestring
Up to 30 characters.
amountnumber
probabilityinteger
sourcestring
Up to 30 characters.
expectedCloseDatestring
A calendar date, YYYY-MM-DD.
ownerstring
A colleague: their ZiloOne user id or email address. Up to 320 characters.
accountIdstring
lostReasonstring
Up to 500 characters.

Answer · 201 Created

idstring
codestring
namestring
stagestring
QUALIFY, PROPOSAL, NEGOTIATION, WON or LOST.
amountstring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
probabilityinteger
sourcestring
expectedCloseDatestring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
accountIdstring | null
leadIdstring | null
lostReasonstring | null
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.

Or 202 with the approval it waits for: see Approvals.

curl -X POST "https://api.zilomail.in/v1/crm/deals" \
  -H "Authorization: Bearer $ZILO_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string"
}'
Answer · 201 Created
{
  "id": "string",
  "code": "string",
  "name": "string",
  "stage": "string",
  "amount": "string",
  "probability": 0,
  "source": "string",
  "expectedCloseDate": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "accountId": "string",
  "leadId": "string",
  "lostReason": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

Change a deal#

PATCH/v1/crm/deals/{id}
crm.writemay wait for approval (202)ETag · If-Match

Only the fields sent change; its lines stay.

Path

idstringrequired
An id this API gave out. Up to 64 characters.

Body

namestring
Up to 160 characters.
stagestring
Up to 30 characters.
amountnumber
probabilityinteger
sourcestring
Up to 30 characters.
expectedCloseDatestring
A calendar date, YYYY-MM-DD.
ownerstring
A colleague: their ZiloOne user id or email address. Up to 320 characters.
accountIdstring
lostReasonstring
Up to 500 characters.

Answer · 200 OK

idstring
codestring
namestring
stagestring
QUALIFY, PROPOSAL, NEGOTIATION, WON or LOST.
amountstring
An amount as a string with its decimals, e.g. "1250.50" (never a float).
probabilityinteger
sourcestring
expectedCloseDatestring | null
ownerobject | null
idstring | null
Their ZiloOne user id.
emailstring | null
namestring
accountIdstring | null
leadIdstring | null
lostReasonstring | null
createdAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.
updatedAtstring
ISO 8601 date and time, UTC, e.g. 2026-10-17T09:30:00.000Z.

Or 202 with the approval it waits for: see Approvals.

curl -X PATCH "https://api.zilomail.in/v1/crm/deals/ID" \
  -H "Authorization: Bearer $ZILO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
Answer · 200 OK
{
  "id": "string",
  "code": "string",
  "name": "string",
  "stage": "string",
  "amount": "string",
  "probability": 0,
  "source": "string",
  "expectedCloseDate": "2026-10-17",
  "owner": {
    "id": "string",
    "email": "string",
    "name": "string"
  },
  "accountId": "string",
  "leadId": "string",
  "lostReason": "string",
  "createdAt": "2026-10-17T09:30:00.000Z",
  "updatedAt": "2026-10-17T09:30:00.000Z"
}
Try it

Sign in to call it as yourself.

ZiloCRM API · ZiloOne Developers