$99/mo · No Setup Fee Request a Demo Get Started
Get Started Request a Demo Client Login

LeadChime REST API

The LeadChime REST API lets you add, update and manage your contacts and the notes, tasks and tags attached to them from any external application — Zapier, Make, a CRM sync, or your own code. Every request is scoped to the workspace that owns the API key.

Base URL: https://leadchime.com/api/v1

Get an API key

Authentication

Every request carries an API key as two headers:

curl https://leadchime.com/api/v1/contacts \
  -H "LeadChime-Public-Key: lc_pk_…" \
  -H "LeadChime-Token: lc_sk_…"
  • Create keys under Settings → API keys in your LeadChime workspace. You get a public key and a secret token; the token is shown once.
  • Send both headers on every request. Keys are either read & write, or read only (GET requests only).
  • Basic-auth "API credentials" and front-end nonces described in some client libraries are not supported — use API keys.

Responses & errors

All responses are JSON. Successful calls carry "status": "success"; failures carry "status": "error" plus a machine-readable code.

Single item

{
  "status": "success",
  "item": { "ID": 1234, "data": { ... }, "meta": { ... } }
}

List

{
  "status": "success",
  "total_items": 99,
  "items": [ { "ID": 1234, ... }, ... ]
}

Error

{
  "status": "error",
  "code": "validation_failed",
  "message": "The request failed validation.",
  "errors": { "data.email": ["The data.email field must be a valid email address."] }
}

Conventions

  • Dates are ISO-8601 in UTC (e.g. 2026-09-03T14:05:25+00:00). Inputs accept ISO-8601, "YYYY-MM-DD HH:MM:SS", or UNIX timestamps.
  • total_items on lists is the full match count, independent of limit/offset.
  • POST and PATCH bodies may be a single object or a JSON array of objects to act on many at once.
  • Sending null (or an empty string) for a meta key removes it.
  • Phone numbers are normalized to E.164 (+1…) when they parse as a valid number.

Error codes

HTTPcodeMeaning
401missing_credentialsOne or both auth headers are missing.
401invalid_credentialsUnknown public key, wrong token, or the key was revoked / expired.
403read_only_keyA read-only key attempted a write.
403tenant_inactiveThe workspace is deactivated.
404not_foundNo such object in this workspace.
409contact_in_useDeleting a contact that has invoices, quotes or jobs. Pass force=true.
422validation_failedBody failed validation; see errors.
422invalid_filterA filter clause was not understood.
422invalid_metaA meta key is reserved or its value is invalid.
422invalid_parameterlimit/offset/order/orderby out of range.
422too_many_itemsA synchronous bulk operation matched too many contacts; use bg=true.
422refusing_unfiltered_deleteBulk delete without any filter; pass confirm_all=true to confirm.
429rate_limitedToo many requests for this key.
500server_errorSomething went wrong on our side.

Pagination & ordering

List endpoints accept limit (default 20, max 500), offset, order (ASC or DESC) and orderby. The response's total_items is the full count so you can page through everything.

curl "https://leadchime.com/api/v1/contacts?limit=50&offset=100&orderby=date_created&order=ASC" \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Filters

Filters are the most flexible way to select contacts. A filter is an array of groups; groups are OR-ed together and the clauses inside a group are AND-ed. Each clause is {"type", "compare", "value"}. With GET requests, JSON-encode the array and then base64-encode it into ?filters=…; with a JSON body you can pass the array directly.

[
  [
    { "type": "email", "compare": "ends_with", "value": "@example.com" },
    { "type": "tags", "compare": "has_any", "value": ["customer"] }
  ],
  [
    { "type": "optin_status", "compare": "in", "value": [2] }
  ]
]

Then, for a GET request: ?filters=<base64(json)>.

typecomparevalue
first_name, last_name, full_name, email, phone, address, service, source, messageequals, not_equals, contains, not_contains, starts_with, ends_with, empty, not_emptystring
meta (with "key")same as textstring
optin_statusequals, not_equals, in, not_inint or int[]
status (pipeline: new, contacted, quoted, won, lost)equals, not_equals, in, not_instring or string[]
ownerequals, in, not_in, empty, not_emptyuser id(s)
tagshas_any, has_all, has_nonetag ids and/or names
date_created, date_updated, date_optin_status_changedbefore, after, between, isdate, or [from, to] for between
is_marketable—"marketable": true|false
idin, not_inint[]

Contact meta

meta holds any key→value pairs you like. Keys are lower-cased. A few keys are "virtual" and map straight onto contact fields:

meta keyMaps to
primary_phoneThe contact's phone number.
addressStreet address.
serviceService they asked about.
messageTheir original request message.
sourceLead source label (website, google, referral, api, …).
pipeline_statusPipeline stage: new, contacted, quoted, won, lost.
deal_valueEstimated deal value (number).
referralWho referred them.
  • locale defaults to en_US. mobile_phone, country, region, city and birthday are always present in output (empty string when unset).
  • Data fields (email, first_name, last_name, optin_status, owner_id, …) belong in "data" and are rejected inside meta.

Opt-in statuses

optin_status is an integer. Marketable contacts can receive campaigns and follow-ups; is_marketable also requires that "do not contact" is off.

ValueStatusMarketable
1UnconfirmedYes
2ConfirmedYes
3UnsubscribedNo
4WeeklyYes
5MonthlyYes
6Hard bounceNo
7SpamNo
8ComplainedNo
9BlockedNo

Rate limits

120 requests per minute per API key.

  • Limits apply per API key. Exceeding them returns HTTP 429 with a Retry-After header.
  • Repeated failed authentication from one IP is throttled independently.

Contacts

Add, update, and manage your contacts remotely. Adding a contact whose email (or, failing that, phone) already exists updates that record instead of creating a duplicate.

