Skip to main content

Export data from Sybill

Read organization-visible conversations, transcripts, recordings, deals, accounts, and messages from the Sybill API, with the filters and visibility rules that apply.

Written by Sybill Inc


With the Export permission (read scope), you can read the data in your Sybill workspace: meetings and their transcripts, CRM deals and accounts, messages, custom rows, and documents. This article covers what each read endpoint returns and the filters that matter most.

All list endpoints use cursor-based pagination - see API pagination, rate limits, errors, and conventions for how to page through results.


What the API can see

API keys operate with organization-level context, not as an individual Sybill user. That has two consequences:

  • Export endpoints return organization-visible records only. Private records owned by individual users are excluded.

  • Records you import through the API are private by default. Set public: true on import if a record must be readable back through these endpoints (see Import data into Sybill).

Conversations

List meetings with GET /v1/conversations. Useful filters:

Filter

Behavior

type

EXTERNAL or INTERNAL

startedAfter / startedBefore

Bounds on meeting start time (ISO 8601)

title

Case-insensitive partial match

attendees

One of three shapes: a name fragment (John, partial match), a full email ([email protected], exact match), or a company domain (@acme.com or acme.com, exact match on the email domain)

crmName

Associated CRM deal or account name — case-insensitive exact-phrase match; multi-word queries match the full phrase, not individual tokens

sourceId

Filter by origin (see source identifiers below)

limit / cursor

Page size (default 20, max 50) and pagination cursor

curl -H "Authorization: Bearer sk_live_YOUR_KEY" \   "https://api.sybill.ai/v1/conversations?type=EXTERNAL&startedAfter=2026-01-01T00:00:00Z&limit=50"

Each result includes the conversation ID, title, start and end times, type, participants (name, email, and whether they attended), and the linked CRM record when one exists.
​

Conversation detail

GET /v1/conversations/{conversationId} adds the content:

  • transcript — speaker-segmented entries: speaker, text, and startTime/endTime as offsets in seconds from the meeting start.

  • summary — the AI-generated meeting summary. Its keys vary by meeting type.

  • category — an AI-assigned meeting category. External meetings use values such as prospect_discovery, prospect_demo, prospect_trial, prospect_negotiation, closed_won, closed_lost, customer_onboarding, customer_support, customer_checkin, customer_commercials, interview, user_research, partner_call, consulting_call, advisor_call, investor_call, vendor_call, or other. Internal meetings use values such as one_on_one, sales_team, customer_team, customer_service_team, marketing_team, product_team, engineering_team, it_team, hr_team, operations_team, finance_team, legal_team, investment_team, consulting_team, company_wide, or other.

  • recordings — presigned recording URLs (next section).

Meeting recordings

The recordings object on a conversation detail contains up to four URLs:

Field

Use it for

videoUrl / audioUrl

Downloading — browsers save the file

videoStreamUrl / audioStreamUrl

In-browser playback inside a <video>/<audio> element — served inline with the correct content type and HTTP range support for seeking

All four URLs expire after 24 hours, so fetch them shortly before use. A field is null when that recording doesn't exist - and stream URLs are also null if streaming URLs are not enabled for your organization.
​

Source identifiers for conversations

The sourceId filter (and field) accepts either the UUID of a custom source you created through the API, or a reserved native identifier for Sybill's built-in integrations: sybill (includes Sybill desktop-notetaker recordings), gong, chorus, fathom, grain, mindtickle, avoma, fireflies, zoho_meetings, uploaded_call, uploaded_transcript, zoom_phone, outreach_dialer, nooks_dialer, ringcentral_dialer, aircall_dialer, hubspot_dialer. Omit the filter to include all origins. Responses return the same value, so you can round-trip it.
​

Deals

List CRM deals with GET /v1/deals (default page size 20). Filters: name, stage (case-insensitive partial match), closed (true for won/lost, false for open), owner, closeDateBefore/closeDateAfter, amountMin/amountMax, and lastActivityBefore/lastActivityAfter.

curl -H "Authorization: Bearer sk_live_YOUR_KEY" \   "https://api.sybill.ai/v1/deals?closed=false&amountMin=10000"

Each deal carries its CRM identifier, name, account name, stage, pipeline, amount, close date, created and last-activity dates, and owner. GET /v1/deals/{dealId} adds the AI-generated deal summary, crmAutofill (suggested CRM field updates from AI analysis), and the deal's contacts.
​

Accounts

List CRM accounts with GET /v1/accounts (default page size 20). Filters: name, website, owner (name or email), createdBefore/createdAfter, and lastActivityBefore/lastActivityAfter.

Each account includes its latestDeal - the most recent open deal by creation date, or the most recent closed deal if no open deals exist. GET /v1/accounts/{accountId} adds contacts and syncedCrmFields, a label-to-value map of the CRM fields synced for that account.
​

Messages

List messages with GET /v1/messages (default page size 50). Filters: sourceId, remoteId, threadId, participantEmail, and createdAfter/createdBefore.

The sourceId is either the UUID of a custom source you created, or a native identifier: gmail, outlook, zoho_mail, salesforce_crm, hubspot_crm, pipedrive_crm, dynamics_crm, zoho_crm.

List results include sender, recipients, subject, thread ID, and a truncated bodyPreview. GET /v1/messages/{messageId} returns the full body plus attachment metadata (id, filename, contentType, size) - attachment content itself is not exposed.
​

Rows and documents

Two more resources round out exports:

  • Rows (GET /v1/rows, default page size 50) - custom typed records you imported. Filter by sourceId (custom source UUIDs only), objectTypeId, remoteId, name, or createdAfter/createdBefore. Each row returns its field values keyed by field name, with the declared field type of each value.

  • Documents (GET /v1/documents, default page size 50) - text-bearing files. sourceId accepts a custom source UUID or the reserved values chat_upload and mailbox_attachment (email attachments). The url field is the document's original external URL and is null for content uploads and mailbox attachments.

You can also list your custom sources (GET /v1/sources, filterable by name) and object types (GET /v1/object-types, filterable by sourceId); these two lists are not paginated.

Did this answer your question?