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

# List Calls

> Retrieve a paginated list of call center AI calls in your company.



## OpenAPI

````yaml /api/openapi.json get /calls/
openapi: 3.1.0
info:
  title: Craft API
  description: Public API for programmatic access to your Craft data.
  version: 1.0.0
servers:
  - url: https://data.craftflow.co/api/v1
    description: Production
security:
  - bearerAuth: []
paths:
  /calls/:
    get:
      tags:
        - Calls
      summary: List Calls
      description: Retrieve a paginated list of call center AI calls in your company.
      operationId: listCalls
      parameters:
        - name: source
          in: query
          description: Filter by call source.
          required: false
          schema:
            type: string
            enum:
              - integration
              - voice_agent
        - name: ordering
          in: query
          description: Sort results by a field. Prefix with `-` for descending order.
          required: false
          schema:
            type: string
            enum:
              - created_at
              - '-created_at'
            default: '-created_at'
        - name: page
          in: query
          description: Page number.
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: page_size
          in: query
          description: Number of results per page.
          required: false
          schema:
            type: integer
            default: 25
            minimum: 1
            maximum: 100
      responses:
        '200':
          description: A paginated list of calls.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Call'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                required:
                  - data
                  - pagination
              example:
                data:
                  - id: f6a7b8c9-d0e1-2345-fabc-678901234567
                    start_time: '2025-07-02T14:00:00Z'
                    end_time: '2025-07-02T14:05:00Z'
                    audio_duration_seconds: 300
                    direction: inbound
                    source: integration
                    sentiment: positive
                    score: 0.9
                    summary: Customer called about HVAC repair.
                    is_qualified: true
                    is_booked: true
                    is_excused: false
                    excused_at: null
                    excuse_reason: null
                    is_cancellation: false
                    has_cancellation: false
                    user:
                      id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                      full_name: Jane Smith
                    created_at: '2025-07-02T14:00:00Z'
                pagination:
                  count: 1
                  page: 1
                  page_size: 25
                  total_pages: 1
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Call:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the call.
        start_time:
          type:
            - string
            - 'null'
          format: date-time
          description: When the call started (ISO 8601).
        end_time:
          type:
            - string
            - 'null'
          format: date-time
          description: When the call ended (ISO 8601).
        audio_duration_seconds:
          type: integer
          description: Duration of the call audio in seconds.
        direction:
          type: string
          enum:
            - inbound
            - outbound
          description: Whether the call was inbound or outbound.
        source:
          type: string
          enum:
            - integration
            - voice_agent
          description: The source of the call.
        sentiment:
          type: string
          enum:
            - positive
            - neutral
            - negative
          description: Detected sentiment of the call.
        score:
          type: number
          description: Overall score for the call (0.0 - 1.0).
        summary:
          type: string
          description: AI-generated summary of the call.
        is_qualified:
          type: boolean
          description: Whether the call was qualified as a lead.
        is_booked:
          type: boolean
          description: Whether an appointment was booked on the call.
        is_excused:
          type: boolean
          description: Whether the call has been excused.
        excused_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When the call was excused (ISO 8601), or null.
        excuse_reason:
          type:
            - string
            - 'null'
          description: Reason the call was excused, or null.
        is_cancellation:
          type: boolean
          description: Whether the call is a cancellation call.
        has_cancellation:
          type: boolean
          description: Whether a cancellation is associated with this call.
        user:
          oneOf:
            - $ref: '#/components/schemas/NestedUser'
            - type: 'null'
          description: The CSR who handled the call, or null (e.g. for voice agent calls).
        created_at:
          type: string
          format: date-time
          description: When the call record was created (ISO 8601).
      required:
        - id
        - start_time
        - end_time
        - audio_duration_seconds
        - direction
        - source
        - sentiment
        - score
        - summary
        - is_qualified
        - is_booked
        - is_excused
        - excused_at
        - excuse_reason
        - is_cancellation
        - has_cancellation
        - user
        - created_at
    Pagination:
      type: object
      properties:
        count:
          type: integer
          description: Total number of results across all pages.
        page:
          type: integer
          description: Current page number.
        page_size:
          type: integer
          description: Number of results on this page.
        total_pages:
          type: integer
          description: Total number of pages.
      required:
        - count
        - page
        - page_size
        - total_pages
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            detail:
              type: string
              description: Human-readable error message.
          required:
            - detail
      required:
        - error
    NestedUser:
      type: object
      description: The user associated with this record, or null if none.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the user.
        full_name:
          type: string
          description: The user's full display name.
      required:
        - id
        - full_name
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your API key, prefixed with `cf_live_`.

````