The Contact object

{
  "ID": 1234,
  "data": {
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe",
    "full_name": "John Doe",
    "phone": "+17195551234",
    "user_id": 0,
    "owner_id": 1,
    "optin_status": 2,
    "date_created": "2026-09-03T14:05:25+00:00",
    "date_updated": "2026-09-03T14:05:25+00:00",
    "date_optin_status_changed": "2026-09-03T14:05:25+00:00"
  },
  "meta": {
    "locale": "en_US",
    "primary_phone": "+17195551234",
    "mobile_phone": "",
    "country": "US",
    "region": "CO",
    "city": "Colorado Springs",
    "birthday": "",
    "address": "123 Main St",
    "service": "Drain cleaning",
    "message": "",
    "source": "api",
    "pipeline_status": "new",
    "deal_value": 450,
    "referral": "",
    "custom_field": "abc"
  },
  "tags": [
    { "ID": 11, "data": { "tag_id": 11, "tag_slug": "customer", "tag_name": "Customer" } }
  ],
  "user": false,
  "is_marketable": true,
  "is_deliverable": true
}

GET/contacts

List contacts.

Parameters

filters
array
See Filters. JSON + base64 encoded when sent in the query string.
search
string
Matches first_name, last_name, full name, email and phone.
include
int[]
Only these contact IDs.
exclude
int[]
Never these contact IDs.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, date_created, date_updated, email, first_name, last_name, full_name, optin_status

Example request

curl "https://leadchime.com/api/v1/contacts?search=John&limit=20" \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{
  "status": "success",
  "total_items": 99,
  "items": [ { … see Contacts object } ]
}

POST/contacts

Add a contact (or many). Send one object to add a single contact, or an array of objects to add many at once. If the email (or phone) already exists in your workspace, that contact is updated instead. Responds 201 for a new contact and 200 for an updated one.

Parameters

data
object
first_name, last_name (or full_name), email, phone, optin_status, owner_id, date_created. At least one identifying field is required.
meta
object
Any key→value pairs; see Meta.
tags
int[]|string[]
Tag IDs and/or names. Names that don't exist are created.

Example request

curl -X POST https://leadchime.com/api/v1/contacts \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{
    "data": { "first_name": "John", "last_name": "Doe", "email": "[email protected]", "optin_status": 2 },
    "meta": { "custom_field": "abc", "primary_phone": "+1 719 555-1234" },
    "tags": ["Customer"]
  }'

Example response

{ "status": "success", "created": true, "item": { … see Contacts object } }

PATCH/contacts

Update many contacts. Two forms. (1) An array of items, each carrying an ID or a data.email to identify the contact — unknown contacts are not created. (2) A single object with a "query" to apply the same change to every matching contact.

Parameters

ID
int
(array form) Contact ID. Optional when data.email is given.
query
object
(bulk form) {filters, search, include, exclude} selecting contacts. An empty query matches everyone.
data
object
Fields to change.
meta
object
Meta keys to set; null removes.
add_tags
int[]|string[]
Tags to add (names are created).
remove_tags
int[]|string[]
Tags to remove.
bg
bool
(bulk form) Run as a background job; responds 202 with total_items. Required above 1000 matches.

Example request

curl -X PATCH https://leadchime.com/api/v1/contacts \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{
    "query": { "filters": [[{ "type": "source", "compare": "equals", "value": "website" }]] },
    "data": { "optin_status": 2 },
    "add_tags": ["website-lead"]
  }'

Example response

{ "status": "success", "total_items": 12, "items": [ { … see Contacts object } ] }

DELETE/contacts

Delete many contacts. Deletes every contact matching the filters/search (respecting limit/offset). Refuses to run without any filter unless confirm_all=true. Contacts with invoices, quotes or jobs are skipped unless force=true.

Parameters

filters
array
See Filters.
search
string
Search phrase.
limit / offset
int
Page of matches to delete.
bg
bool
Run as a background job (202).
force
bool
Also delete contacts that have billing history.
confirm_all
bool
Required when no filter is given.

Example request

curl -X DELETE https://leadchime.com/api/v1/contacts \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "search": "@spam-domain.com" }'

Example response

{ "status": "success", "total_items": 3, "items": [ { "ID": 1234, "data": {}, "meta": {} } ], "skipped": [] }

GET/contacts/:id

Retrieve a contact.

Example request

curl https://leadchime.com/api/v1/contacts/1234 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Contacts object } }

PATCH/contacts/:id

Update a contact.

Parameters

data
object
Fields to change.
meta
object
Meta keys to set; null removes.
add_tags
int[]|string[]
Tags to add.
remove_tags
int[]|string[]
Tags to remove.

Example request

curl -X PATCH https://leadchime.com/api/v1/contacts/1234 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "first_name": "Johnny" }, "meta": { "custom_field": "foo" }, "remove_tags": ["cold"] }'

Example response

{ "status": "success", "item": { … see Contacts object } }

DELETE/contacts/:id

Delete a contact.

Parameters

force
bool
Delete even if the contact has invoices, quotes or jobs (otherwise 409 contact_in_use).

Example request

curl -X DELETE https://leadchime.com/api/v1/contacts/1234 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

POST/contacts/:id/merge

Merge contacts. Merges the other contacts into :id. Quotes, invoices, jobs, appointments, messages, notes, tasks and tags all move to the surviving contact; the most recently updated non-empty value wins for each field; the others are removed.

Parameters

others
int[]
IDs of the contacts to fold into this one.

Example request

curl -X POST https://leadchime.com/api/v1/contacts/1234/merge \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "others": [11, 12] }'

Example response

{ "status": "success", "item": { … see Contacts object } }

Tags

Label contacts for segmenting, campaigns and reporting. Tag names are unique per workspace (matched case-insensitively by name or slug).

