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

# GetVoiceWidgetConversationAPI mirrors erdo_voice_widget_conversation_get,


> returning the transcript plus the structured per-turn LLM metrics (\`turns\`).




## OpenAPI

````yaml /api/openapi.json post /v1/voice/widget-conversations/get
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, and experiments. Authenticate with
    a Bearer API key (erdo_api_...) or scoped token (erdo_token_...).
  version: '2026-07-25'
servers:
  - url: https://api.erdo.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/voice/widget-conversations/get:
    post:
      summary: >
        GetVoiceWidgetConversationAPI mirrors
        erdo_voice_widget_conversation_get,
      description: >
        returning the transcript plus the structured per-turn LLM metrics
        (\`turns\`).
      operationId: POST:mcp.GetVoiceWidgetConversationAPI
      parameters:
        - allowEmptyValue: true
          explode: true
          in: query
          name: widget
          required: false
          schema:
            type: string
          style: form
        - allowEmptyValue: true
          explode: true
          in: query
          name: session_id
          required: false
          schema:
            type: string
          style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  created_at:
                    format: date-time
                    type: string
                  duration_seconds:
                    format: int32
                    maximum: 2147483647
                    minimum: -2147483648
                    type: integer
                  ended_at:
                    format: date-time
                    type: string
                  has_transcript:
                    type: boolean
                  modality:
                    type: string
                  origin:
                    type: string
                  session_id:
                    type: string
                  transcript_json:
                    description: >
                      own turns array), passed through verbatim. Null when no
                      transcript was captured.
                    title: >
                      TranscriptJSON is the raw stored transcript (ElevenLabs
                      post-call array or our
                    type: object
                  transcript_summary:
                    type: string
                  transcript_text:
                    title: >
                      TranscriptText is the tolerant human-readable rendering
                      ("user: ...\nagent:

                      ...").
                    type: string
                  turns:
                    description: >
                      from an ElevenLabs transcript (empty for our simpler
                      text/video turn shapes, which carry no LLM metrics). See
                      extractWidgetConversationTurns.
                    items:
                      $ref: '#/components/schemas/voice.WidgetConversationTurn'
                    title: >
                      Turns is the structured per-agent-turn LLM latency/token
                      breakdown extracted
                    type: array
                  widget_id:
                    type: string
                  widget_name:
                    type: string
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  schemas:
    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_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_...).

````