> ## 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.

# GetVoiceCallAPI mirrors erdo_voice_call_get, returning the transcript, the


> structured per-turn LLM metrics (\`turns\`), and the lead the call produced (\`contact\`, \`lead\_status\`, \`lead\_saved\_at\` — see the list endpoint). The call id is a provider conversation id ("conv\_..."), which travels in the path.




## OpenAPI

````yaml /api/openapi.json get /v1/voice/calls/{callID}
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/{callID}:
    get:
      summary: >
        GetVoiceCallAPI mirrors erdo_voice_call_get, returning the transcript,
        the
      description: >
        structured per-turn LLM metrics (\`turns\`), and the lead the call
        produced (\`contact\`, \`lead\_status\`, \`lead\_saved\_at\` — see the
        list endpoint). The call id is a provider conversation id ("conv\_..."),
        which travels in the path.
      operationId: GET:mcp.GetVoiceCallAPI
      parameters:
        - allowEmptyValue: true
          explode: false
          in: path
          name: callID
          required: true
          schema:
            type: string
          style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  call_id:
                    type: string
                  call_successful:
                    type: string
                  consent_basis:
                    type: string
                  contact:
                    $ref: '#/components/schemas/leadcontact.Contact'
                  created_at:
                    format: date-time
                    type: string
                  direction:
                    type: string
                  duration_seconds:
                    format: int32
                    maximum: 2147483647
                    minimum: -2147483648
                    type: integer
                  ended_at:
                    format: date-time
                    type: string
                  from_number:
                    type: string
                  has_transcript:
                    type: boolean
                  instructions:
                    type: string
                  lead_saved_at:
                    format: date-time
                    type: string
                  lead_status:
                    type: string
                  provider_agent_id:
                    type: string
                  recipient_name:
                    type: string
                  status:
                    type: string
                  to_number:
                    type: string
                  transcript_json:
                    description: |
                      verbatim. Null when no transcript was captured.
                    title: >
                      TranscriptJSON is the raw stored ElevenLabs transcript,
                      passed through
                    type: object
                  transcript_summary:
                    type: string
                  transcript_text:
                    description: >
                      ("user: ...\\nagent: ..."), shared with the widget read
                      surface.
                    title: |
                      TranscriptText is the tolerant human-readable rendering
                    type: string
                  turns:
                    description: |
                      same projection the widget conversation read returns.
                    items:
                      $ref: '#/components/schemas/voice.WidgetConversationTurn'
                    title: >
                      Turns is the structured per-agent-turn LLM latency/token
                      breakdown, the
                    type: array
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  schemas:
    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
    voice.WidgetConversationTurn:
      description: >
        from a stored ElevenLabs transcript so ops dashboards / automations can
        track per-turn latency, token spend, and LLM-cascade fail-overs without
        re-parsing the raw provider payload. One entry per AGENT turn that
        actually drove the LLM (it has a TTFB metric, token usage, or made tool
        calls); pure user turns and scripted greeting turns carry none of these
        and are omitted.
      properties:
        after_knowledge_result:
          description: >
            non-empty result came from Voice's knowledge-search tool. Consumers
            that specifically compare grounded vs non-grounded latency must use
            this field, not infer knowledge from an arbitrary tool result.
          title: >
            AfterKnowledgeResult is the narrower provenance signal: the
            preceding
          type: boolean
        after_tool_result:
          description: >
            tool\_results with non-empty content — this turn's latency includes
            the model re-reading a (possibly large) tool result, so it's
            expected to be slower.
          title: >
            AfterToolResult is true when the immediately preceding raw turn
            carried
          type: boolean
        cache_read_tokens:
          format: int64
          type: integer
        input_tokens:
          description: |
            this turn's llm\_usage.model\_usage (0 when no usage was reported).
          format: int64
          title: >
            InputTokens / CacheReadTokens / OutputTokens are summed across every
            model in
          type: integer
        llm_override:
          description: >
            configured primary errored/timed out (empty when the primary
            answered).
          title: >
            LLMOverride is the model the ElevenLabs LLM cascade failed over to
            when the
          type: string
        models:
          items:
            type: string
          title: >
            Models are the LLM model ids that served this turn (sorted; usually
            one).
          type: array
        output_tokens:
          format: int64
          type: integer
        rescued:
          description: |
            model, a signal that the primary model was unhealthy at that moment.
          title: >
            Rescued is true when LLMOverride is set — the turn was answered by a
            fallback
          type: boolean
        time_in_call_secs:
          format: int64
          title: >
            TimeInCallSecs is when the turn occurred, in seconds since the call
            started.
          type: integer
        tool_calls:
          items:
            type: string
          title: |
            ToolCalls are the tool names this turn invoked, in order.
          type: array
        tool_result_chars:
          format: int64
          title: >
            ToolResultChars is the total length of this turn's own tool_results
            values.
          type: integer
        ttfb_seconds:
          title: >
            TTFBSeconds is the LLM time-to-first-byte for this turn (nil when
            absent).
          type: number
        turn_index:
          format: int64
          title: >
            TurnIndex is the 1-based position of this turn in the raw transcript
            array.
          type: integer
      title: >
        WidgetConversationTurn is one agent turn's LLM performance metrics,
        extracted
      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_...).

````