Leads
Update Lead
Update an existing lead with optional checklist item updates
PUT
This endpoint updates an existing lead. Only the fields you include in the request body will be changed; omitted fields are left untouched. You can update lead-level fields (firstName, lastName, email, etc.) and/or checklist items by code. A single API_ACTIVITY action log is written for “Lead updated” with all updates grouped in the timeline.
Authentication
Requires thex-api-key header with a valid workspace API key.
Request Body
string
required
Omni lead ID of the lead to update.
string
Lead first name
string
Lead last name
string
Lead email address
string
Lead phone number (formatted or raw; stored in E.164 when possible)
string
Lead middle name
string
Business name
string
Business or lead website URL
string
External identifier for the lead (e.g. from a CRM system)
string
URL of the lead’s external portal, used instead of the default portal URL
string
IANA timezone identifier (e.g. “America/New_York”). If not provided and a
phone number is given, the timezone is inferred from the area code.
string
Who handles the lead: “agent” (AI) or “manual” (human)
boolean
When true, marks the lead as opted out and sets optOutAt to the current time.
When false, clears the opt-out status.
string
Set the lead’s status. Allowed values are
"COMPLETED", "IN_PROGRESS",
"NOT_INTERESTED", and "OPTED_OUT" (note that "REVIEW" is not settable
via the API). If didOptOut is also provided, it must agree with status.
When set to "COMPLETED", any still-incomplete required checklist items are
auto-skipped. When set to "NOT_INTERESTED", the lead is marked as not
interested and future follow-ups stop. When set to "OPTED_OUT", the lead is
opted out and in-flight outbound messages are cancelled. When set to
"IN_PROGRESS", auto-skips from a prior "COMPLETED" transition are cleared
and the lead is re-opened.boolean
When true, sets emailVerifiedAt to the current time (marks the lead’s email as
verified).
array
Array of checklist updates. Each item:
{ "code": string, "value"?: any, "status"?: "TODO" | "COMPLETED" | "INVALID" | "SKIPPED" | "NEEDS_REVIEW" }. Use the checklist item code from your workspace. Only the items you include will be updated.string[]
Set lead tags. Matching is case-insensitive, so “VIP” and “vip” are treated as
the same tag. Pass [] to remove all tags.
Response
boolean
Whether the request succeeded
string
The lead’s current status after the update. One of
"COMPLETED",
"IN_PROGRESS", "NOT_INTERESTED", "OPTED_OUT", or "REVIEW". "REVIEW"
is not settable via this endpoint but may appear in the response when the lead
has an unresolved escalation.object
The updated lead record. Includes: id, activitySummary, assigneeType,
businessName, createdAt, deletedAt, didOptOut, optOutAt, notInterestedAt,
email, emailVerifiedAt, externalLeadId, externalPortalLink, firstName,
lastName, phoneNumber, phoneVerifiedAt, source, tags, updatedAt, website.
array
Full checklist for the lead, grouped by checklist group. Each group includes
id, name, conditions, and an items array. Each item includes id,
checklistItemId, value, status, itemOverride, and a nested checklistItem with
code, label, fieldType, conditions, validationRules, etc. File-type items
include a documents array with presigned URLs.
array
Recent action logs for the lead (up to 100), enriched with tool info,
messages, and document presigned URLs.
array
Leads that share the same phone number or email (empty for test leads).
object
The most recent completed outbound message or follow-up action log, including
associated tool calls.
object
The next pending follow-up message action log, if any.
object
The next message awaiting approval, if any.