The Tag object

{
  "ID": 22,
  "data": {
    "tag_id": 22,
    "tag_slug": "customer",
    "tag_name": "Customer",
    "tag_description": "Paying customers",
    "show_as_preference": "0",
    "date_created": "2026-09-03T14:05:25+00:00"
  }
}

GET/tags

List tags.

Parameters

search
string
Matches tag_name, tag_description and tag_slug.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, tag_name, tag_slug, date_created

Example request

curl "https://leadchime.com/api/v1/tags?search=Customer" \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Tags object } ] }

POST/tags

Create a tag (or many). Send one {data} object or an array of them. An existing tag with the same name/slug is returned rather than duplicated.

Parameters

data
object
tag_name (required), tag_slug, tag_description, show_as_preference.

Example request

curl -X POST https://leadchime.com/api/v1/tags \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "tag_name": "Customer", "tag_description": "Paying customers" } }'

Example response

{ "status": "success", "item": { … see Tags object } }

GET/tags/:id

Retrieve a tag.

Example request

curl https://leadchime.com/api/v1/tags/22 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Tags object } }

PATCH/tags/:id

Update a tag.

Parameters

data
object
tag_name, tag_slug, tag_description, show_as_preference.

Example request

curl -X PATCH https://leadchime.com/api/v1/tags/22 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "tag_name": "VIP customer" } }'

Example response

{ "status": "success", "item": { … see Tags object } }

DELETE/tags/:id

Delete a tag. Removes the tag from every contact.

Example request

curl -X DELETE https://leadchime.com/api/v1/tags/22 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Notes

Timestamped notes on a contact. Notes created through the API are marked context "api" and record which key wrote them.

The Note object

{
  "ID": 501,
  "data": {
    "object_id": 1234,
    "object_type": "contact",
    "user_id": 0,
    "context": "api",
    "type": "call",
    "content": "Called and left a voicemail.",
    "timestamp": 1756908325,
    "date_created": "2026-09-03T14:05:25+00:00",
    "date_updated": "2026-09-03T14:05:25+00:00"
  }
}

GET/notes

List notes.

Parameters

object_type
string
Object the notes belong to. Only "contact" is supported today (default).
object_id
int
Only items attached to this object.
user_id
int
Only items created by / assigned to this team member.
type
string
Filter by type.
include
int[]
IDs to include (array or comma-separated).
exclude
int[]
IDs to exclude.
search
string
Search phrase.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, date_created, date_updated

Example request

curl "https://leadchime.com/api/v1/notes?object_id=1234" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 4, "items": [ { … see Notes object } ] }

POST/notes

Create a note (or many).

Parameters

data
object
object_id (required), object_type (contact), content (required), type (note, call, email, meeting, sms), user_id, timestamp.

Example request

curl -X POST https://leadchime.com/api/v1/notes \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "object_id": 1234, "type": "call", "content": "Called and left a voicemail." } }'

Example response

{ "status": "success", "item": { … see Notes object } }

PATCH/notes

Update many notes.

Parameters

[ { ID, data } ]
array
Each item needs the note ID and the fields to change.

Example request

curl -X PATCH https://leadchime.com/api/v1/notes \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '[ { "ID": 501, "data": { "content": "Updated text" } } ]'

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Notes object } ] }

DELETE/notes

Delete many notes. Deletes every note matching the list parameters. Refuses to run without a filter unless confirm_all=true.

Parameters

object_type
string
Object the notes belong to. Only "contact" is supported today (default).
object_id
int
Only items attached to this object.
user_id
int
Only items created by / assigned to this team member.
type
string
Filter by type.
include
int[]
IDs to include (array or comma-separated).
exclude
int[]
IDs to exclude.
search
string
Search phrase.

Example request

curl -X DELETE "https://leadchime.com/api/v1/notes?object_id=1234&type=sms" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 2, "deleted": [501, 502] }

GET/notes/:id

Retrieve a note.

Example request

curl https://leadchime.com/api/v1/notes/501 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Notes object } }

PATCH/notes/:id

Update a note.

Parameters

data
object
content, type, context, user_id, timestamp, object_id.

Example request

curl -X PATCH https://leadchime.com/api/v1/notes/501 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "content": "Updated text" } }'

Example response

{ "status": "success", "item": { … see Notes object } }

DELETE/notes/:id

Delete a note.

Example request

curl -X DELETE https://leadchime.com/api/v1/notes/501 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Tasks

To-dos attached to a contact, optionally assigned to a team member. A task is complete when date_completed is set.

The Task object

{
  "ID": 77,
  "data": {
    "object_id": 1234,
    "object_type": "contact",
    "user_id": 3,
    "context": "api",
    "type": "task",
    "summary": "Call this contact",
    "content": "Ask whether they still want the estimate.",
    "timestamp": 1756908325,
    "date_created": "2026-09-03T14:05:25+00:00",
    "date_completed": null,
    "due_date": "2026-09-10T00:00:00+00:00"
  },
  "i18n": { "time_diff": "8 seconds ago", "due_in": "6 days from now", "due_date": "September 10, 2026 12:00 am", "completed_date": "" },
  "is_overdue": false,
  "is_complete": false,
  "due_timestamp": 1757462400,
  "associated": { "link": "https://leadchime.com/app/clients/1234", "name": "John Doe", "type": "contact" }
}

GET/tasks

List tasks.

Parameters

object_type
string
Object the notes belong to. Only "contact" is supported today (default).
object_id
int
Only items attached to this object.
user_id
int
Only items created by / assigned to this team member.
type
string
Filter by type.
include
int[]
IDs to include (array or comma-separated).
exclude
int[]
IDs to exclude.
search
string
Search phrase.
incomplete
bool
Only open tasks.
complete
bool
Only completed tasks.
mine
bool
Tasks assigned to the team member who created the API key.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, date_created, due_date, date_completed

