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

# Get one version of a presentation video, ready to play

> The version's document, its validation reports and narration timing, with short-lived links (at most 15 minutes; ask again to refresh) to the narration audio, captions (WebVTT) and poster when they exist, and to the Digital Twin's recorded face (`media.presenter`, a muted video) once it is ready. The player's fonts and logo are public files under `assets.base`. For an administrator's support read, claims and source excerpts from files outside the Digital Twin's shared vault are hidden.




## OpenAPI

````yaml /mdx/api-reference/runtime/runtime-api.json get /api/user/presentations/{id}/revisions/{n}
openapi: 3.0.0
info:
  title: Pria Runtime API
  version: 2.0.236
  description: >-
    Pria API Documentation Praxis's developer platform is a core part of our
    mission to empower organizations to grow better. Our APIs are designed to
    enable teams of any shape or size to build robust integrations that help
    them customize and get the most value out of Pria. All Pria APIs are built
    using REST conventions and designed to have a predictable URL structure.
    <br/>  <br/>They use many standard HTTP features, including methods (POST,
    GET, PUT, DELETE) and error response codes.  <br/> <br/>All API calls are
    made under https://hiimpria.ai/api and all responses return standard JSON.
    In these docs, you'll find lists of all available endpoints for a given API,
    along with interactive code blocks for building requests. For walkthroughs
    of basic usage for these APIs, check out the API guides. <br/> <br/>A
    session that a course page (Canvas) opened for an administrator — or that a
    Digital Twin's sign-in provider opened for one of its people — starts with
    user rights in that twin only: until the person confirms it's them with a
    code (POST /api/user/launch-scope/challenge, then /api/auth/mfa-resend and
    /api/auth/mfa-verify), every route outside that twin's day-to-day work
    answers 403 with code LAUNCH_SCOPE_STEP_UP and the twin's id.
servers:
  - url: https://pria.praxislxp.com
    description: Pria API Server
security: []
tags:
  - name: Authentication
    description: User authentication, registration, and password management (/api/auth)
  - name: OAuth
    description: OAuth authentication providers - Google, GitHub, SSO (/api/auth/oauth)
  - name: User
    description: User profile management and account operations (/api/user)
  - name: User Institutions
    description: User institution memberships and switching (/api/user/institution)
  - name: User Tools
    description: Available tools for authenticated users (/api/user/tools)
  - name: Institutions
    description: Institution settings and configuration (/api/user/institution)
  - name: Conversation
    description: AI conversation and Q&A endpoints (/api/ai)
  - name: Realtime
    description: Real-time voice AI and WebRTC sessions (/api/ai/rt)
  - name: Assistant
    description: AI assistant configuration and management (/api/user/assistant)
  - name: History
    description: Conversation history and favorites (/api/user/history)
  - name: RAG
    description: >-
      Document upload, embedding, and retrieval-augmented generation
      (/api/user/files, /api/user/rag)
  - name: Setting
    description: Instance variables and settings management (/api/user/setting)
  - name: Branding
    description: Digital twin branding and customization (/api/agent/branding)
  - name: Agent
    description: Agent engagement and session management (/api/agent)
  - name: SDK Launch
    description: >-
      SDK launch token signing and verification for secure iframe embedding
      (/api/auth/sdk-sign, /api/auth/sdk-verify)
  - name: Testing
    description: Health checks, diagnostics, and test endpoints (/api/test)
  - name: Admin Accounts
    description: Account management for super admins (/api/admin/account)
  - name: Admin Institutions
    description: Institution management for admins (/api/admin/institution)
  - name: Admin Users
    description: User management for admins (/api/admin/user)
  - name: Admin Entitlements
    description: >-
      User-institution relationships and permissions
      (/api/admin/userInstitution)
  - name: Admin Sessions
    description: Session management for admins (/api/admin/session)
  - name: Admin Histories
    description: Conversation history management and analytics (/api/admin/history)
  - name: Admin Assistants
    description: AI assistant management for admins (/api/admin/assistant)
  - name: Admin Questions
    description: Institution question and prompt management (/api/admin/question)
  - name: Admin Tools
    description: Tool configuration management (/api/admin/tool)
  - name: Admin AI Models
    description: AI model configuration (/api/admin/aimodel)
  - name: Admin MCP Servers
    description: Model Context Protocol server management (/api/admin/mcpserver)
  - name: Admin Feedbacks
    description: User feedback management (/api/admin/feedback)
  - name: Admin Uploads
    description: Upload management (/api/admin/upload)
  - name: Admin Charts
    description: Analytics and visualization chart management (/api/admin/chart)
  - name: Audio Notes
    description: Capture and ingest spoken notes into the personal vault
  - name: Memory
    description: User-facing memory parameters (personal + shared instance memory).
  - name: My Data
    description: >-
      GDPR controls — personal-scope counts, async ZIP-by-email export, and
      scoped soft-delete. Every endpoint pins `user = req.user._id` AND
      `institution: null`; institution-scoped data is governed by the
      institution's own retention policy and never reached from here.
  - name: Questions
    description: >-
      User-facing read of the onboarding question bank used by the "create a
      digital twin" wizard.
  - name: Transcription
    description: >-
      One-shot speech-to-text for in-place dictation. Audio blob in, transcript
      out — no Upload / History / RAG embeddings are persisted. Use
      `/audio-notes` for anything durable.
