Update one Lead
Updates standard Lead fields, customFields, and the Originator using a typed partial object. originatorId credits a different Team Member, logged as an Originator change with its own lead.updated event. No-op updates return changed=false and do not write audit rows, domain events, or timestamp churn. Required scope: leads:write.
Updates standard Lead fields, customFields, and the Originator using a typed partial object. originatorId credits a different Team Member, logged as an Originator change with its own lead.updated event. No-op updates return changed=false and do not write audit rows, domain events, or timestamp churn. Required scope: leads:write.
Update one Lead. Use an organization API key with leads:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.
Required scopes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| idrequired | path | string | Lead identifier returned by the Organization API. |
Request body
| Field | Type | Description |
|---|---|---|
| firstName | string | Optional unless marked required. |
| lastName | string | Optional unless marked required. |
| string | null | Optional unless marked required. | |
| phone | string | null | Optional unless marked required. |
| address | string | null | Optional unless marked required. |
| city | string | null | Optional unless marked required. |
| state | string | null | Optional unless marked required. |
| zipCode | string | null | Optional unless marked required. |
| sourceId | string | null | Optional unless marked required. |
| campaignId | string | null | Optional unless marked required. |
| salesTypeIds[] | array<string> | Optional unless marked required. |
| notes | string | null | Optional unless marked required. |
| status | NEW | CONTACTED | QUALIFIED | UNQUALIFIED | Optional unless marked required. |
| originatorId | string | Credits a different active or draft same-organization Team Member, and writes its own activity entry and updated event. An Originator cannot be cleared. Naming a deactivated Team Member is refused unless they are already the Originator. |
| customFields | object | Field Values keyed by savedIdentity from GET /api/v1/schema. |
{
"status": "QUALIFIED",
"customFields": {
"roofType": "metal"
}
}Responses
Updated Lead envelope with changed metadata
#/components/schemas/OrgApiResourceEnvelope
Validation or custom Field error
#/components/schemas/OrgApiError
Missing or invalid organization API key
#/components/schemas/OrgApiError
Organization billing access or an endpoint-specific business quota denied the request
#/components/schemas/OrgApiError
Missing required scope: leads:write
#/components/schemas/OrgApiError
Lead not found
#/components/schemas/OrgApiError
Rate limit exceeded
#/components/schemas/OrgApiError
Errors
Static examples
curl -X PATCH "$SOLAROS_BASE_URL/api/v1/leads/$SOLAROS_LEAD" \
-H "Authorization: Bearer $SOLAROS_API_KEY" \
-H "Content-Type: application/json" \
--data '{"status":"QUALIFIED","customFields":{"roofType":"metal"}}'