Docs menu

REST API

Records

Read accessible meetings, dialogs, insights, and original media URLs.

GET/v2/workspaces/{slug}/records

Record list search

Filter accessible records and sort them by recording time.

Parameters

  • slugRequiredstringpath
    Workspace slug
  • querystring | nullquery
    Text to search for in record titles or transcripts.
  • search_mode"all_fields" | "title_terms" | "transcript"queryDefault "all_fields"
    Set the search scope to one of all_fields, title_terms, or transcript.
  • user_idinteger | nullquery
    Return only records accessible to the specified user.
  • label_idsinteger[] | nullquery
    Label IDs to filter by.
  • label_filter_condition"and" | "or"queryDefault "and"
    Combine label_ids using and or or.
  • order"id" | "rec_date"queryDefault "id"
    Set the sort field to id or rec_date.
  • team_idinteger | nullquery
    Return only records linked to the specified team.
  • team_idsinteger[] | nullquery
    Return only records linked to one of the specified teams.
  • next_tokenstring | nullquery
    Token for retrieving the next page, or null when no page remains.
  • owner_user_idinteger | nullquery
    Return only records owned by the specified user.
  • owner_user_idsinteger[] | nullquery
    Return only records owned by one of the specified users.
  • record_sourcesRecordSource[] | nullquery
    Record source values to filter by.
  • start_datestring (date) | nullquery
    Start date of the record query period.
  • end_datestring (date) | nullquery
    End date of the record query period.
  • limitintegerqueryDefault 100
    Maximum number of items returned.

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • itemsRequiredV2RecordListItem[]
    Retrieved records.
  • idRequiredinteger
    Record identifier.
  • uuidstring | null
    Record UUID specified by the client.
  • titlestring | null
    Record title.
  • sourceRequiredRecordSource
    Record acquisition source.
  • statusRequiredRecordStatus
    Record processing status.
  • recorded_atRequiredstring (date-time)
    Date and time when the recording ended.
  • started_atRequiredstring (date-time)
    Date and time when recording started.
  • duration_msinteger | null
    Record duration in milliseconds.
  • scopeRequiredRecordScope
    Record access scope.
  • ownerRequiredV2RecordMemberSummary | null
    Member who owns the record.
  • teamsRequiredV2TeamSummary[]
    Teams associated with the record.
  • labelsRequiredV2Label[]
    Labels applied to the record.
  • filesizeRequiredinteger
    Original media file size in bytes.
  • created_atRequiredstring (date-time)
    Date and time when the record was created.
  • is_readyRequiredboolean
    Whether the record is ready to be retrieved.
  • is_title_generatingRequiredboolean
    Whether record title generation is in progress.
  • is_auto_label_generatingRequiredboolean
    Whether automatic label recommendation generation is in progress.
  • permissionsRequiredobject
    Record permissions granted to the requester.
  • eventV2RecordEvent | null
    Calendar event associated with the record.
  • accessRequiredV2RecordAccess
    Teams and members that can access the record.
  • availabilityV2RecordAvailability | null
    Record data retention status.
  • shared_recordV2SharedRecordSummary | null
    External share information.
  • export_historiesRequiredV2RecordExportHistory[]
    Record export history entries.
  • recommended_labelsRequiredV2RecommendedLabel[]
    Recommended labels for the record.
  • next_tokenstring | null
    Token for retrieving the next page, or null on the last page.

Response example