paths:
  /api/user/presentations/{id}/revisions/{n}:
    get:
      tags:
        - Presentations
      summary: Get one version of a presentation video, ready to play
      description: >
        The version's document, its validation reports and narration timing,
        with short-lived links (at most 15 minutes; ask again to refresh) to the
        narration audio, captions (WebVTT) and poster when they exist, and to
        the Digital Twin's recorded face (`media.presenter`, a muted video) once
        it is ready. The player's fonts and logo are public files under
        `assets.base`. For an administrator's support read, claims and source
        excerpts from files outside the Digital Twin's shared vault are hidden.
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
        - in: path
          name: 'n'
          required: true
          description: >-
            The revision number (a row's `number`, not its `version`); a
            revision removed by retention → 404
          schema:
            type: integer
            minimum: 1
            maximum: 99999
      responses:
        '200':
          description: The version
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  access:
                    type: string
                    enum:
                      - owner
                      - admin
                  revision:
                    type: object
                    properties:
                      number:
                        type: integer
                        example: 22
                      version:
                        type: integer
                        example: 1
                      parent:
                        type: integer
                        nullable: true
                      document:
                        type: object
                        description: The praxis-presentation/1 document
                      contentReport:
                        type: object
                        nullable: true
                      timingReport:
                        type: object
                        nullable: true
                      rendererVersion:
                        type: string
                      authorRole:
                        type: string
                      reason:
                        type: string
                      narration:
                        type: object
                        properties:
                          status:
                            type: string
                            enum:
                              - none
                              - pending
                              - running
                              - ready
                              - failed
                          timeline:
                            type: object
                          sceneOffsets:
                            type: array
                            items:
                              type: number
                          words:
                            type: array
                            items:
                              type: object
                      presenter:
                        type: object
                        nullable: true
                        description: >-
                          The Digital Twin's face for this version (null when it
                          has none)
                        properties:
                          status:
                            type: string
                            enum:
                              - queued
                              - launching
                              - recording
                              - aligning
                              - ready
                              - failed
                              - skipped
                          queuedAt:
                            type: string
                            format: date-time
                            description: >-
                              When the face job was queued; only while it is in
                              flight (queued … aligning)
                          startedAt:
                            type: string
                            format: date-time
                            description: >-
                              When the face job started running; only while it
                              runs (launching, recording, aligning) — the
                              face-wait countdown starts here. A queued job may
                              wait behind another of your face jobs, so it has
                              none
                          error:
                            type: string
                            example: LIPSYNC
                          reused:
                            type: boolean
                            description: >-
                              The face of an earlier version with the same
                              narration
                  media:
                    type: object
                    properties:
                      audio:
                        $ref: '#/components/schemas/PresentationSignedUrl'
                      vtt:
                        $ref: '#/components/schemas/PresentationSignedUrl'
                      poster:
                        $ref: '#/components/schemas/PresentationSignedUrl'
                      presenter:
                        $ref: '#/components/schemas/PresentationSignedUrl'
                      pictures:
                        type: object
                        description: >
                          Only when the document has picture scenes (looks plan
                          §3.6). Asset ref (asset:<24 hex>) → presigned GET (≤
                          15 min) for each picture the caller may see (ready; a
                          vault file still readable and not confidential). A ref
                          that is absent draws the look's texture. Refresh with
                          this read.
                        additionalProperties:
                          $ref: '#/components/schemas/PresentationSignedUrl'
                      logos:
                        type: object
                        description: >
                          Only when the document's customer brand names a logo
                          (brands plan §3.4). Logo asset ref (asset:<24 hex>) →
                          presigned GET (≤ 15 min) for each brand logo the
                          caller may see; separate from pictures. A ref that is
                          absent draws the brand name instead. Refresh with this
                          read.
                        additionalProperties:
                          $ref: '#/components/schemas/PresentationSignedUrl'
                  assets:
                    type: object
                    properties:
                      base:
                        type: string
                        example: /presentation-renderer/
                      sourceLabels:
                        type: object
                        description: >-
                          Claim source ref → readable source name for the
                          player's source footer (the export manifest's labels),
                          for the sources the caller can read; an administrator
                          gets names only for unredacted sources.
                        additionalProperties:
                          type: string
                        example:
                          upload:64f1c0de0000000000000001: 'Praxis AI: Human-First Digital Twins'
                  presenterOnEdit:
                    type: boolean
                    description: >-
                      Owner only (false for an admin read): a narration edit
                      records the Digital Twin's face again for the whole video
                      (credits)
                  length:
                    type: object
                    description: >-
                      The video's length and the waits that go with it (a video
                      made before lengths existed is 1 minute)
                    properties:
                      seconds:
                        type: integer
                        example: 60
                      waits:
                        type: object
                        properties:
                          build:
                            type: array
                            nullable: true
                            items:
                              type: integer
                            example:
                              - 10
                              - 20
                            description: >-
                              Minutes a first build usually takes (null: a few
                              minutes)
                          faceS:
                            type: integer
                            example: 150
                            description: >-
                              Seconds the Digital Twin's face usually takes to
                              record
                          exportS:
                            type: integer
                            nullable: true
                            example: 180
                            description: >-
                              Seconds an export usually takes (null: no estimate
                              shown)
                      pollMinutes:
                        type: object
                        properties:
                          build:
                            type: integer
                            example: 10
                            description: How long the app keeps checking a build
                          face:
                            type: integer
                            example: 20
                            description: How long the app keeps checking the face
                  rerecord:
                    type: object
                    description: >-
                      Owner only, and only when a narration edit records the
                      face again: what that takes before you save
                    properties:
                      waitS:
                        type: integer
                        example: 150
                        description: About how many seconds the face takes to record again
                      credits:
                        type: number
                        nullable: true
                        example: 1.8
                        description: >-
                          Up to about how many credits that recording costs;
                          null when the Digital Twin pays for it with its own
                          presenter account
        '401':
          description: Not signed in
        '404':
          description: No such version, not yours, or the feature is off
      security:
        - apiKeyAuth: []
components:
  schemas:
    PresentationSignedUrl:
      type: object
      nullable: true
      properties:
        url:
          type: string
          description: Presigned GET, valid until expiresAt
        expiresAt:
          type: string
          format: date-time
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-access-token
      description: JWT token passed in x-access-token header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.