Skip to content

Meetings

Meetings are the calls Sonora has seen with your customers: from your calendar, your call recorder or your notetaker. Each one carries when it happened, who was invited, and a summary with next steps. Reading them needs a key with the meetings:read scope. Every field is in the API reference; this page covers how to use them.

Only customer meetings are readable. A meeting with no customer — a 1:1, an internal sync, a personal recording — never shows up through the API, by list or by id. Nor does a meeting that was deleted or archived in Sonora. Transcripts, join links and recordings are not part of the API.

Terminal window
curl "https://api.usesonora.com/v1/meetings?startAfter=2026-10-01T00:00:00Z&limit=50" \
-H "Authorization: Bearer sonora_sk_…"
{
"data": [
{
"id": "7f3a…",
"customer": { "id": "c1d2…", "name": "Acme" },
"title": "Q4 business review",
"startTime": "2026-10-14T15:00:00.000Z",
"endTime": "2026-10-14T15:45:00.000Z",
"durationSeconds": 2700,
"summary": "Acme wants to roll Sonora out to the support team in January; …",
"nextSteps": "Send the rollout plan by Friday. Book training for the support leads.",
"owner": { "name": "Olive Ortiz", "email": "olive@yourco.com" },
"attendees": [
{ "name": "Olive Ortiz", "email": "olive@yourco.com", "isOrganizer": true, "contactId": null },
{ "name": "Jane Doe", "email": "jane@acme.com", "isOrganizer": false, "contactId": "a9b8…" }
],
"createdAt": "2026-10-14T16:02:11.000Z",
"updatedAt": "2026-10-14T16:10:40.512Z",
"links": { "self": "https://api.usesonora.com/v1/meetings/7f3a…" }
}
],
"nextCursor": "MjAyNi0xMC0xNFQx…"
}

Meetings come most recent first. Narrow the list with:

Parameter
customerId One customer’s meetings, by Sonora id.
startAfter Meetings starting at or after this instant (ISO 8601 with an offset).
startBefore Meetings starting before this instant.

A meeting with no recorded start time is placed — and filtered — by when Sonora first saw it.

To list a customer’s meetings by the id your own system uses for the account, go through the customer:

Terminal window
curl "https://api.usesonora.com/v1/customers/001Ab00000XyZ12/meetings?idType=salesforce" \
-H "Authorization: Bearer sonora_sk_…"

idType works exactly as it does on GET /customers/{customerId}: sonora (the default), salesforce, hubspot, domain or custom_field:<key>. It takes startAfter, startBefore and the paging parameters too. A customer that doesn’t exist is 404 customer_not_found; one with no meetings is an empty page.

  • attendees are everyone invited, organizer first. contactId is the Sonora contact the attendee is, when Sonora matched one; it is null for your own team and for anyone it couldn’t match.
  • owner is who on your team ran the meeting, as your call recorder or calendar named them, or null when nothing did. Its email can be null when only a name came through.
  • durationSeconds is the length the recorder or calendar reported, or the gap between startTime and endTime when it reported none.
  • summary and nextSteps come from your call recorder or notetaker where it writes them, and otherwise from Sonora’s own read of the transcript. Either can be null — for a meeting that only just happened, or one with nothing to read — and fill in later; updatedAt moves when they do.

GET /meetings/{meetingId} returns one meeting in the same shape. A personal, deleted or archived meeting is 404 meeting_not_found, as an unknown id is.