> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeptar.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List workspace conversations



## OpenAPI

````yaml /api-reference/openapi.json get /v1/conversations
openapi: 3.0.0
info:
  title: Zeptar API
  description: >-
    The Zeptar API is organized around REST. All requests and responses are
    JSON. Endpoints are scoped to the authenticated user’s active organization
    unless the path specifies an organization explicitly.
  version: v1
  contact: {}
servers:
  - url: https://api.zeptar.com
    description: Production
  - url: http://localhost:3001
    description: Local development
security: []
tags:
  - name: dashboard
    description: Workspace analytics dashboard
  - name: api-keys
    description: Create, list, update, and revoke API keys
  - name: request-log
    description: Browse, filter, and export the history of authenticated API requests
  - name: voices
    description: Voices available for speech synthesis
  - name: llm
    description: Large language models available for agents
  - name: convai/agents
    description: CRUD on conversational AI agents
  - name: convai/conversations
    description: Start a preview conversation against an agent
  - name: conversations
    description: Browse conversation history, transcripts, tags, and analysis
  - name: organizations
    description: List and look up workspaces (organizations)
  - name: organizations/members
    description: Add and remove members from an org
  - name: me
    description: The current authenticated user
  - name: me/workspace-invitations
    description: Pending workspace invites for the current user
paths:
  /v1/conversations:
    get:
      tags:
        - conversations
      summary: List workspace conversations
      operationId: ConversationsController_listWorkspace
      parameters:
        - name: branch_id
          required: false
          in: query
          description: Restrict to conversations whose call ran on this branch
          schema:
            example: agtbrch_abc123
            type: string
        - name: date_from
          required: false
          in: query
          description: Inclusive lower bound on the call start time (ISO-8601)
          schema:
            example: '2026-05-01T00:00:00Z'
            type: string
        - name: date_to
          required: false
          in: query
          description: Inclusive upper bound on the call start time (ISO-8601)
          schema:
            example: '2026-05-31T23:59:59Z'
            type: string
        - name: status
          required: false
          in: query
          description: Eval verdict surfaced under the Status filter chip
          schema:
            type: string
            enum:
              - successful
              - failed
              - unknown
        - name: direction
          required: false
          in: query
          description: >-
            Call origin — inbound = caller-initiated, outbound =
            agent-initiated. Not yet stored on the conversation row (deferred
            per Phase 1 cut); accepted to keep client URLs stable and is
            currently a no-op.
          schema:
            type: string
            enum:
              - inbound
              - outbound
        - name: duration_min_sec
          required: false
          in: query
          description: Inclusive lower bound on duration in seconds
          schema:
            minimum: 0
            example: 30
            type: number
        - name: duration_max_sec
          required: false
          in: query
          description: Inclusive upper bound on duration in seconds
          schema:
            minimum: 0
            example: 600
            type: number
        - name: language
          required: false
          in: query
          description: BCP-47 language tag from the call client overrides
          schema:
            maxLength: 35
            example: en
            type: string
        - name: user_id
          required: false
          in: query
          description: >-
            Filter by the dispatching session user (matches
            `conversation.created_by_id`). Maps to ElevenLabs `user_id`.
          schema:
            maxLength: 140
            example: user_abc123
            type: string
        - name: tag_labels
          required: false
          in: query
          description: >-
            Filter to conversations carrying every listed tag label (AND across
            the list). Labels — not tag-row ids — are the user-facing identity
            of a tag: `conversation_tag` stores one row per (conversation,
            label), so the same label across N conversations has N distinct row
            ids; matching by label is what users expect. Pass labels as repeated
            query params (`?tag_labels=a&tag_labels=b`); the comma-separated
            form is intentionally NOT accepted because labels may legitimately
            contain commas (e.g. `billing, urgent`).
          schema:
            example:
              - urgent
              - refund
            type: array
            items:
              type: string
        - name: channel
          required: false
          in: query
          description: >-
            Transport the call came in on. Set by the agent runtime at session
            start; rows with a NULL `channel` column are excluded from the match
            (legacy / fixture rows that pre-date the column stay invisible to
            this filter rather than being arbitrarily bucketed).
          schema:
            type: string
            enum:
              - web
              - telephony
              - whatsapp
        - name: modality
          required: false
          in: query
          description: >-
            Modality of the session — `voice` for VAD-driven calls, `text` for
            chat-only sessions. Rows with a NULL `modality` column are excluded.
          schema:
            type: string
            enum:
              - voice
              - text
        - name: environment
          required: false
          in: query
          description: >-
            Deployment environment the session ran against. Migration 0018
            backfilled existing rows to `production`; rows that legitimately
            have a NULL environment (e.g. unmigrated test fixtures) are excluded
            from the match.
          schema:
            type: string
            enum:
              - production
              - staging
        - name: summary_mode
          required: false
          in: query
          description: >-
            Whether to include the post-call summary text on each item. Defaults
            to `exclude` so list payloads stay small — use `include` when the
            table needs to surface summary snippets without a detail-page
            roundtrip per row.
          schema:
            type: string
            enum:
              - exclude
              - include
        - name: q
          required: false
          in: query
          description: >-
            Free-text search query — case-insensitive substring match on the
            post-call summary. Title is not yet populated on conversation rows
            so summary is the only meaningful text field today.
          schema:
            maxLength: 280
            example: pricing
            type: string
        - name: cursor
          required: false
          in: query
          description: >-
            Opaque pagination cursor returned by the previous page
            (`nextCursor`)
          schema:
            type: string
        - name: limit
          required: false
          in: query
          description: Page size (default 20, max 100)
          schema:
            minimum: 1
            maximum: 100
            example: 20
            type: number
      responses:
        '200':
          description: ''
      security:
        - apiKey: []
        - cookie: []
components:
  securitySchemes:
    apiKey:
      scheme: bearer
      bearerFormat: zsk_…
      type: http
      description: >-
        API key issued via `POST /v1/api-keys`. Prefix is `zsk_`. Pass as
        `Authorization: Bearer zsk_…`. Scopes are enforced per key.
    cookie:
      type: apiKey
      in: cookie
      name: better-auth.session_token
      description: >-
        Session cookie set by `auth.api.signInEmail` (or the OAuth flow).
        Forwarded automatically by the browser; copy via `document.cookie` for
        server-to-server calls during development.

````