Example request

curl "https://leadchime.com/api/v1/tasks?incomplete=1" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 2, "items": [ { … see Tasks object } ] }

POST/tasks

Create a task (or many).

Parameters

data
object
object_id (required), summary (required), content, type (task, call, email, meeting), user_id (assignee), due_date, date_completed.

Example request

curl -X POST https://leadchime.com/api/v1/tasks \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "object_id": 1234, "summary": "Call this contact", "due_date": "2026-09-10" } }'

Example response

{ "status": "success", "item": { … see Tasks object } }

PATCH/tasks

Update many tasks.

Parameters

[ { ID, data } ]
array
Each item needs the task ID and the fields to change. Set date_completed to complete; null to reopen.

Example request

curl -X PATCH https://leadchime.com/api/v1/tasks \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '[ { "ID": 77, "data": { "date_completed": "2026-09-04 09:00:00" } } ]'

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Tasks object } ] }

DELETE/tasks

Delete many tasks. Deletes every task matching the list parameters. Refuses to run without a filter unless confirm_all=true.

Parameters

object_type
string
Object the notes belong to. Only "contact" is supported today (default).
object_id
int
Only items attached to this object.
user_id
int
Only items created by / assigned to this team member.
type
string
Filter by type.
include
int[]
IDs to include (array or comma-separated).
exclude
int[]
IDs to exclude.
search
string
Search phrase.

Example request

curl -X DELETE "https://leadchime.com/api/v1/tasks?object_id=1234&complete=1" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "deleted": [77] }

GET/tasks/:id

Retrieve a task.

Example request

curl https://leadchime.com/api/v1/tasks/77 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Tasks object } }

PATCH/tasks/:id

Update a task.

Parameters

data
object
summary, content, type, user_id, due_date, date_completed, object_id.

Example request

curl -X PATCH https://leadchime.com/api/v1/tasks/77 \
  -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "date_completed": "2026-09-04 09:00:00" } }'

Example response

{ "status": "success", "item": { … see Tasks object } }

DELETE/tasks/:id

Delete a task.

Example request

curl -X DELETE https://leadchime.com/api/v1/tasks/77 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Deals

Track opportunities through a pipeline. Every workspace gets a default "Sales" pipeline whose stages mirror the contact pipeline (new → contacted → quoted → won / lost); moving a deal to a won or lost stage updates its primary contact. A deal may link to a quote — accepting that quote wins the deal.

The Deal object

{
  "ID": 99,
  "data": {
    "title": "Example Deal",
    "deal_value": 999,
    "close_probability": 51,
    "contact_id": 1234,
    "owner_id": 1,
    "stage_id": 7,
    "pipeline_id": 2,
    "quote_id": null,
    "priority": "normal",
    "status": "in_progress",
    "last_activity": 1756908325,
    "date_created": "2026-09-03T14:05:25+00:00",
    "date_closed": null,
    "projected_close_date": "2026-09-30"
  },
  "meta": { "product_interest": [["Option A", 15, 1]] },
  "locale": { "last_activity": "3 days ago" },
  "stage": { "ID": 7, "name": "Quoted", "slug": "quoted", "type": "open", "probability": 50 },
  "pipeline": { "ID": 2, "name": "Sales" },
  "related": { "contacts": [ { "ID": 1234, "full_name": "John Doe", "email": "[email protected]", "phone": "+17195551234" } ], "notes": [] }
}

GET/deals

List deals.

Parameters

status
string
in_progress (default), won, lost, or any.
contact_id
int
Deals whose primary contact is this contact, or that are linked to it via relationships.
owner_id
int
Filter by owner.
pipeline_id / stage_id
int
Filter by pipeline or stage.
priority
string
low, normal or high.
include / exclude
int[]
Deal IDs to include or exclude.
search
string
Matches title.
with_related
bool
Include related contacts and notes on each item.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, title, deal_value, date_created, last_activity, projected_close_date, date_closed

Example request

curl "https://leadchime.com/api/v1/deals?status=in_progress&limit=20" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 3, "items": [ { … see Deals object } ] }

POST/deals

Create a deal.

Parameters

data
object
title (required), deal_value, close_probability, contact_id, owner_id, pipeline_id (default pipeline if omitted), stage_id (first open stage if omitted), status, priority (low|normal|high or 0|1|2), projected_close_date, quote_id.
meta
object
Any key→value pairs.

Example request

curl -X POST https://leadchime.com/api/v1/deals -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "title": "Example Deal", "deal_value": 999, "contact_id": 1234, "priority": "high" } }'

Example response

{ "status": "success", "item": { … see Deals object } }

GET/deals/:id

Retrieve a deal.

Example request

curl https://leadchime.com/api/v1/deals/99 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Deals object } }

PATCH/deals/:id

Update a deal. Set stage_id to move the deal; or set status to won/lost/in_progress to jump to the first stage of that type.

Parameters

data
object
Any create field.
meta
object
Merged into existing meta; null removes a key.

Example request

curl -X PATCH https://leadchime.com/api/v1/deals/99 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "status": "won" } }'

Example response

{ "status": "success", "item": { … see Deals object } }

DELETE/deals/:id

Delete a deal.

Example request

curl -X DELETE https://leadchime.com/api/v1/deals/99 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Pipelines

Pipelines and their stages back the deals resource. Use these to discover stage IDs, or to create a second pipeline.

The Pipeline object

