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

# ListVoiceCallsPostAPI is the POST body form of the list endpoint, for callers


> that prefer a JSON body over query params.




## OpenAPI

````yaml /api/openapi.json post /v1/voice/calls
openapi: 3.0.0
info:
  title: Erdo API
  description: >-
    Erdo's REST API: query and write datasets, run agents, manage threads,
    integrations, pages, evals, workstreams, experiments, and bounded outreach.
    Authenticate with a Bearer API key (erdo_api_...) or scoped token
    (erdo_token_...).
  version: '2026-09-09'
servers:
  - url: https://api.erdo.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/voice/calls:
    post:
      summary: >
        ListVoiceCallsPostAPI is the POST body form of the list endpoint, for
        callers
      description: |
        that prefer a JSON body over query params.
      operationId: POST:mcp.ListVoiceCallsPostAPI
      requestBody:
        content:
          application/json:
            schema:
              properties:
                agent:
                  type: string
                cursor:
                  type: string
                direction:
                  type: string
                limit:
                  format: int64
                  type: integer
                offset:
                  format: int64
                  type: integer
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  conversations:
                    items:
                      $ref: '#/components/schemas/voice.CallConversationSummary'
                    type: array
                  count:
                    format: int64
                    type: integer
                  limit:
                    format: int64
                    type: integer
                  next_cursor:
                    type: string
                  offset:
                    format: int64
                    type: integer
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  schemas:
    voice.CallConversationSummary:
      description: >
        whether a transcript was captured, never the transcript payload itself
        (the list query does not select transcript\_json — TOAST discipline).
      properties:
        call_id:
          type: string
        call_successful:
          type: string
        consent_basis:
          type: string
        contact:
          allOf:
            - $ref: '#/components/schemas/leadcontact.Contact'
          description: >
            transcript and the carrier-verified caller ID. Deliberately NOT
            omitempty: null means "not analysed yet" and {} means "analysed,
            nobody reachable" — different facts, and only inbound calls are ever
            analysed at all.
          title: >
            Contact is what the caller gave, extracted by the summary cron from
            the
        created_at:
          format: date-time
          type: string
        direction:
          description: |
            (Erdo placed the call).
          title: >
            Direction is "inbound" (someone called the agent's number) or
            "outbound"
          type: string
        duration_seconds:
          format: int32
          maximum: 2147483647
          minimum: -2147483648
          type: integer
        ended_at:
          format: date-time
          type: string
        from_number:
          description: >
            inbound call, and the agent's own caller ID on an outbound one.
            Empty on rows written before the column existed.
          title: |
            FromNumber is the line the call came FROM: the caller's number on an
          type: string
        has_transcript:
          type: boolean
        lead_saved_at:
          format: date-time
          title: |
            LeadSavedAt is when that outcome was recorded, null while awaiting.
          type: string
        lead_status:
          description: |
            awaiting one, then created | existing | disabled | test.
          title: >
            LeadStatus is what the lead writer did with this call: "" while it
            is still
          type: string
        provider_agent_id:
          description: >
            Recorded on inbound rows (it is their ownership handle); empty on
            older outbound rows, which predate the column.
          title: >
            ProviderAgentID identifies the voice agent that held the
            conversation.
          type: string
        recipient_name:
          type: string
        status:
          type: string
        to_number:
          title: >
            ToNumber is the number dialled — the agent's own number on an
            inbound call.
          type: string
        transcript_summary:
          type: string
      title: |
        CallConversationSummary is one row of an org's call list: metadata and
      type: object
    leadcontact.Contact:
      description: >
        ones the leads dataset has columns for; there is deliberately no
        company, because nothing downstream would use it.
      properties:
        email:
          type: string
        first_name:
          type: string
        last_name:
          type: string
        phone:
          type: string
      title: >
        Contact is what a person told us about themselves. The four fields are
        the
      type: object
  responses:
    APIError:
      content:
        application/json:
          schema:
            externalDocs:
              url: https://pkg.go.dev/encore.dev/beta/errs#Error
            properties:
              code:
                description: Error code
                example: not_found
                externalDocs:
                  url: https://pkg.go.dev/encore.dev/beta/errs#ErrCode
                type: string
              details:
                description: Error details
                type: object
              message:
                description: Error message
                type: string
            title: APIError
            type: object
      description: Error response
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

````