Data Models
This page documents the data models (schemas) returned by the Sybill API. Each model lists its fields, types, and a representative JSON example.
All response fields use camelCase. Timestamps are ISO 8601 strings in UTC. UUIDs are represented as strings. Fields marked nullable may be null or absent from the response.
Conversation (list)
Returned by GET /v1/conversations. Contains core meeting metadata without transcript or recording details.
| Field | Type | Description |
|---|---|---|
conversationId | string (UUID) | Unique identifier for the conversation |
title | string | Meeting title |
startTime | string (ISO 8601) | When the meeting started |
endTime | string (ISO 8601) | When the meeting ended |
type | string | Meeting type: INTERNAL or EXTERNAL |
participants | Participant[] | List of meeting participants |
crm | CrmInfo | nullable |
{
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Q4 Pipeline Review",
"startTime": "2023-11-14T22:13:20Z",
"endTime": "2023-11-15T00:13:20Z",
"type": "EXTERNAL",
"participants": [
{ "name": "Jane Smith", "email": "jane@example.com", "attended": true }
],
"crm": {
"id": "006...",
"name": "Acme Deal",
"type": "opportunity"
}
}
Conversation (detail)
Returned by GET /v1/conversations/{conversationId}. Extends the list model with transcript, recordings, and AI-generated summary.
| Field | Type | Description |
|---|---|---|
conversationId | string (UUID) | Unique identifier for the conversation |
title | string | Meeting title |
startTime | string (ISO 8601) | When the meeting started |
endTime | string (ISO 8601) | When the meeting ended |
type | string | Meeting type: INTERNAL or EXTERNAL |
category | string | nullable |
participants | Participant[] | List of meeting participants |
crm | CrmInfo | nullable |
recordings | Recordings | nullable |
transcript | TranscriptEntry[] | Speaker-segmented transcript |
summary | ConversationSummary | nullable |
{
"conversationId": "550e8400-e29b-41d4-a716-446655440000",
"title": "Q4 Pipeline Review",
"startTime": "2023-11-14T22:13:20Z",
"endTime": "2023-11-15T00:13:20Z",
"type": "EXTERNAL",
"category": "prospect_negotiation",
"participants": [
{ "name": "Jane Smith", "email": "jane@example.com", "attended": true }
],
"crm": { "id": "006...", "name": "Acme Deal", "type": "opportunity" },
"recordings": {
"videoUrl": "https://recordings.example.com/meeting.mp4?...",
"audioUrl": "https://recordings.example.com/meeting.mp3?..."
},
"transcript": [
{
"speaker": "Jane Smith",
"text": "Let's review the pipeline numbers.",
"startTime": 0.0,
"endTime": 4.5
}
],
"summary": {
"Outcome": "Deal moved to negotiation stage.",
"Key Takeaways": [
{ "topic": "Pricing", "key_takeaway": "Customer requested a 15% volume discount." }
],
"Pain Points": ["Integration complexity", "Timeline concerns"],
"FAQ": [
{ "question": "What's the pricing?", "answer": "Starting at $10k/year" }
],
"MEDDIC Score": 85
}
}
Deal (list)
Returned by GET /v1/deals. Contains core deal metadata without summary or contact details.
| Field | Type | Description |
|---|---|---|
dealId | string | CRM remote identifier |
name | string | Deal name |
accountName | string | nullable |
stage | string | Current pipeline stage |
pipeline | string | Pipeline name |
amount | number | nullable |
closeDate | string (ISO 8601) | nullable |
closed | boolean | Whether the deal is closed (won or lost) |
createdDate | string (ISO 8601) | When the deal was created in the CRM |
lastActivityDate | string (ISO 8601) | nullable |
owner | Owner | nullable |
{
"dealId": "006ABC000000123456",
"name": "Acme Enterprise Deal",
"accountName": "Acme Corp",
"stage": "Negotiation",
"pipeline": "Sales Pipeline",
"amount": 50000.0,
"closeDate": "2024-03-15T00:00:00Z",
"closed": false,
"createdDate": "2023-09-01T10:30:00Z",
"lastActivityDate": "2024-01-10T15:30:00Z",
"owner": { "name": "Jane Doe", "email": "jane@example.com" }
}
Deal (detail)
Returned by GET /v1/deals/{dealId}. Extends the list model with AI-generated summary, CRM autofill suggestions, and contacts.
| Field | Type | Description |
|---|---|---|
| (all fields from Deal list) | ||
summary | object | nullable |
crmAutofill | object | nullable |
contacts | Contact[] | People associated with the deal |
{
"dealId": "006ABC000000123456",
"name": "Acme Enterprise Deal",
"accountName": "Acme Corp",
"stage": "Negotiation",
"pipeline": "Sales Pipeline",
"amount": 50000.0,
"closeDate": "2024-03-15T00:00:00Z",
"closed": false,
"createdDate": "2023-09-01T10:30:00Z",
"lastActivityDate": "2024-01-10T15:30:00Z",
"owner": { "name": "Jane Doe", "email": "jane@example.com" },
"summary": {
"Current Status": "Deal is progressing well through negotiation.",
"Pain Points": ["Budget constraints", "Timeline pressure"],
"Value Proposition": "Cost savings and efficiency gains"
},
"crmAutofill": {
"Next Steps": "Schedule follow-up call with legal team",
"Close Date": "2024-03-15"
},
"contacts": [
{
"name": "John Smith",
"email": "john@acme.com",
"title": "VP Sales",
"phone": "+1234567890"
}
]
}
Account (list)
Returned by GET /v1/accounts. Contains core account metadata without contacts or synced CRM fields.
| Field | Type | Description |
|---|---|---|
accountId | string | CRM remote identifier |
name | string | nullable |
website | string | nullable |
owner | Owner | nullable |
createdDate | string (ISO 8601) | nullable |
lastActivityDate | string (ISO 8601) | nullable |
latestDeal | LatestDeal | nullable |
{
"accountId": "001ABC000000123456",
"name": "Acme Corp",
"website": "https://acme.com",
"owner": { "name": "Jane Doe", "email": "jane@example.com" },
"createdDate": "2023-09-01T10:30:00Z",
"lastActivityDate": "2024-01-10T15:30:00Z",
"latestDeal": {
"dealId": "006ABC000000789012",
"name": "Acme Enterprise Deal",
"stage": "Negotiation",
"amount": 50000.0,
"closeDate": "2024-03-15T00:00:00Z"
}
}
Account (detail)
Returned by GET /v1/accounts/{accountId}. Extends the list model with contacts and synced CRM fields.
| Field | Type | Description |
|---|---|---|
| (all fields from Account list) | ||
contacts | Contact[] | People associated with the account |
syncedCrmFields | object | nullable |
{
"accountId": "001ABC000000123456",
"name": "Acme Corp",
"website": "https://acme.com",
"owner": { "name": "Jane Doe", "email": "jane@example.com" },
"createdDate": "2023-09-01T10:30:00Z",
"lastActivityDate": "2024-01-10T15:30:00Z",
"latestDeal": {
"dealId": "006ABC000000789012",
"name": "Acme Enterprise Deal",
"stage": "Negotiation",
"amount": 50000.0,
"closeDate": "2024-03-15T00:00:00Z"
},
"contacts": [
{
"name": "John Smith",
"email": "john@acme.com",
"title": "VP Sales",
"phone": "+1234567890"
}
],
"syncedCrmFields": {
"Industry": "Technology",
"Phone": "+1-555-0100",
"Annual Revenue": "$10M",
"Number of Employees": "500"
}
}
Shared models
The models below are embedded within the top-level entities documented above.
Participant
A person associated with a conversation (invitee or attendee).
| Field | Type | Description |
|---|---|---|
name | string | Display name |
email | string | Email address |
attended | boolean | Whether the person actually attended the meeting |
Owner
The owner of a CRM deal.
| Field | Type | Description |
|---|---|---|
name | string | Display name |
email | string | Email address |
CrmInfo
CRM deal or opportunity linked to a conversation.
| Field | Type | Description |
|---|---|---|
id | string | CRM remote identifier |
name | string | Deal/opportunity name |
type | string | CRM object type (e.g. opportunity) |
Recordings
Signed URLs for meeting recordings. URLs expire after a short period.
| Field | Type | Description |
|---|---|---|
videoUrl | string | nullable |
audioUrl | string | nullable |
TranscriptEntry
A single segment of a meeting transcript.
| Field | Type | Description |
|---|---|---|
speaker | string | Name of the speaker |
text | string | What was said |
startTime | number | Offset in seconds from meeting start |
endTime | number | Offset in seconds from meeting start |
ConversationSummary
AI-generated meeting summary. Keys vary by meeting type and content.
| Field | Type | Description |
|---|---|---|
Outcome | string | nullable |
Key Takeaways | object[] | nullable |
Pain Points | string[] | nullable |
FAQ | object[] | nullable |
MEDDIC Score | number | nullable |
Contact
A person associated with a CRM deal.
| Field | Type | Description |
|---|---|---|
name | string | Full name |
email | string | nullable |
title | string | nullable |
phone | string | nullable |
LatestDeal
The most recent deal associated with an account. Selection logic: latest open deal by creation date; if no open deals, latest closed deal by creation date.
| Field | Type | Description |
|---|---|---|
dealId | string | CRM remote identifier of the deal |
name | string | nullable |
stage | string | nullable |
amount | number | nullable |
closeDate | string (ISO 8601) | nullable |
Pagination
Pagination metadata returned alongside all list responses.
| Field | Type | Description |
|---|---|---|
nextCursor | string | nullable |
hasMore | boolean | true if additional pages exist |
See Pagination for usage details.