{
  "ID": 2,
  "data": { "name": "Sales", "is_default": true, "date_created": "2026-09-03T14:05:25+00:00" },
  "stages": [
    { "ID": 5, "name": "New", "slug": "new", "type": "open", "probability": 10, "sort_order": 0 },
    { "ID": 6, "name": "Contacted", "slug": "contacted", "type": "open", "probability": 25, "sort_order": 1 },
    { "ID": 7, "name": "Quoted", "slug": "quoted", "type": "open", "probability": 50, "sort_order": 2 },
    { "ID": 8, "name": "Won", "slug": "won", "type": "won", "probability": 100, "sort_order": 3 },
    { "ID": 9, "name": "Lost", "slug": "lost", "type": "lost", "probability": 0, "sort_order": 4 }
  ]
}

GET/pipelines

List pipelines.

Example request

curl https://leadchime.com/api/v1/pipelines -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Pipelines object } ] }

POST/pipelines

Create a pipeline.

Parameters

data
object
name (required), is_default.
stages
array
Optional list of {name, slug, probability, type: open|won|lost}. Defaults to the standard five stages.

Example request

curl -X POST https://leadchime.com/api/v1/pipelines -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "name": "Commercial" }, "stages": [ { "name": "Lead", "probability": 5 }, { "name": "Closed", "type": "won", "probability": 100 } ] }'

Example response

{ "status": "success", "item": { … see Pipelines object } }

GET/pipelines/:id

Retrieve a pipeline.

Example request

curl https://leadchime.com/api/v1/pipelines/2 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Pipelines object } }

POST/pipelines/:id/stages

Add a stage.

Parameters

data
object
name (required), slug, probability, type (open|won|lost), sort_order.

Example request

curl -X POST https://leadchime.com/api/v1/pipelines/2/stages -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "name": "Negotiation", "probability": 60 } }'

Example response

{ "status": "success", "stage_id": 12, "item": { … see Pipelines object } }

Activity

A timeline of what happened to each contact. LeadChime logs contact_created, missed_call, sms_sent, sms_received, quote_sent, quote_accepted, invoice_paid, appointment_completed and deal events automatically; you can log any custom activity_type of your own.

The Activity object

{
  "ID": 1234,
  "data": {
    "timestamp": 1756908325,
    "date": "2026-09-03T14:05:25+00:00",
    "activity_type": "purchased_product",
    "contact_id": 123,
    "funnel_id": null,
    "step_id": null,
    "email_id": null,
    "event_id": null,
    "value": 99.99,
    "referer": "https://example.com/foo/bar",
    "referer_hash": "abcdefg12345",
    "date_created": "2026-09-03T14:05:25+00:00"
  },
  "meta": { "product_name": "Shirt", "quantity": 4 }
}

GET/activity

List activities.

Parameters

activity_type
string
Only this type.
contact_id
int
Only this contact.
funnel_id / step_id / email_id / event_id
int
Flow, step, email template or event filters.
after / before
string
Date range on the activity timestamp. UNIX or datetime.
include / exclude
int[]
Activity IDs.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, timestamp, date_created (default: timestamp DESC)

Example request

curl "https://leadchime.com/api/v1/activity?contact_id=123&after=2026-09-01" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 8, "items": [ { … see Activity object } ] }

POST/activity

Create an activity (or many).

Parameters

data
object
activity_type (required, ≤40 chars), contact_id, timestamp, funnel_id, step_id, email_id, event_id, value, referer.
meta
object
Any key→value pairs.

Example request

curl -X POST https://leadchime.com/api/v1/activity -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "activity_type": "purchased_product", "contact_id": 123, "value": 99.99 }, "meta": { "product_name": "Shirt", "quantity": 4 } }'

Example response

{ "status": "success", "item": { … see Activity object } }

PATCH/activity

Update many activities.

Parameters

[ { ID, data, meta } ]
array
Each item needs the activity ID.

Example request

curl -X PATCH https://leadchime.com/api/v1/activity -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '[ { "ID": 1234, "data": { "value": 109.99 } } ]'

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Activity object } ] }

DELETE/activity

Delete many activities. Same filters as the list. Refuses to run without a filter unless confirm_all=true.

Example request

curl -X DELETE "https://leadchime.com/api/v1/activity?activity_type=purchased_product" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 2, "deleted": [1234, 1235] }

GET/activity/:id

Retrieve an activity.

Example request

curl https://leadchime.com/api/v1/activity/1234 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Activity object } }

PATCH/activity/:id

Update an activity.

Example request

curl -X PATCH https://leadchime.com/api/v1/activity/1234 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "value": 109.99 }, "meta": { "product_name": "Shirt XL" } }'

Example response

{ "status": "success", "item": { … see Activity object } }

DELETE/activity/:id

Delete an activity.

Example request

curl -X DELETE https://leadchime.com/api/v1/activity/1234 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Relationships

Associate objects with each other — for example, extra contacts on a deal. :type is any object route (contacts, deals, notes, tasks, tags). Pass either child_type/child_id or parent_type/parent_id. "company" is reserved and not available.

The Relationship object

{ "status": "success" }

GET/:type/:id/relationships

Fetch related objects.

Parameters

child_type
string
Return children of this type.
parent_type
string
Return parents of this type.

Example request

curl "https://leadchime.com/api/v1/deals/99/relationships?child_type=contact" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Contacts object } ] }

POST/:type/:id/relationships

Create a relationship.

Parameters

child_type + child_id
string + int
Add a child.
parent_type + parent_id
string + int
Add a parent.

Example request

curl -X POST https://leadchime.com/api/v1/deals/99/relationships -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "child_type": "contact", "child_id": 1234 }'

Example response

{ "status": "success" }

DELETE/:type/:id/relationships

Delete a relationship.

Example request

curl -X DELETE https://leadchime.com/api/v1/deals/99/relationships -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "child_type": "contact", "child_id": 1234 }'

Example response

{ "status": "success" }

Emails

