Skip to main content
GET
/
v1
/
core
/
recordings
/
{id}
Get recording
curl --request GET \
  --url https://functions.siro.ai/api-externalApi/v1/core/recordings/{id} \
  --header 'Authorization: Bearer <token>'
{
  "id": "<string>",
  "organizationId": "<string>",
  "userId": "<string>",
  "title": "<string>",
  "durationInMilliseconds": 123,
  "latitude": 123,
  "longitude": 123,
  "createdAt": "<string>",
  "updatedAt": "<string>",
  "links": {
    "web": {
      "self": "<string>"
    }
  },
  "rootDataPurgedAt": "<string>",
  "isProcessingDone": true,
  "isEntityExtractionDone": true,
  "isSummaryDone": true
}
Returns a single recording by its Siro internal id. By default the response contains the recording’s core fields; opt into the enrichment blocks below to also pull CRM links, the AI summary, and entity extractions in the same request.

Enriching the response

The org-scoped recordings endpoints can optionally hydrate three extra blocks of data, each behind an opt-in query flag:
FlagAddsUse it to
showCrmLinkscrm — external IDs for the CRM records linked to the recordingMap a recording back to the appointment / account / contact in your CRM
showSummarysummary — the recording’s AI summary sectionsPull conversation summaries into your pipeline (e.g. post-call personalization)
showEntityExtractionsentityExtractions — extracted values and their CRM field mappingsWrite extracted fields back to your CRM
They are off by default and additive — omit them and the response is unchanged. Pass =true to enable. When showCrmLinks=true, crm contains the external IDs of the CRM records the recording is linked to. Every linked object is returned as a pair:
  • id — Siro’s internal ID for the object
  • externalId — that object’s ID in your CRM (use this to join)
FieldShapeCRM object
integrationConnectionIdstringThe Siro integration connection the links came from
usersarray of {id, externalId}CRM user(s) who own the recording (the rep)
engagement{id, externalId}The CRM engagement / appointment
opportunity{id, externalId}The opportunity
contactsarray of {id, externalId}Contact(s)
account{id, externalId}Account
lead{id, externalId}Lead
This is the same shape emitted by the integrations.recordingProcessed webhook, so pull-based polling and push-based webhooks give you identical CRM references.
crm is null when the recording has no confirmed CRM link yet. Because links can be established after a recording is created, poll the list endpoint with the updatedAt filters to pick up recordings as they become linked.
engagement (the appointment) is only populated when the recording is linked to a CRM-sourced engagement. Recordings linked only to a Siro-side calendar event return engagement: null while still returning account / contact. To map on the appointment ID, ensure your appointments sync to Siro as CRM engagements. Any field with no linked record is null.

summary

When showSummary=true, summary is the recording’s AI summary as an ordered array of sections:
FieldDescription
idSummary section ID
nameSection title (the prompt header)
contentGenerated summary text
Returns [] if the recording has no summary yet.

entityExtractions

When showEntityExtractions=true, entityExtractions is a flat list of the values extracted from the conversation, including the CRM field each maps to:
FieldDescription
nameThe extracted field name
valueThe extracted value
mappingsCRM target(s): [{ crmModelName, crmFieldName }] — which object and field to write value to
Only successfully completed extractions are included; in-progress or failed extractions are omitted. Returns [] if there are none. Use mappings to write each value to the corresponding field on the CRM record from the crm block.

Example

curl --request GET \
  --url 'https://functions.siro.ai/api-externalApi/v1/core/recordings/{id}?showCrmLinks=true&showSummary=true&showEntityExtractions=true' \
  --header 'Authorization: Bearer <organization-api-token>'
{
  "data": {
    "id": "1234-1234-1234-1234-1234",
    "organizationId": "000000000001234",
    "title": "Appointment to Win",
    "result": "WON",
    "createdAt": "2026-06-23T15:42:30.992Z",
    "updatedAt": "2026-06-23T15:47:05.438Z",
    "links": { "web": { "self": "https://app.siro.ai/#/recordings/1234-..." } },

    "crm": {
      "integrationConnectionId": "1234-1234-12345",
      "users":      [{ "id": "1234-...", "externalId": "22222" }],
      "engagement":  { "id": "1234-...", "externalId": "1111" },
      "contacts":   [{ "id": "1234-...", "externalId": "123" }],
      "account":     { "id": "1234-...", "externalId": "1234" },
      "opportunity": null,
      "lead": null
    },

    "summary": [
      { "id": "111111-...", "name": "Meeting Booked", "content": "Yes" }
    ],

    "entityExtractions": [
      {
        "name": "Tech Systems",
        "value": "None",
        "mappings": [{ "crmModelName": "Contact", "crmFieldName": "customer_notes" }]
      }
    ]
  }
}

Authorizations

Authorization
string
header
default:<organization-api-token>
required

Organization integration token from Siro admin (Person icon → API Tokens). Send Authorization: Bearer . This is not the OAuth access token used with api.siro.ai user-scoped endpoints.

Path Parameters

id
string
required

Response

200 - application/json

Get recording

id
string
required
organizationId
string
required
userId
string
required
title
string
required
durationInMilliseconds
number
required
latitude
number
required
longitude
number
required
result
enum<string>
required
Available options:
OPEN,
WON,
LOST
createdAt
string
required
updatedAt
string
required
rootDataPurgedAt
string | null
isProcessingDone
boolean
isEntityExtractionDone
boolean
isSummaryDone
boolean