AutoUncle CoDriver

Read data

What became of a lead

GET /api/v1/leads/{id} takes the lead_id (led_…) or the correlation_id (crr_…) from the push. Scope: leads_write, leads_read or org_all.

{
  "id": "led_019a1b2c-3d4e-7f5a-8b6c-7d8e9f0a1b2c",
  "correlation_id": "crr_a1b2c3d4e5f6a7b8c9d0e1f2",
  "status": "processed",
  "test": false,
  "lead_source_id": "src_019535d9-3df7-79fb-b466-fa907fa17f9e",
  "opportunity_id": "opp_019535d9-3df7-79fb-b466-fa907fa17f9e",
  "external_reference": { "system": "my-crm", "id": "4711" },
  "received_at": "2026-10-23T09:41:00Z",
  "processed_at": "2026-10-23T09:41:07Z"
}

status is received (queued), processing, processed (it is on opportunity_id), rejected (not a lead: spam, a newsletter, an auto-reply) or failed (we are alerted). A lead you just pushed can take a few seconds to appear: a 404 lead_not_found right after the push means wait and retry.

Opportunities

An opportunity is a customer's case at the dealer. Scope: opportunities_read or org_all; it includes the customer's contact details.

  • GET /api/v1/opportunities/{id}
  • GET /api/v1/opportunities?external_reference_system=my-crm&external_reference_id=4711: the opportunity for your record.
  • GET /api/v1/opportunities?updated_since=2026-10-23T00:00:00Z: everything changed since a time, oldest change first. An opportunity's change time is the later of its updated_at and last_customer_activity_at; keep the latest change time you have seen and pass it next time.
  • GET /api/v1/opportunities/{id}/appointments

Each opportunity has its status (opened, closed with a closed_reason), handling_state (has a salesperson started on it), assigned_to, business_unit, customer, vehicles, intents and the partners' external_references. See the Opportunity schema in the reference.

Pagination

GET /api/v1/opportunities is cursor-paginated: pass next_cursor as cursor until has_more is false. The Link: <…>; rel="next" header carries the next page's URL. limit is 1 to 100 (default 25). The events feed pages differently (pass next_cursor as after, and limit defaults to 50; see Events feed), and an opportunity's appointments come in one response. A cursor never skips a record. A record that changes while you page through can show up again on a later page, so dedupe by its id.

View this page as Markdown