Reusable emails you can send to a contact, use in a broadcast, or drop into a flow. Content supports merge tags: {{first_name}}, {{last_name}}, {{name}}, {{email}}, {{phone}}, {{address}}, {{service}}, {{business}}, {{business_phone}}, {{owner_name}}, {{owner_email}}, {{today}} and {{meta.any_key}}. Marketing emails only go to marketable contacts; transactional emails need just an address. Emails are sent from the LeadChime platform address — a from_email you supply becomes the Reply-To (unless custom senders are enabled for your account).

The Email object

{
  "ID": 30,
  "data": {
    "title": "Welcome",
    "subject": "Hi {{first_name}}",
    "pre_header": "",
    "content": "<p>Thanks for reaching out to {{business}}.</p>",
    "plain_text": "",
    "from_user": 0,
    "from_type": "default",
    "from_select": "default",
    "from_email": null,
    "from_name": null,
    "author": 1,
    "is_template": "0",
    "status": "ready",
    "message_type": "marketing",
    "last_updated": "2026-09-03T14:05:25+00:00",
    "date_created": "2026-09-03T14:05:25+00:00"
  },
  "meta": { "css": "", "blocks": "", "type": "html" },
  "campaigns": [22]
}

POST/emails/send

Send a composed email.

Parameters

to
array
Contact IDs and/or email addresses (max 100).
cc / bcc
string[]
Up to 20 addresses each.
from_email / from_name
string
Reply-To address and display name.
type
string
marketing (default) or transactional.
subject
string
Required.
content
string
HTML body. Required.
plain_text
string
Optional text alternative.

Example request

curl -X POST https://leadchime.com/api/v1/emails/send -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "to": ["[email protected]"], "subject": "Hey there!", "content": "<p>I am sending you an email from the API!</p>" }'

Example response

{ "status": "success", "queued": 1, "skipped": [] }

POST/emails/:id/send

Send an email to a contact.

Parameters

to
int|string
Contact ID or email address.

Example request

curl -X POST https://leadchime.com/api/v1/emails/30/send -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "to": 1234 }'

Example response

{ "status": "success", "queued": true, "to": "[email protected]", "contact_id": 1234 }

GET/emails

List emails.

Parameters

search
string
Matches title, subject and content.
status / message_type / is_template
string
Filters.
campaign
int
Only emails filed under this campaign.
include / exclude
int[]
Email IDs.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, title, date_created, last_updated

Example request

curl "https://leadchime.com/api/v1/emails?search=welcome" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Emails object } ] }

POST/emails

Create an email (or many).

Parameters

data
object
title, subject, content (required); plain_text, pre_header, from_type (default|owner|user|custom), from_user, from_email, from_name, message_type (marketing|transactional), status (draft|ready), is_template.
campaigns
int[]
Campaign (category) IDs to file it under.
meta
object
css, blocks, type, or anything else.

Example request

curl -X POST https://leadchime.com/api/v1/emails -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "title": "Welcome", "subject": "Hi {{first_name}}", "content": "<p>Thanks for reaching out to {{business}}.</p>", "status": "ready" } }'

Example response

{ "status": "success", "item": { … see Emails object } }

PATCH/emails

Update many emails.

Parameters

[ { ID, data, meta, campaigns } ]
array
Each item needs the email ID.

Example request

curl -X PATCH https://leadchime.com/api/v1/emails -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '[ { "ID": 30, "data": { "status": "ready" } } ]'

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Emails object } ] }

DELETE/emails

Delete many emails. Same filters as the list. Refuses to run without a filter unless confirm_all=true.

Example request

curl -X DELETE "https://leadchime.com/api/v1/emails?status=draft" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 2, "deleted": [31, 32] }

GET/emails/:id

Retrieve an email.

Example request

curl https://leadchime.com/api/v1/emails/30 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Emails object } }

PATCH/emails/:id

Update an email.

Example request

curl -X PATCH https://leadchime.com/api/v1/emails/30 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "subject": "Welcome aboard" }, "campaigns": [22] }'

Example response

{ "status": "success", "item": { … see Emails object } }

DELETE/emails/:id

Delete an email.

Example request

curl -X DELETE https://leadchime.com/api/v1/emails/30 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Broadcasts

One-off email or SMS sends to a filtered audience — the same thing as the Clients → Campaigns page in your workspace. Email broadcasts reference an Email by object_id; SMS broadcasts carry the message in body. Statuses: scheduled, sending, sent, cancelled, failed. Open/click tracking is not available in v1.

The Broadcast object

{
  "ID": 33,
  "data": {
    "object_type": "email",
    "object_id": 30,
    "name": "Welcome",
    "subject": "Hi {{first_name}}",
    "scheduled_by": 1,
    "send_time": 1757516400,
    "status": "sent",
    "date_scheduled": "2026-09-10T15:00:00+00:00",
    "date_created": "2026-09-03T14:05:25+00:00",
    "started_at": "2026-09-10T15:00:03+00:00",
    "completed_at": "2026-09-10T15:00:41+00:00",
    "cancelled_at": null,
    "send_in_local_time": false,
    "batching": false,
    "batch_amount": null,
    "batch_interval": null,
    "batch_interval_length": null,
    "segment_type": "fixed"
  },
  "meta": {
    "query": { "filters": [[{ "type": "is_marketable", "marketable": true }]] },
    "audience_filter": {},
    "total_contacts": 120,
    "num_scheduled": 120,
    "sent": 118,
    "failed": 0,
    "skipped": 2
  },
  "object": { "ID": 30, "title": "Welcome", "subject": "Hi {{first_name}}", "message_type": "marketing" },
  "campaigns": [22],
  "date_sent_pretty": "September 10, 2026 3:00 pm"
}

GET/broadcasts

List broadcasts.

Parameters

