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

# List calls

> List calls owned by your organization. Filters narrow the list within your organization; they cannot reach past it.



## OpenAPI

````yaml /openapi/backend.json get /api/calls
openapi: 3.0.3
info:
  title: Drive Health operational API
  version: 1.0.0
  description: >-
    Server-to-server API for organizations integrating with Drive Health. It
    starts chat and voice conversations and reads the calls, chats, transcripts,
    and recordings those conversations produce. Authenticate every request with
    an organization API key.
servers:
  - url: https://backend.drivehealth.ai
    description: Production. Use the API origin supplied for your environment.
security:
  - organizationBearer: []
  - organizationApiKey: []
tags:
  - name: Chat
    description: >-
      Start a chat with a caregiver, exchange messages, and end the session.
      These routes also answer on the compatibility mount `/v1/chat/...`.
  - name: Voice
    description: Start phone calls from an owned number and register browser voice calls.
  - name: Results
    description: >-
      Read the calls, chat sessions, transcripts, and recordings your
      organization owns.
paths:
  /api/calls:
    get:
      tags:
        - Results
      summary: List calls
      description: >-
        List calls owned by your organization. Filters narrow the list within
        your organization; they cannot reach past it.
      operationId: listCalls
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Limit'
        - name: status
          in: query
          description: Return only calls with this status, for example `completed`.
          schema:
            type: string
        - $ref: '#/components/parameters/AssistantFilter'
      responses:
        '200':
          description: >-
            A page of calls. An empty `results` array is a successful response
            with no matching calls.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CallListPage'
              example:
                count: 1
                next: null
                previous: null
                results:
                  - call_id: 3c2b1a09-8f7e-4d6c-9b8a-7d6c5b4a3f2e
                    protocol: web
                    from_number: null
                    to_number: null
                    start_time: '2026-10-20T14:02:11Z'
                    end_time: '2026-10-20T14:05:42Z'
                    call_duration_seconds: 211
                    status: completed
                    transcript: Hello, how can I help?
                    transcript_object: null
                    sentiment: neutral
                    who_hung_up: caller
                    resolved: false
                    notes: null
                    call_analysis: null
                    call_recording_url: >-
                      https://backend.drivehealth.ai/api/calls/recording/3c2b1a09-8f7e-4d6c-9b8a-7d6c5b4a3f2e
        '403':
          $ref: '#/components/responses/Refused'
components:
  parameters:
    Page:
      name: page
      in: query
      description: Page number, starting at 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    Limit:
      name: limit
      in: query
      description: Number of records per page.
      schema:
        type: integer
        minimum: 1
        default: 10
    AssistantFilter:
      name: assistant_id
      in: query
      description: Return only records for this caregiver.
      schema:
        type: string
        format: uuid
  schemas:
    CallListPage:
      type: object
      required:
        - count
        - next
        - previous
        - results
      properties:
        count:
          type: integer
          minimum: 0
          description: Total number of matching calls.
        next:
          type: string
          format: uri
          nullable: true
          description: Next page URL, or null.
        previous:
          type: string
          format: uri
          nullable: true
          description: Previous page URL, or null.
        results:
          type: array
          items:
            $ref: '#/components/schemas/CallRecord'
    CallRecord:
      type: object
      description: >-
        A call your organization owns. Records include further fields that this
        reference does not describe yet.
      additionalProperties: true
      properties:
        call_id:
          type: string
          format: uuid
        protocol:
          type: string
          description: 'How the call was carried: `twilio`, `telnyx`, `web`, or `sip`.'
        from_number:
          type: string
          nullable: true
          description: Calling number, when the call has one.
        to_number:
          type: string
          nullable: true
          description: Called number, when the call has one.
        start_time:
          type: string
          format: date-time
          nullable: true
        end_time:
          type: string
          format: date-time
          nullable: true
        call_duration_seconds:
          type: integer
          minimum: 0
          nullable: true
        status:
          type: string
          description: >-
            Call status, for example `completed`, `failed`, `busy`, or
            `no-answer`.
        transcript:
          type: string
          nullable: true
          description: The conversation as text.
        transcript_object:
          description: The conversation as structured turns, or null.
        sentiment:
          type: string
          nullable: true
          description: >-
            Sentiment from call analysis, for example `positive`, `neutral`, or
            `negative`.
        who_hung_up:
          type: string
          nullable: true
          description: Which side ended the call, for example `caller` or `callee`.
        resolved:
          type: boolean
          description: Whether the call is marked resolved.
        notes:
          type: string
          nullable: true
          maxLength: 150
        call_analysis:
          type: object
          nullable: true
          additionalProperties: true
          description: Analysis of the call. Its fields are not described yet.
        call_recording_url:
          type: string
          format: uri
          nullable: true
          description: >-
            Authorized recording URL on the current API host. Fetch it with your
            organization key.
    Refusal:
      type: object
      required:
        - detail
      properties:
        detail:
          type: string
          description: Why the request was refused.
  responses:
    Refused:
      description: >-
        Refused before the endpoint ran, with `detail` instead of the standard
        envelope: the key is missing, invalid, or revoked; more than one
        credential was presented; or a selector names a different organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Refusal'
          examples:
            invalidKey:
              summary: Invalid or revoked key
              value:
                detail: Unauthorized
            noCredential:
              summary: No credential
              value:
                detail: Authentication credentials were not provided.
            conflictingCredentials:
              summary: More than one credential
              value:
                detail: >-
                  More than one credential was presented. Send an organization
                  key or a session token, not both.
            foreignSelector:
              summary: Selector names another organization
              value:
                detail: >-
                  This key belongs to a different organization than the request
                  selected.
  securitySchemes:
    organizationBearer:
      type: http
      scheme: bearer
      description: >-
        An organization API key starting with `dh_`, sent as `Authorization:
        Bearer dh_your_api_key`.
    organizationApiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Alternative to the Authorization header. Send one credential per
        request.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.