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

# Retrieve conversation metadata

> Retrieve metadata for every call step in a conversation sequence, returned at conversation-sequence grain with one metadata object per call step. Set `includeRecording=true` to include a signed recording URL when one is available — recording URLs are opt-in because they are signed and may include sensitive call audio.



## OpenAPI

````yaml /openapi.json get /conversations/metadata/{sequenceId}
openapi: 3.1.0
info:
  title: Julian API
  version: 1.0.0
  description: >-
    API for Julian, 11x's AI calling platform. Programmatically enroll contacts
    into agent calling sequences, manage sequences, and track credit usage. All
    requests are authenticated with an organization API key in the `x-api-key`
    header and rate limited to 10 requests per second per key (HTTP 429 when
    exceeded).
servers:
  - url: https://julian.11x.ai/api/v1
security:
  - apiKeyAuth: []
tags:
  - name: Scheduling
    description: Enroll contacts into an agent's calling sequence.
  - name: Sequences
    description: Manage active sequences.
  - name: Agents
    description: Read agent configuration.
  - name: Conversation Meetings
    description: >-
      Manage the meeting booked during a conversation — list its attendees, add
      attendees before it starts, and cancel it. Every endpoint is addressed by
      an `entityId` that identifies the conversation. Today only voice calls are
      supported, with the form of the call prefix followed by the call ID (e.g.
      `call.abc123`). The meeting is resolved from the calendar booking created
      during the conversation, and the calendar provider remains the source of
      truth.
  - name: Conversation Metadata
    description: >-
      Retrieve completed conversation data asynchronously — designed for batch
      ingestion, backfills, and reconciliation jobs that pull conversation
      metadata instead of receiving it through a webhook.


      **Recommended batch ingestion flow:**


      1. Call `GET /conversations/search/{agentId}` with the time window you
      want to ingest (e.g. yesterday or the last seven days).

      2. Iterate through the returned `sequenceIds`.

      3. For each sequence ID, call `GET /conversations/metadata/{sequenceId}`.

      4. Store the returned `metadata` array in your warehouse.

      5. Use `limit`, `offset`, and `hasMore` to paginate through larger
      backfills.
  - name: Credits
    description: Track credit utilization.
  - name: Webhooks
    description: Events Julian sends to your endpoint.