object_type
string
email or sms.
object_id
int
Broadcasts of this email.
scheduled_by
int
User who scheduled it.
status
string
sent (default), scheduled, sending, cancelled, failed, or any.
after / before
string
Range on the send time.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, send_time, date_created, name

Example request

curl "https://leadchime.com/api/v1/broadcasts?object_type=email&status=sent&limit=10" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 10, "items": [ { … see Broadcasts object } ] }

POST/broadcasts

Schedule a broadcast.

Parameters

object_type
string
email (default) or sms.
object_id
int
The Email to send (email broadcasts).
body
string
Message text (SMS broadcasts). Merge tags allowed.
query
object
{filters, search} selecting the audience (see Filters). Empty = every marketable contact with the channel.
date + time
string
YYYY-MM-DD and HH:MM in your workspace timezone. Not needed with send_now.
send_now
bool
Start sending immediately.
send_in_local_time
bool
Hold each contact until the scheduled wall-clock time in their meta.timezone (best effort).
batching / batch_amount / batch_interval / batch_interval_length
mixed
Send in batches of batch_amount every batch_interval minutes|hours|days.
campaigns
int[]
Campaign (category) IDs to file it under.
name / segment_type
string
Optional label; fixed or dynamic (informational).

Example request

curl -X POST https://leadchime.com/api/v1/broadcasts -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "object_type": "email", "object_id": 30, "query": { "filters": [[{ "type": "is_marketable", "marketable": true }]] }, "date": "2026-09-10", "time": "15:00" }'

Example response

{ "status": "success", "estimated_recipients": 120, "item": { … see Broadcasts object } }

GET/broadcasts/archive

List broadcast archive. Sent email broadcasts filed under a public campaign, with their content.

Parameters

campaign
int|string
Campaign ID or slug.
per_page / page
int
Defaults 10 / 1.
search
string
Matches name, subject and body.

Example request

curl "https://leadchime.com/api/v1/broadcasts/archive?campaign=nurture" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 4, "total_pages": 1, "page": 1, "per_page": 10, "items": [ { … see Broadcasts object } ] }

GET/broadcasts/:id

Retrieve a broadcast.

Example request

curl https://leadchime.com/api/v1/broadcasts/33 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Broadcasts object } }

GET/broadcasts/:id/report

Retrieve broadcast report.

Example request

curl https://leadchime.com/api/v1/broadcasts/33/report -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "report": { "id": 33, "status": "sent", "total": 120, "sent": 118, "failed": 0, "skipped": 2, "waiting": 0, "sent_percent": 98.3, "opened": 0, "clicked": 0, "unsubscribed": 0 } }

POST/broadcasts/:id

Cancel a broadcast. Stops a scheduled or in-progress broadcast; pending recipients are skipped. 409 once it has finished.

Example request

curl -X POST https://leadchime.com/api/v1/broadcasts/33 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Broadcasts object } }

Campaigns

Named categories that file emails and broadcasts together (for example "Nurture" or "Monthly newsletter"). Public campaigns power the broadcast archive. Note: the Campaigns page inside your workspace corresponds to Broadcasts in this API.

The Campaign object

{
  "ID": 22,
  "data": {
    "ID": 22,
    "slug": "nurture",
    "name": "Nurture",
    "description": "Emails sent to nurture leads.",
    "visibility": "public",
    "date_created": "2026-09-03T14:05:25+00:00",
    "last_updated": "2026-09-03T14:05:25+00:00"
  },
  "counts": { "emails": 3, "broadcasts": 1 }
}

GET/campaigns

List campaigns.

Parameters

search
string
Matches name, description and slug.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

orderby accepts: ID, name, slug, date_created

Example request

curl "https://leadchime.com/api/v1/campaigns?search=Nurture" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Campaigns object } ] }

POST/campaigns

Create a campaign (or many).

Parameters

data
object
name (required), slug, description, visibility (public|private).

Example request

curl -X POST https://leadchime.com/api/v1/campaigns -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "name": "Nurture", "description": "Emails sent to nurture leads.", "visibility": "public" } }'

Example response

{ "status": "success", "item": { … see Campaigns object } }

GET/campaigns/archive

List campaigns archive.

Parameters

per_page / page
int
Defaults 10 / 1.
search
string
Matches name and description.

Example request

curl https://leadchime.com/api/v1/campaigns/archive -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 3, "total_pages": 1, "page": 1, "per_page": 10, "items": [ { … see Campaigns object } ] }

GET/campaigns/:id

Retrieve a campaign.

Example request

curl https://leadchime.com/api/v1/campaigns/22 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Campaigns object } }

PATCH/campaigns/:id

Update a campaign.

Example request

curl -X PATCH https://leadchime.com/api/v1/campaigns/22 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "name": "Nurture-1", "slug": "nurture-1" } }'

Example response

{ "status": "success", "item": { … see Campaigns object } }

DELETE/campaigns/:id

Delete a campaign.

Example request

curl -X DELETE https://leadchime.com/api/v1/campaigns/22 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

Flows

Automations that walk a contact through steps: delay, send_email, send_sms, apply_tag, remove_tag, create_task, update_contact, webhook. Flows are created and managed through this API (there is no workspace UI yet). A contact can only be live in a flow once at a time; steps run every minute.

The Flow object

{
  "ID": 5,
  "data": { "name": "Nurture", "description": "", "status": "active", "date_created": "2026-09-03T14:05:25+00:00", "last_updated": "2026-09-03T14:05:25+00:00" },
  "meta": {},
  "steps": [
    { "ID": 10, "type": "apply_tag", "name": null, "order": 0, "config": { "tags": ["nurturing"] } },
    { "ID": 11, "type": "delay", "name": null, "order": 1, "config": { "amount": 1, "unit": "days" } },
    { "ID": 12, "type": "send_email", "name": null, "order": 2, "config": { "email_template_id": 30 } }
  ],
  "counts": { "active_enrollments": 12, "completed": 340 }
}

