Skip to main content
PATCH
/
api
/
v1
/
leads
/
{id}
Update a lead
curl --request PATCH \
  --url https://app.vorel.ai/api/v1/leads/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "email": "jsmith@example.com",
  "phone": "<string>",
  "intent": "<string>",
  "timeline": "<string>",
  "qualification_score": 50,
  "status": "new",
  "source": "<string>",
  "attributes": {}
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "attributes": {},
  "status": "new",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "name": "<string>",
  "email": "jsmith@example.com",
  "phone": "<string>",
  "intent": "<string>",
  "timeline": "<string>",
  "qualification_score": 50,
  "source": "<string>"
}

Documentation Index

Fetch the complete documentation index at: https://docs.vorel.ai/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Tenant-issued API key. Format: vapk_live_<48 hex chars> (60 chars total). Issue + manage at /settings/integrations/api-keys in the Vorel dashboard. Each key has a scope set (read, leads:write, appointments:write, offerings:write); endpoints requiring a write scope reject keys without it with a 403 envelope.

Path Parameters

id
string<uuid>
required

UUID of the lead to update.

Body

application/json

Partial-update body for PATCH /api/v1/leads/{id}. Must include at least one updatable field. Setting a field to null clears it; omitted fields are left untouched. attributes is shallow-MERGED into the existing JSONB; within the merge, a null attribute value DELETES that key. conversation_id and notes are intentionally NOT updatable.

name
string | null
Maximum string length: 200
email
string<email> | null
phone
string | null
Maximum string length: 32
intent
string | null
Maximum string length: 40
timeline
string | null
Maximum string length: 40
qualification_score
integer | null
Required range: 0 <= x <= 100
status
enum<string>
Available options:
new,
qualified,
booked,
converted,
lost
source
string | null
Maximum string length: 40
attributes
object

Response

Lead updated.

id
string<uuid>
required
conversation_id
string<uuid>
required
attributes
object
required

Vertical-specific JSONB. Real estate emits bedrooms/budget_min/area/etc.; salons emit preferred_stylist/service_history/etc.; clinics emit insurance_provider/symptoms_summary/etc. The shape is determined by the tenant's vertical pack — consult your operator setup for the keys to expect.

status
enum<string>
required
Available options:
new,
qualified,
booked,
converted,
lost
created_at
string<date-time>
required
updated_at
string<date-time>
required
name
string | null
email
string<email> | null
phone
string | null
intent
string | null
timeline
string | null
qualification_score
integer | null
Required range: 0 <= x <= 100
source
string | null