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

# List Calls

> Retrieve a list of calls with optional filtering and pagination.



## OpenAPI

````yaml /api-reference/openapi.json get /calls
openapi: 3.1.0
info:
  title: Truedy API
  description: >-
    Truedy Public API - Build voice AI agents and make automated phone calls.


    ## Authentication

    All requests require **Authorization: Bearer <your_api_key>**.

    Get your API key from the [Truedy Dashboard](https://app.truedy.ai).


    ## Response Format

    All successful responses follow this format:

    ```json

    {
      "data": { /* resource or list of resources */ },
      "meta": {
        "request_id": "req_xxx",
        "ts": "2026-03-03T20:30:21.310278Z"
      },
      "pagination": { /* optional, for list endpoints */ }
    }

    ```


    ## Error Handling

    Errors return appropriate HTTP status codes with structured error messages.
    Always check the `error` field in the response body for details.
  version: 1.0.0
servers:
  - url: https://api.truedy.ai/api/public/v1
    description: Truedy Public API
security:
  - BearerAuth: []
paths:
  /calls:
    get:
      tags:
        - Calls
      summary: List Calls
      description: Retrieve a list of calls with optional filtering and pagination.
      operationId: list_calls
      parameters:
        - name: agent_id
          in: query
          required: false
          description: Filter by agent ID
          schema:
            type: string
        - name: status
          in: query
          required: false
          description: Filter by call status
          schema:
            type: string
            enum:
              - queued
              - ringing
              - in_progress
              - completed
              - failed
        - name: limit
          in: query
          required: false
          description: Maximum results per page (1-100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: offset
          in: query
          required: false
          description: Number of results to skip
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: List of calls
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - meta
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CallResponse'
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
                  pagination:
                    $ref: '#/components/schemas/PaginationInfo'
              example:
                data:
                  - id: call_a1b2c3d4
                    status: completed
                    direction: outbound
                    agent_id: agt_f9447372
                    to: '+12125551234'
                    from: '+18005559876'
                    duration_seconds: 142
                    recording_url: https://recordings.truedy.ai/call_a1b2c3d4.mp3
                    transcript_url: https://api.truedy.ai/calls/call_a1b2c3d4/transcript
                    summary: Customer inquired about refund policy. Issue resolved.
                    cost_credits: 24
                    metadata:
                      campaign_id: batch_c3d4e5f6
                      contact_id: cnt_d4e5f6a7
                    started_at: '2026-04-05T10:00:00Z'
                    ended_at: '2026-04-05T10:02:22Z'
                    created_at: '2026-04-05T09:59:58Z'
                    updated_at: '2026-04-05T10:02:22Z'
                  - id: call_b2c3d4e5
                    status: failed
                    direction: outbound
                    agent_id: agt_f9447372
                    to: '+15559876543'
                    from: '+18005559876'
                    duration_seconds: 142
                    recording_url: https://recordings.truedy.ai/call_a1b2c3d4.mp3
                    transcript_url: https://api.truedy.ai/calls/call_a1b2c3d4/transcript
                    summary: Customer inquired about refund policy. Issue resolved.
                    cost_credits: 24
                    metadata:
                      campaign_id: batch_c3d4e5f6
                      contact_id: cnt_d4e5f6a7
                    started_at: '2026-04-05T10:00:00Z'
                    ended_at: '2026-04-05T10:02:22Z'
                    created_at: '2026-04-05T09:59:58Z'
                    updated_at: '2026-04-05T10:02:22Z'
                meta:
                  request_id: req_32e7531c
                  ts: '2026-04-05T10:22:00Z'
                pagination:
                  total: 24
                  limit: 50
                  offset: 0
                  has_more: false
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    CallResponse:
      type: object
      required:
        - id
        - status
        - created_at
      properties:
        id:
          type: string
          description: Unique call identifier
          example: call_a1b2c3d4
        agent_id:
          description: ID of the agent used for this call
          example: agt_f9447372
          type:
            - string
            - 'null'
        phone_number:
          description: Phone number (destination for outbound, source for inbound)
          example: '+15551234567'
          type:
            - string
            - 'null'
        from_number:
          description: Originating phone number
          example: '+15559876543'
          type:
            - string
            - 'null'
        to_number:
          description: Destination phone number
          example: '+15551234567'
          type:
            - string
            - 'null'
        direction:
          enum:
            - inbound
            - outbound
          description: Call direction
          example: outbound
          type:
            - string
            - 'null'
        status:
          type: string
          enum:
            - queued
            - ringing
            - in_progress
            - completed
            - failed
          description: Current call status
          example: completed
        duration_seconds:
          description: Call duration in seconds
          example: 247
          type:
            - integer
            - 'null'
        cost_usd:
          description: Estimated or actual cost in USD
          example: 0.42
          type:
            - number
            - 'null'
        summary:
          description: AI-generated call summary
          example: >-
            Customer inquired about billing and was provided with account
            information.
          type:
            - string
            - 'null'
        short_summary:
          description: Short summary if available
          example: Billing inquiry - resolved
          type:
            - string
            - 'null'
        recording_url:
          description: URL to the call recording if available
          example: https://storage.truedy.ai/recordings/call_a1b2c3d4.mp3
          type:
            - string
            - 'null'
        transcript:
          description: Call transcript (structure varies)
          example: []
        sentiment:
          enum:
            - positive
            - neutral
            - negative
          description: AI-classified sentiment
          example: positive
          type:
            - string
            - 'null'
        started_at:
          format: date-time
          description: When the call started
          example: '2026-03-03T20:25:00.000000Z'
          type:
            - string
            - 'null'
        ended_at:
          format: date-time
          description: When the call ended
          example: '2026-03-03T20:29:47.000000Z'
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
          description: When the call was created
          example: '2026-03-03T20:24:55.310278Z'
        updated_at:
          format: date-time
          description: When the call was last updated
          example: '2026-03-03T20:29:47.310278Z'
          type:
            - string
            - 'null'
    ResponseMeta:
      type: object
      required:
        - request_id
        - ts
      properties:
        request_id:
          type: string
          description: Unique request identifier for debugging and support
          example: req_32e7531c-8
        ts:
          type: string
          format: date-time
          description: Server timestamp when the response was generated
          example: '2026-03-03T20:30:21.310278Z'
    PaginationInfo:
      type: object
      required:
        - total
        - limit
        - offset
        - has_more
      properties:
        total:
          type: integer
          description: Total number of items matching the query
          example: 156
        limit:
          type: integer
          description: Maximum items returned per page
          example: 50
        offset:
          type: integer
          description: Number of items skipped from the beginning
          example: 0
        has_more:
          type: boolean
          description: Whether more items exist after this page
          example: true
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Error code
              example: not_found
            message:
              type: string
              description: Human-readable error message
              example: The requested resource does not exist
            details:
              description: Additional error context
              example:
                resource: agent
                id: agt_invalid
              type:
                - object
                - 'null'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key authentication. Include your API key in the Authorization
        header: Bearer <your_api_key>

````