POST/funnels/:id/start

Add a contact (or many) to a flow. Single: {contact_id, step_id?} enrolls now and returns the enrollment. Bulk: {query, step_id?, now|date+time} enrolls every matching contact in the background.

Parameters

contact_id
int
Single-contact form.
query
object
Bulk form: {filters, search} (see Filters).
step_id
int
Start at this step (default: first step).
now / date + time
mixed
Bulk form: enroll immediately (default) or at a date/time in your timezone.

Example request

curl -X POST https://leadchime.com/api/v1/funnels/5/start -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "contact_id": 1234 }'

Example response

{ "status": "success", "already_enrolled": false, "item": { "ID": 900, "data": { "funnel_id": 5, "contact_id": 1234, "step_id": null, "status": "queued", "run_at": "2026-09-03T14:05:25+00:00" } } }

GET/funnels

List flows.

Parameters

status
string
active or inactive.
search
string
Matches name.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

Example request

curl https://leadchime.com/api/v1/funnels -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 1, "items": [ { … see Flows object } ] }

POST/funnels

Create a flow.

Parameters

data
object
name (required), description, status (active|inactive; default inactive).
steps
array
Ordered list of {type, name?, config}. Configs: delay {amount, unit: minutes|hours|days, at_time?: "HH:MM"}; send_email {email_template_id}; send_sms {body}; apply_tag/remove_tag {tags: names[] | tag_ids: ints[]}; create_task {summary, content?, due_in_days?, owner_id?, type?}; update_contact {status?, optin_status?, meta?}; webhook {url (https), method?: POST|GET, headers?}.

Example request

curl -X POST https://leadchime.com/api/v1/funnels -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "name": "Nurture", "status": "active" }, "steps": [ { "type": "apply_tag", "config": { "tags": ["nurturing"] } }, { "type": "delay", "config": { "amount": 1, "unit": "days" } }, { "type": "send_email", "config": { "email_template_id": 30 } } ] }'

Example response

{ "status": "success", "item": { … see Flows object } }

GET/funnels/:id

Retrieve a flow.

Example request

curl https://leadchime.com/api/v1/funnels/5 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { … see Flows object } }

PATCH/funnels/:id

Update a flow. Passing steps replaces the whole step list; contacts waiting on a removed step restart at the first step.

Example request

curl -X PATCH https://leadchime.com/api/v1/funnels/5 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…" \
  -H 'Content-Type: application/json' \
  -d '{ "data": { "status": "inactive" } }'

Example response

{ "status": "success", "item": { … see Flows object } }

DELETE/funnels/:id

Delete a flow. Cancels live enrollments.

Example request

curl -X DELETE https://leadchime.com/api/v1/funnels/5 -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success" }

GET/funnels/:id/enrollments

List enrollments.

Parameters

status
string
queued, active, waiting, complete, cancelled, failed.
contact_id
int
Only this contact.
limit
int
Number of items to return. Default 20, max 500.
offset
int
Number of items to skip. Default 0.
order
string
ASC or DESC. Default DESC.
orderby
string
Column to order by. Default ID.

Example request

curl "https://leadchime.com/api/v1/funnels/5/enrollments?status=waiting" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 12, "items": [ { "ID": 900, "data": { "funnel_id": 5, "contact_id": 1234, "step_id": 11, "status": "waiting", "run_at": "2026-09-04T14:05:25+00:00" } } ] }

POST/funnels/:id/enrollments/:eid/cancel

Cancel an enrollment.

Example request

curl -X POST https://leadchime.com/api/v1/funnels/5/enrollments/900/cancel -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "item": { "ID": 900, "data": { "status": "cancelled" } } }

Reports

Aggregate numbers over a date range (default: the last 30 days). Available reports: new_contacts, contacts_by_status, contacts_by_source, contacts_by_optin_status, won_revenue, conversion_rate, daily_new_contacts, broadcast_stats (params[broadcast_id]), deals_won, deals_lost, deals_pipeline_value, tasks_overdue, sms_sent, sms_received, email_sent, tag_counts, flow_enrollments. Each result carries value, breakdown and/or series depending on the report. Custom reports are reserved for a future release.

The Report object

{
  "name": "new_contacts",
  "after": "2026-08-04T00:00:00+00:00",
  "before": "2026-09-03T14:05:25+00:00",
  "value": 42,
  "breakdown": { "website": 30, "manual": 12 },
  "series": [ { "date": "2026-08-04", "count": 2 } ]
}

GET/reports

Fetch multiple reports.

Parameters

reports
string
Comma-separated report names. Required.
after / before
string
Date range (UNIX or datetime).
params
object
Report-specific inputs, e.g. params[broadcast_id]=33.

Example request

curl "https://leadchime.com/api/v1/reports?reports=new_contacts,won_revenue&after=2026-08-01&before=2026-09-01" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "reports": { "new_contacts": { … see Reports object }, "won_revenue": { ... } } }

GET/reports/:report

Fetch single report.

Example request

curl "https://leadchime.com/api/v1/reports/broadcast_stats?params[broadcast_id]=33" -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "report": { … see Reports object } }

GET/custom-reports

Fetch all custom reports. Reserved. Always returns an empty list.

Example request

curl https://leadchime.com/api/v1/custom-reports -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "success", "total_items": 0, "items": [] }

GET/custom-reports/:report

Fetch single custom report. Reserved. Always 404.

Example request

curl https://leadchime.com/api/v1/custom-reports/my-report -H "LeadChime-Public-Key: lc_pk_…" -H "LeadChime-Token: lc_sk_…"

Example response

{ "status": "error", "code": "not_found", "message": "Custom report \"my-report\" was not found." }