{
  "items": [
    {
      "id": 1,
      "source": "zoom",
      "status": "created",
      "recorded_at": "2026-08-27T03:00:00Z",
      "started_at": "2026-08-27T03:00:00Z",
      "scope": "workspace",
      "owner": {
        "id": 1,
        "name": "Example",
        "email": "developer@example.com"
      },
      "teams": [
        {
          "id": 1,
          "name": "Example"
        }
      ],
      "labels": [
        {
          "id": 1,
          "name": "Example",
          "color": "string"
        }
      ],
      "filesize": 1,
      "created_at": "2026-08-27T03:00:00Z",
      "is_ready": true,
      "is_title_generating": true,
      "is_auto_label_generating": true,
      "permissions": {},
      "access": {
        "teams": [
          {
            "id": 1,
            "name": "Example"
          }
        ],
        "members": [
          {
            "id": 1,
            "name": "Example",
            "email": "developer@example.com"
          }
        ]
      },
      "export_histories": [
        {
          "id": 1,
          "workspace_id": 1,
          "record_id": 1,
          "member_id": 1,
          "platform_unique_id": "string",
          "ref_url": "https://api.callabo.ai/example",
          "platform": "salesforce",
          "export_type": "case",
          "created_at": "2026-08-27T03:00:00Z",
          "updated_at": "2026-08-27T03:00:00Z"
        }
      ],
      "recommended_labels": [
        {
          "label_id": 1,
          "label_name": "string"
        }
      ]
    }
  ]
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404WORKSPACE_NOT_FOUNDNot found
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more

Dialogs & Insights

Dialogs and insights are not separate GET endpoints. Pass the required values as a comma-separated include query on record detail.

GET/v2/workspaces/{slug}/records/{record_id}

Record single search

Retrieve a record and optionally include dialogs and insights in the same request.

Parameters

  • record_idRequiredintegerpath
    Record identifier.
  • slugRequiredstringpath
    Workspace slug
  • includestring | nullquery
    Specify subresources to include in dialogs,insights format.
  • querystring | nullquery
    Text to search for in transcripts. Matching transcripts are returned when specified.

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • recordRequiredV2Record
    Retrieved record.
  • idRequiredinteger
    Record identifier.
  • uuidstring | null
    Record UUID specified by the client.
  • titlestring | null
    Record title.
  • sourceRequiredRecordSource
    Record acquisition source.
  • statusRequiredRecordStatus
    Record processing status.
  • recorded_atRequiredstring (date-time)
    Date and time when the recording ended.
  • started_atRequiredstring (date-time)
    Date and time when recording started.
  • duration_msinteger | null
    Record duration in milliseconds.
  • scopeRequiredRecordScope
    Record access scope.
  • ownerRequiredV2RecordMemberSummary | null
    Member who owns the record.
  • teamsRequiredV2TeamSummary[]
    Teams associated with the record.
  • labelsRequiredV2Label[]
    Labels applied to the record.
  • filesizeRequiredinteger
    Original media file size in bytes.
  • protected_from_deletionRequiredboolean
    Whether the record is protected from deletion.
  • permissionsRequiredobject
    Record permissions granted to the requester.
  • created_atRequiredstring (date-time)
    Date and time when the record was created.
  • updated_atRequiredstring (date-time)
    Date and time when the record was last updated.
  • is_readyboolean | null
    Whether the record is ready to be retrieved.
  • is_title_generatingboolean | null
    Whether record title generation is in progress.
  • is_auto_label_generatingboolean | null
    Whether automatic label recommendation generation is in progress.
  • eventV2RecordEvent | null
    Calendar event associated with the record.
  • accessV2RecordAccess | null
    Teams and members that can access the record.
  • availabilityV2RecordAvailability | null
    Record data retention status.
  • extraV2RecordExtra | null
    Additional record processing and transcription information.
  • related_call_recordsV2RelatedCallRecord[] | null
    Call records associated with the same phone number.
  • pii_redaction_activeboolean | null
    Whether the personal information masking policy is enabled.
  • shared_recordV2SharedRecordSummary | null
    External share information.
  • export_historiesV2RecordExportHistory[] | null
    Record export history entries.
  • recommended_labelsV2RecommendedLabel[] | null
    Recommended labels for the record.
  • dialogsV2Dialog[] | null
    Dialogs requested with include.
  • idRequiredinteger
    Transcript utterance identifier.
  • start_msRequiredinteger
    Utterance start time in milliseconds.
  • duration_msRequiredinteger
    Utterance duration in milliseconds.
  • speaker_idRequiredinteger
    Speaker identifier.
  • textRequiredstring
    Utterance content.
  • bookmarkRequiredboolean
    Whether the utterance is bookmarked.
  • original_textstring | null
    Original unmasked text, or null without permission to view it.
  • pii_spansobject[] | null
    Personal information spans masked in the utterance.
  • insightsV2Insight[] | null
    Insights requested with include.
  • record_idRequiredinteger
    Identifier of the record to which the insight belongs.
  • typeRequiredInsightType
    Insight type.
  • statusRequired"created" | "processed" | "failed" | "not_supported"
    Insight processing status.
  • valueRequiredInsightValue | null
    Generated insight content.
  • languageRequiredRecordInsightLanguage
    Insight result language.
  • custom_insight_template_idinteger | null
    Identifier of the custom template used to generate the insight.
  • is_editedRequiredboolean
    Whether the value was edited by a user.
  • edited_by_member_idinteger | null
    Identifier of the member who edited the insight.
  • edited_atstring (date-time) | null
    Date and time when the insight was edited.

Response example

{
  "record": {
    "id": 1,
    "source": "zoom",
    "status": "created",
    "recorded_at": "2026-08-27T03:00:00Z",
    "started_at": "2026-08-27T03:00:00Z",
    "scope": "workspace",
    "owner": {
      "id": 1,
      "name": "Example",
      "email": "developer@example.com"
    },
    "teams": [
      {
        "id": 1,
        "name": "Example"
      }
    ],
    "labels": [
      {
        "id": 1,
        "name": "Example",
        "color": "string"
      }
    ],
    "filesize": 1,
    "protected_from_deletion": true,
    "permissions": {},
    "created_at": "2026-08-27T03:00:00Z",
    "updated_at": "2026-08-27T03:00:00Z"
  }
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUND, WORKSPACE_NOT_FOUNDNot found
422INVALID_INCLUDE, VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more

Original media

The response contains a short-lived URL, not the file body. SRT and VTT subtitle downloads are outside the initial scope.

GET/v2/workspaces/{slug}/records/{record_id}/media

Record media URL query

Issue a download URL for the original record media that is valid for at least one hour.

Parameters

  • record_idRequiredintegerpath
    Record identifier.
  • slugRequiredstringpath
    Workspace slug

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1/media" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • urlRequiredstring
    Temporary URL for downloading the original media.
  • expires_atRequiredstring
    Date and time when the temporary URL expires.
  • filenamestring | null
    Original media filename.
  • content_typestring | null
    MIME type of the original media.

Response example

{
  "url": "https://api.callabo.ai/example",
  "expires_at": "2026-08-27T03:00:00Z"
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUND, MEDIA_NOT_FOUND, WORKSPACE_NOT_FOUNDNot found
409RECORD_NOT_READYConflict
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
GET/v2/workspaces/{slug}/records/{record_id}/share

Record external sharing view

Retrieve the record's external sharing settings and share-link information.

Parameters

  • slugRequiredstringpath
    Workspace slug
  • record_idRequiredintegerpath
    Record identifier.

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1/share" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • record_idRequiredinteger
    Identifier of the shared record.
  • share_idRequiredstring
    External share identifier.
  • titleRequiredstring | null
    Shared page title.
  • durationRequiredSharedRecordDuration
    Period during which the shared record can be played.
  • urlRequiredstring
    Path for retrieving shared record details.
  • created_atRequiredstring (date-time)
    Date and time when the external share was created.
  • expires_atstring (date-time) | null
    Date and time when the external share expires.

Response example

{
  "record_id": 1,
  "share_id": "string",
  "title": "Weekly sync",
  "duration": "7d",
  "url": "https://api.callabo.ai/example",
  "created_at": "2026-08-27T03:00:00Z"
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUND, SHARE_NOT_FOUND, WORKSPACE_NOT_FOUNDNot found
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
PUT/v2/workspaces/{slug}/records/{record_id}/share

Create or update external record share

Create the record's external sharing settings or update the existing settings.

Parameters

  • slugRequiredstringpath
    Workspace slug
  • record_idRequiredintegerpath
    Record identifier.

Request body

External sharing settings to create or update.

  • titleRequiredstring
    Title displayed on the shared page.
  • expires_in_daysRequired7 | 30 | 60 | 90 | null
    Share link validity period; null means it does not expire.

Request example

curl --request PUT \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1/share" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT" \
  --header "Content-Type: application/json" \
  --data '{
  "title": "Weekly sync",
  "expires_in_days": 7
}'

Success responses

Response body

  • shared_recordRequiredV2SharedRecord
    Created or updated external sharing information.
  • record_idRequiredinteger
    Identifier of the shared record.
  • share_idRequiredstring
    External share identifier.
  • titleRequiredstring | null
    Shared page title.
  • durationRequiredSharedRecordDuration
    Period during which the shared record can be played.
  • urlRequiredstring
    Path for retrieving shared record details.
  • created_atRequiredstring (date-time)
    Date and time when the external share was created.
  • expires_atstring (date-time) | null
    Date and time when the external share expires.
  • passwordRequiredstring
    Password used to access the shared record.

Response example

{
  "shared_record": {
    "record_id": 1,
    "share_id": "string",
    "title": "Weekly sync",
    "duration": "7d",
    "url": "https://api.callabo.ai/example",
    "created_at": "2026-08-27T03:00:00Z"
  },
  "password": "string"
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUND, SHARE_NOT_FOUND, WORKSPACE_NOT_FOUNDNot found
409RECORD_NOT_READYConflict
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
DELETE/v2/workspaces/{slug}/records/{record_id}/share

Delete external record share

Delete the record's external sharing settings and share link.

Parameters

  • record_idRequiredintegerpath
    Record identifier.
  • slugRequiredstringpath
    Workspace slug

Request example

curl --request DELETE \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1/share" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUND, SHARE_NOT_FOUND, WORKSPACE_NOT_FOUNDNot found
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
GET/v2/workspaces/{slug}/records/{record_id}/export-histories

Record export history inquiry

List the record's external export history with pagination.

Parameters

  • record_idRequiredintegerpath
    Record identifier.
  • slugRequiredstringpath
    Workspace slug
  • offsetintegerqueryDefault 0
    Zero-based offset of the first returned item.
  • limitintegerqueryDefault 20
    Maximum number of items returned.

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/records/1/export-histories" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • itemsRequiredV2RecordExportHistory[]
    Record export history entries.
  • idRequiredinteger
    Export history entry identifier.
  • workspace_idRequiredinteger
    Workspace identifier.
  • record_idRequiredinteger
    Exported record identifier.
  • member_idRequiredinteger
    Identifier of the member who performed the export.
  • platform_unique_idRequiredstring
    Identifier of the item created on the external platform.
  • ref_urlRequiredstring
    URL of the exported item on the external platform.
  • platformRequiredRecordExportPlatformType
    External platform to which the record was exported.
  • export_typeRequiredRecordExportType
    Export content type.
  • titlestring | null
    Title of the exported item.
  • metadataobject | null
    Additional export result information.
  • created_atRequiredstring (date-time)
    Date and time when the export history entry was created.
  • updated_atRequiredstring (date-time)
    Date and time when the export history entry was last updated.
  • pageRequiredV2Pagination
    Export history pagination information.
  • offsetRequiredinteger
    Zero-based offset of the first returned item.
  • limitRequiredinteger
    Requested maximum number of items.
  • totalRequiredinteger
    Total number of matching items.

Response example

{
  "items": [
    {
      "id": 1,
      "workspace_id": 1,
      "record_id": 1,
      "member_id": 1,
      "platform_unique_id": "string",
      "ref_url": "https://api.callabo.ai/example",
      "platform": "salesforce",
      "export_type": "case",
      "created_at": "2026-08-27T03:00:00Z",
      "updated_at": "2026-08-27T03:00:00Z"
    }
  ],
  "page": {
    "offset": 1,
    "limit": 1,
    "total": 1
  }
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404RECORD_NOT_FOUNDNot found
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
GET/v2/workspaces/{slug}/shared-records

View shared record list

List records currently shared externally from the workspace.

Parameters

  • slugRequiredstringpath
    Workspace slug
  • next_tokenstring | nullquery
    Token for retrieving the next page, or null when no page remains.
  • limitintegerqueryDefault 100
    Maximum number of items returned.

Request example

curl --request GET \
  --url "https://api.callabo.ai/v2/workspaces/your-workspace/shared-records" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer $CALLABO_PAT"

Success responses

Response body

  • itemsRequiredV2RecordListItem[]
    Retrieved records.
  • idRequiredinteger
    Record identifier.
  • uuidstring | null
    Record UUID specified by the client.
  • titlestring | null
    Record title.
  • sourceRequiredRecordSource
    Record acquisition source.
  • statusRequiredRecordStatus
    Record processing status.
  • recorded_atRequiredstring (date-time)
    Date and time when the recording ended.
  • started_atRequiredstring (date-time)
    Date and time when recording started.
  • duration_msinteger | null
    Record duration in milliseconds.
  • scopeRequiredRecordScope
    Record access scope.
  • ownerRequiredV2RecordMemberSummary | null
    Member who owns the record.
  • teamsRequiredV2TeamSummary[]
    Teams associated with the record.
  • labelsRequiredV2Label[]
    Labels applied to the record.
  • filesizeRequiredinteger
    Original media file size in bytes.
  • created_atRequiredstring (date-time)
    Date and time when the record was created.
  • is_readyRequiredboolean
    Whether the record is ready to be retrieved.
  • is_title_generatingRequiredboolean
    Whether record title generation is in progress.
  • is_auto_label_generatingRequiredboolean
    Whether automatic label recommendation generation is in progress.
  • permissionsRequiredobject
    Record permissions granted to the requester.
  • eventV2RecordEvent | null
    Calendar event associated with the record.
  • accessRequiredV2RecordAccess
    Teams and members that can access the record.
  • availabilityV2RecordAvailability | null
    Record data retention status.
  • shared_recordV2SharedRecordSummary | null
    External share information.
  • export_historiesRequiredV2RecordExportHistory[]
    Record export history entries.
  • recommended_labelsRequiredV2RecommendedLabel[]
    Recommended labels for the record.
  • next_tokenstring | null
    Token for retrieving the next page, or null on the last page.

Response example

{
  "items": [
    {
      "id": 1,
      "source": "zoom",
      "status": "created",
      "recorded_at": "2026-08-27T03:00:00Z",
      "started_at": "2026-08-27T03:00:00Z",
      "scope": "workspace",
      "owner": {
        "id": 1,
        "name": "Example",
        "email": "developer@example.com"
      },
      "teams": [
        {
          "id": 1,
          "name": "Example"
        }
      ],
      "labels": [
        {
          "id": 1,
          "name": "Example",
          "color": "string"
        }
      ],
      "filesize": 1,
      "created_at": "2026-08-27T03:00:00Z",
      "is_ready": true,
      "is_title_generating": true,
      "is_auto_label_generating": true,
      "permissions": {},
      "access": {
        "teams": [
          {
            "id": 1,
            "name": "Example"
          }
        ],
        "members": [
          {
            "id": 1,
            "name": "Example",
            "email": "developer@example.com"
          }
        ]
      },
      "export_histories": [
        {
          "id": 1,
          "workspace_id": 1,
          "record_id": 1,
          "member_id": 1,
          "platform_unique_id": "string",
          "ref_url": "https://api.callabo.ai/example",
          "platform": "salesforce",
          "export_type": "case",
          "created_at": "2026-08-27T03:00:00Z",
          "updated_at": "2026-08-27T03:00:00Z"
        }
      ],
      "recommended_labels": [
        {
          "label_id": 1,
          "label_name": "string"
        }
      ]
    }
  ]
}

Errors

StatusError codeDescription
401UNAUTHORIZEDUnauthenticated request
403FORBIDDENInsufficient requester permissions
404WORKSPACE_NOT_FOUNDNot found
422VALIDATION_ERRORUnprocessable content
429RATE_LIMIT_EXCEEDEDRequest limit exceededLearn more
Β© 2026 Return Zero, Inc.