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

# List published versions

> Every version you published, newest first, without configs. Read one in full with [Get an assistant](/api-reference/assistants/get-an-assistant) and `?version=`. `aliases` marks the one calls run. Empty until the first publish.



## OpenAPI

````yaml /voice-agents/api-reference/openapi.yaml get /realtime-assistants/{realtimeAssistantId}/versions
openapi: 3.1.0
info:
  title: UpliftAI Voice Agents API
  version: '1.0'
  description: >-
    Build voice assistants, start conversations on the web or the phone, run
    calling campaigns, and receive outcomes by webhook. All endpoints take a
    bearer API key unless noted otherwise.
servers:
  - url: https://api.upliftai.org/v1
security:
  - apiKey: []
tags:
  - name: Assistants
  - name: Authoring an assistant
  - name: Starting a conversation
  - name: Sessions & call records
  - name: Campaigns
  - name: Campaign outcomes
  - name: Contacts
  - name: Google Sheet sources
  - name: Integrations & delivery health
paths:
  /realtime-assistants/{realtimeAssistantId}/versions:
    get:
      tags:
        - Assistants
      summary: List published versions
      description: >-
        Every version you published, newest first, without configs. Read one in
        full with [Get an assistant](/api-reference/assistants/get-an-assistant)
        and `?version=`. `aliases` marks the one calls run. Empty until the
        first publish.
      operationId: listAssistantVersions
      parameters:
        - name: realtimeAssistantId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          example: 0f4a91d3-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        - name: limit
          in: query
          required: false
          description: Versions per page. Values out of range are clamped, not rejected.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
        - name: cursor
          in: query
          required: false
          description: >-
            The previous page's `nextCursor`, passed back unchanged. A mangled
            one is a 400.
          schema:
            type: string
      responses:
        '200':
          description: One page of published versions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssistantVersionList'
              example:
                versions:
                  - version: 14
                    name: Edversity admissions follow-up
                    description: Calls warm leads about the cybersecurity programme
                    message: Fee schedule for the October intake
                    publishedAt: '2026-08-18T10:05:12.406Z'
                    publishedBy: d9164fbd-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                  - version: 11
                    name: Edversity admissions follow-up
                    description: Calls warm leads about the cybersecurity programme
                    message: Shorter greeting, demo slot offered first
                    publishedAt: '2026-08-18T09:58:03.120Z'
                    publishedBy: d9164fbd-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                aliases:
                  draft:
                    version: 14
                    updatedAt: '2026-08-18T10:02:47.883Z'
                    updatedBy: d9164fbd-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                  prod:
                    version: 11
                    updatedAt: '2026-08-18T11:40:09.018Z'
                    updatedBy: d9164fbd-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        '400':
          description: The `cursor` could not be read.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: Invalid pagination cursor
                error: Bad Request
                statusCode: 400
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    AssistantVersionList:
      type: object
      properties:
        versions:
          type: array
          description: Newest first.
          items:
            $ref: '#/components/schemas/AssistantVersion'
        aliases:
          $ref: '#/components/schemas/AssistantAliases'
        nextCursor:
          type: string
          description: Present while more pages exist.
    Error:
      type: object
      properties:
        message:
          description: >-
            One message per failed field for validation errors, a single string
            otherwise.
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        error:
          type: string
        statusCode:
          type: integer
    AssistantVersion:
      type: object
      properties:
        version:
          type: integer
        name:
          type: string
          description: The assistant's name as it was published.
        description:
          type: string
        message:
          type: string
          description: >-
            The note sent with the first publish of this version. Absent when
            none was sent.
        publishedAt:
          type: string
          format: date-time
        publishedBy:
          type: string
    AssistantAliases:
      type: object
      properties:
        draft:
          allOf:
            - $ref: '#/components/schemas/AssistantAlias'
          description: The copy you edit. Every save moves it.
        prod:
          allOf:
            - $ref: '#/components/schemas/AssistantAlias'
          description: >-
            What calls run by default. Absent until the first publish, and until
            then calls run the draft.
      required:
        - draft
    AssistantAlias:
      type: object
      description: Where an alias points, and who last moved it.
      properties:
        version:
          type: integer
          minimum: 1
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
          description: The API key or portal user that saved or published.
  responses:
    Unauthorized:
      description: A bearer key was sent but is not recognized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: invalid authorization
            error: Unauthorized
            statusCode: 401
    Forbidden:
      description: No API key sent, or the key lacks permission for this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Forbidden resource
            error: Forbidden
            statusCode: 403
    NotFound:
      description: No such resource in the API key's project.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: 'Realtime assistant not found: 00000000-0000-4000-8000-000000000000'
            error: Not Found
            statusCode: 404
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: Project API key (`sk_api_…`).

````