paths:
  /conversations/metadata/{sequenceId}:
    get:
      tags:
        - Conversation Metadata
      summary: Retrieve conversation metadata
      description: >-
        Retrieve metadata for every call step in a conversation sequence,
        returned at conversation-sequence grain with one metadata object per
        call step. Set `includeRecording=true` to include a signed recording URL
        when one is available — recording URLs are opt-in because they are
        signed and may include sensitive call audio.
      operationId: getConversationMetadata
      parameters:
        - $ref: '#/components/parameters/SequenceId'
        - name: includeRecording
          in: query
          required: false
          description: >-
            When set to `true`, includes a signed `recordingUrl` on each
            metadata object when available. Any value other than `true` defaults
            to `false`. Matching is case-insensitive.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Conversation metadata, one object per call step.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationMetadataResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            `CONVERSATION_NOT_FOUND` — the sequence does not exist or does not
            belong to your organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: CONVERSATION_NOT_FOUND
                message: Conversation not found.
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    SequenceId:
      name: sequenceId
      in: path
      required: true
      description: ID of the conversation sequence, e.g. `call-sequence.abc123`.
      schema:
        type: string
  schemas:
    ConversationMetadataResponse:
      type: object
      required:
        - sequenceId
        - metadata
      properties:
        sequenceId:
          type: string
          example: call-sequence.abc123
        metadata:
          type: array
          description: One metadata object per call step in the sequence.
          items:
            $ref: '#/components/schemas/ConversationCallMetadata'
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Machine-readable error code.
          example: INVALID_PHONE_NUMBER
        message:
          type: string
          description: Human-readable explanation.
    ConversationCallMetadata:
      description: >-
        Per-call-step metadata. Mirrors the call-results webhook payload, plus
        fields specific to the metadata API.
      allOf:
        - $ref: '#/components/schemas/CallResultsWebhookPayload'
        - type: object
          properties:
            attempt:
              type: integer
              description: 1-based call attempt number for this step.
              example: 1
            createdAt:
              type: string
              format: date-time
              description: When the call record was created.
            updatedAt:
              type: string
              format: date-time
              description: When the call record was last updated.
            callStatus:
              type: string
              description: Internal call status (outcome) for the step.
              example: goal-not-completed
            recordingUrl:
              type: string
              format: uri
              description: >-
                Signed recording URL. Only present when `includeRecording=true`
                and a recording is available.
    CallResultsWebhookPayload:
      type: object
      properties:
        agentId:
          type: string
          example: agent.abc123
        agentName:
          type: string
          example: Inbound Agent
        callId:
          type: string
          example: call.abc123
        name:
          type: string
          example: Victor Wembly
        phoneNumber:
          type: string
          example: '+15551234567'
        phoneNumberExt:
          type: string
          description: Phone extension, empty string when none.
        fromPhoneNumber:
          type: string
          description: Phone number used to place the call. Empty string for web calls.
        scheduledAt:
          type: string
          format: date-time
        timezone:
          type: string
          description: IANA timezone.
          example: Europe/London
        direction:
          type: string
          enum:
            - outbound
            - inbound
        customInputVariables:
          type: object
          description: >-
            The custom input variables submitted when the contact was enrolled,
            echoed back verbatim. The set of keys is defined by your agent's
            configuration and varies per agent.
          additionalProperties:
            type: string
        duration:
          type: integer
          description: Call duration in seconds.
        callUrl:
          type: string
          format: uri
          description: Link to the call in the 11x platform.
        rescheduledAt:
          type:
            - string
            - 'null'
          format: date-time
        callResult:
          type: object
          properties:
            resultType:
              type: string
              description: >-
                Human-readable call outcome. See the webhook guide for the full
                value table.
              enum:
                - Goal Completed
                - Goal Not Completed
                - Voicemail
                - Busy
                - No Conversation
                - Opted Out
                - Invalid Phone Number
                - Cancelled
                - Failed
                - Scheduled
                - Rescheduled
                - Processing Analysis
                - Calling
            summary:
              type: string
              description: AI-generated call summary.
            extractedVariables:
              type: object
              description: >-
                Values the agent extracted from the conversation, keyed by the
                extraction variables configured on the agent. Both keys and
                values vary per agent.
              additionalProperties: true
            agentActions:
              type: array
              description: Actions performed by the AI agent.
              items:
                $ref: '#/components/schemas/CallAction'
            humanActions:
              type: array
              description: Actions requested by or assigned to a human.
              items:
                $ref: '#/components/schemas/CallAction'
            transcription:
              type: string
              description: Full call transcript.
            outcomes:
              type: array
              description: >-
                Outcomes assigned to the call. Each `name` is one of the
                customer-defined outcome definitions configured on the agent
                (not a fixed enum) — retrieve them with `GET
                /agents/{agentId}/outcomes`.
              items:
                type: object
                properties:
                  name:
                    type: string
                    example: interested
                  reasoning:
                    type: string
                    example: Customer expressed interest in the product
            followUpMeetingDetails:
              type: object
              description: Present when a meeting was booked during the call.
              properties:
                startTime:
                  type: string
                  format: date-time
                endTime:
                  type: string
                  format: date-time
                hostEmail:
                  type: string
                  format: email
                meetingLink:
                  type: string
                  description: >-
                    The booked meeting's join link for virtual meetings, or the
                    physical location/address for in-person bookings. Present
                    when available.
              additionalProperties: true
        crmSchedulingDetails:
          type: object
          description: CRM integration details, when applicable.
          additionalProperties: true
        sequence:
          type: object
          description: Present when the call belongs to a sequence.
          properties:
            sequenceId:
              type: string
              example: call-sequence.xyz123
            lifecycleStatus:
              type: string
              enum:
                - done
                - in progress
                - cancelled
                - failed
              description: Whether the contact is still actively enrolled.
        promptVersionId:
          type: string
          description: >-
            The published prompt version used for the call. Present when a
            prompt version was captured for the call.
          example: prompt-ver.abc123
    CallAction:
      type: object
      properties:
        description:
          type: string
          example: Scheduled follow-up meeting
        status:
          type: string
          example: completed
        actionKey:
          type: string
          example: schedule_meeting
        completedAt:
          type: string
          description: ISO 8601 timestamp, empty string when not completed.
        metadata:
          type: object
          additionalProperties: true
  responses:
    Unauthorized:
      description: >-
        `UNAUTHORIZED` or `INVALID_API_KEY` — API key missing, invalid, or not
        authorized for this agent's organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missingApiKey:
              summary: Missing API key
              value:
                error: UNAUTHORIZED
                message: >-
                  API key is required. Please provide your API key in the
                  x-api-key header.
            invalidApiKey:
              summary: Invalid API key
              value:
                error: INVALID_API_KEY
                message: The provided API key is invalid.
    InternalServerError:
      description: >-
        `INTERNAL_SERVER_ERROR` — unexpected server error. Retry with backoff
        and contact the 11x team if it persists.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: INTERNAL_SERVER_ERROR
            message: Internal Server Error. Please contact 11x team.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Organization API key. Get it from the 11x team or from the platform.

````