openapi: 3.1.0 info: title: Sybill API version: 0.1.0-alpha description: 'Programmatic access to your Sybill workspace — conversations, insights, and AI-powered analysis. **Alpha:** Endpoints, request/response schemas, rate limits, and behavior may change at any time without prior notice.' contact: name: Sybill url: https://www.sybill.ai paths: /v1/health: get: summary: Health Check operationId: health_check_v1_health_get responses: '200': description: Successful Response content: application/json: schema: additionalProperties: true type: object title: Response Health Check V1 Health Get security: - HTTPBearer: [] /v1/conversations: get: summary: List Conversations description: List conversations accessible to the API key's organization. operationId: list_conversations_v1_conversations_get security: - HTTPBearer: [] parameters: - name: limit in: query required: false schema: type: integer maximum: 50 minimum: 1 description: Maximum number of results per page (1-50) default: 20 title: Limit description: Maximum number of results per page (1-50) - name: startedAfter in: query required: false schema: anyOf: - type: string - type: 'null' description: Lower bound for meeting start time (ISO 8601) title: Startedafter description: Lower bound for meeting start time (ISO 8601) - name: startedBefore in: query required: false schema: anyOf: - type: string - type: 'null' description: Upper bound for meeting start time (ISO 8601) title: Startedbefore description: Upper bound for meeting start time (ISO 8601) - name: type in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by meeting type (e.g. EXTERNAL, INTERNAL) title: Type description: Filter by meeting type (e.g. EXTERNAL, INTERNAL) - name: title in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by meeting title (case-insensitive partial match) title: Title description: Filter by meeting title (case-insensitive partial match) - name: attendees in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by attendee name or email (case-insensitive partial match) title: Attendees description: Filter by attendee name or email (case-insensitive partial match) - name: crmName in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by associated CRM deal name title: Crmname description: Filter by associated CRM deal name - name: cursor in: query required: false schema: anyOf: - type: string - type: 'null' description: Opaque pagination cursor from a previous response title: Cursor description: Opaque pagination cursor from a previous response responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ListConversationsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/conversations/{conversationId}: get: summary: Get Conversation description: Get the detailed view for a single conversation. operationId: get_conversation_v1_conversations__conversationId__get security: - HTTPBearer: [] parameters: - name: conversationId in: path required: true schema: type: string format: uuid title: Conversationid responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ConversationDetail' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/deals: get: summary: List Deals description: List deals accessible to the API key's organization. operationId: list_deals_v1_deals_get security: - HTTPBearer: [] parameters: - name: name in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter deals by name (case-insensitive partial match) title: Name description: Filter deals by name (case-insensitive partial match) - name: stage in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by pipeline stage name title: Stage description: Filter by pipeline stage name - name: closed in: query required: false schema: anyOf: - type: boolean - type: 'null' description: 'Filter by closed status: true for won/lost deals, false for open' title: Closed description: 'Filter by closed status: true for won/lost deals, false for open' - name: owner in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by deal owner name (case-insensitive partial match) title: Owner description: Filter by deal owner name (case-insensitive partial match) - name: closeDateBefore in: query required: false schema: anyOf: - type: string - type: 'null' description: Upper bound for close date (ISO 8601, e.g. 2025-06-30T00:00:00Z) title: Closedatebefore description: Upper bound for close date (ISO 8601, e.g. 2025-06-30T00:00:00Z) - name: closeDateAfter in: query required: false schema: anyOf: - type: string - type: 'null' description: Lower bound for close date (ISO 8601) title: Closedateafter description: Lower bound for close date (ISO 8601) - name: amountMin in: query required: false schema: anyOf: - type: number - type: 'null' description: Minimum deal amount title: Amountmin description: Minimum deal amount - name: amountMax in: query required: false schema: anyOf: - type: number - type: 'null' description: Maximum deal amount title: Amountmax description: Maximum deal amount - name: lastActivityBefore in: query required: false schema: anyOf: - type: string - type: 'null' description: Upper bound for last activity date (ISO 8601) title: Lastactivitybefore description: Upper bound for last activity date (ISO 8601) - name: lastActivityAfter in: query required: false schema: anyOf: - type: string - type: 'null' description: Lower bound for last activity date (ISO 8601) title: Lastactivityafter description: Lower bound for last activity date (ISO 8601) - name: limit in: query required: false schema: type: integer maximum: 50 minimum: 1 description: Maximum number of results per page (1-50) default: 20 title: Limit description: Maximum number of results per page (1-50) - name: cursor in: query required: false schema: anyOf: - type: string - type: 'null' description: Opaque pagination cursor from a previous response title: Cursor description: Opaque pagination cursor from a previous response responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ListDealsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/deals/{dealId}: get: summary: Get Deal description: Get the detailed view for a single deal. operationId: get_deal_v1_deals__dealId__get security: - HTTPBearer: [] parameters: - name: dealId in: path required: true schema: type: string title: Dealid responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/DealDetail' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: CRMInfo: properties: id: anyOf: - type: string - type: 'null' title: Id name: anyOf: - type: string - type: 'null' title: Name type: anyOf: - $ref: '#/components/schemas/CRMObjectTypes' - type: 'null' type: object title: CRMInfo CRMObjectTypes: type: string enum: - contact - account - opportunity - lead - owner - activity - task title: CRMObjectTypes ConversationDetail: properties: conversationId: type: string format: uuid title: Conversationid title: anyOf: - type: string - type: 'null' title: Title startTime: type: string format: date-time title: Starttime endTime: type: string format: date-time title: Endtime type: $ref: '#/components/schemas/MeetingTypes' category: anyOf: - $ref: '#/components/schemas/ExternalCategory' - $ref: '#/components/schemas/InternalCategory' - type: 'null' title: Category participants: items: $ref: '#/components/schemas/Participant' type: array title: Participants crm: anyOf: - $ref: '#/components/schemas/CRMInfo' - type: 'null' summary: anyOf: - additionalProperties: anyOf: - type: string - type: integer - type: number - type: boolean - items: {} type: array - additionalProperties: true type: object type: object - type: 'null' title: Summary transcript: anyOf: - items: $ref: '#/components/schemas/TranscriptEntry' type: array - type: 'null' title: Transcript recordings: anyOf: - $ref: '#/components/schemas/Recordings' - type: 'null' type: object required: - conversationId - startTime - endTime - type - participants title: ConversationDetail ConversationListItem: properties: conversationId: type: string format: uuid title: Conversationid title: anyOf: - type: string - type: 'null' title: Title startTime: type: string format: date-time title: Starttime endTime: type: string format: date-time title: Endtime type: $ref: '#/components/schemas/MeetingTypes' participants: items: $ref: '#/components/schemas/Participant' type: array title: Participants crm: anyOf: - $ref: '#/components/schemas/CRMInfo' - type: 'null' type: object required: - conversationId - startTime - endTime - type - participants title: ConversationListItem DealContact: properties: name: anyOf: - type: string - type: 'null' title: Name email: anyOf: - type: string - type: 'null' title: Email title: anyOf: - type: string - type: 'null' title: Title phone: anyOf: - type: string - type: 'null' title: Phone type: object title: DealContact DealDetail: properties: dealId: type: string title: Dealid name: anyOf: - type: string - type: 'null' title: Name accountName: anyOf: - type: string - type: 'null' title: Accountname stage: anyOf: - type: string - type: 'null' title: Stage pipeline: anyOf: - type: string - type: 'null' title: Pipeline amount: anyOf: - type: number - type: 'null' title: Amount closeDate: anyOf: - type: string format: date-time - type: 'null' title: Closedate closed: anyOf: - type: boolean - type: 'null' title: Closed createdDate: anyOf: - type: string format: date-time - type: 'null' title: Createddate lastActivityDate: anyOf: - type: string format: date-time - type: 'null' title: Lastactivitydate owner: anyOf: - $ref: '#/components/schemas/DealOwner' - type: 'null' summary: anyOf: - additionalProperties: anyOf: - type: string - type: integer - type: number - type: boolean - items: {} type: array - additionalProperties: true type: object type: object - type: 'null' title: Summary crmAutofill: anyOf: - additionalProperties: anyOf: - type: string - type: integer - type: number - type: boolean - items: {} type: array - additionalProperties: true type: object type: object - type: 'null' title: Crmautofill contacts: items: $ref: '#/components/schemas/DealContact' type: array title: Contacts type: object required: - dealId title: DealDetail DealListItem: properties: dealId: type: string title: Dealid name: anyOf: - type: string - type: 'null' title: Name accountName: anyOf: - type: string - type: 'null' title: Accountname stage: anyOf: - type: string - type: 'null' title: Stage pipeline: anyOf: - type: string - type: 'null' title: Pipeline amount: anyOf: - type: number - type: 'null' title: Amount closeDate: anyOf: - type: string format: date-time - type: 'null' title: Closedate closed: anyOf: - type: boolean - type: 'null' title: Closed createdDate: anyOf: - type: string format: date-time - type: 'null' title: Createddate lastActivityDate: anyOf: - type: string format: date-time - type: 'null' title: Lastactivitydate owner: anyOf: - $ref: '#/components/schemas/DealOwner' - type: 'null' type: object required: - dealId title: DealListItem DealOwner: properties: name: anyOf: - type: string - type: 'null' title: Name email: anyOf: - type: string - type: 'null' title: Email type: object title: DealOwner ExternalCategory: type: string enum: - prospect_discovery - prospect_demo - prospect_trial - prospect_negotiation - closed_lost - closed_won - customer_onboarding - customer_support - customer_checkin - customer_commercials - interview - user_research - vendor_call - investor_call - advisor_call - other title: ExternalCategory HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError InternalCategory: type: string enum: - one_on_one - sales_team - customer_team - marketing_team - product_team - engineering_team - hr_team - operations_team - finance_team - investment_team - company_wide - other title: InternalCategory ListConversationsResponse: properties: conversations: items: $ref: '#/components/schemas/ConversationListItem' type: array title: Conversations pagination: $ref: '#/components/schemas/PaginationInfo' type: object required: - conversations - pagination title: ListConversationsResponse ListDealsResponse: properties: deals: items: $ref: '#/components/schemas/DealListItem' type: array title: Deals pagination: $ref: '#/components/schemas/PaginationInfo' type: object required: - deals - pagination title: ListDealsResponse MeetingTypes: type: string enum: - INTERNAL - EXTERNAL title: MeetingTypes PaginationInfo: properties: nextCursor: anyOf: - type: string - type: 'null' title: Nextcursor hasMore: type: boolean title: Hasmore default: false type: object title: PaginationInfo Participant: properties: name: anyOf: - type: string - type: 'null' title: Name email: anyOf: - type: string - type: 'null' title: Email attended: type: boolean default: true title: Attended type: object title: Participant Recordings: properties: videoUrl: anyOf: - type: string - type: 'null' title: Videourl audioUrl: anyOf: - type: string - type: 'null' title: Audiourl type: object title: Recordings TranscriptEntry: properties: speaker: type: string title: Speaker text: type: string title: Text startTime: type: number title: Starttime endTime: type: number title: Endtime type: object required: - speaker - text - startTime - endTime title: TranscriptEntry ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError securitySchemes: HTTPBearer: type: http scheme: bearer servers: - url: https://api.sybill.ai description: Production