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

# Publish PAL

> Publishes the PAL Builder draft associated with this `pal_id`, making its content the live version used by new conversations, deployments, and public reads.

Call this after a draft-routed [Patch PAL](/api-reference/pals/patch-pal) response. That response includes a `publish_url` you can use directly. Publishing preserves the live `layers.conferencing` configuration and keeps the draft row available for future Builder edits.

If the PAL has no Builder draft, the call is idempotent: Tavus returns the current live PAL. You can pass either the stable live PAL id or its underlying draft id, although integrations should normally keep and publish the stable live `pal_id`.


<Info>
  For AI agents, use `https://docs.tavus.io/openapi.yaml` for the full HTTP API contract.
</Info>

<Note>
  Publish after editing a PAL Builder draft through [Patch PAL](/api-reference/pals/patch-pal). The patch response and `GET /v2/pals/{pal_id}?source=draft` both return the exact `publish_url`. Publishing makes those draft changes live for new conversations while preserving live-owned conferencing configuration.
</Note>


## OpenAPI

````yaml post /v2/pals/{pal_id}/publish
openapi: 3.0.3
info:
  title: Tavus Developer API Collection
  version: 1.0.0
  contact: {}
servers:
  - url: https://tavusapi.com
security:
  - apiKey: []
tags:
  - name: Videos
  - name: Faces
  - name: Voices
  - name: Conversations
  - name: Deployments
  - name: PALs
  - name: Tools
  - name: PAL Tools
  - name: Pronunciation Dictionaries
  - name: Replacements
  - name: Transcriptions
  - name: Documents
paths:
  /v2/pals/{pal_id}/publish:
    parameters:
      - name: pal_id
        in: path
        required: true
        description: The unique identifier of the PAL.
        schema:
          type: string
          example: pcb7a34da5fe
    post:
      tags:
        - PALs
      summary: Publish PAL
      description: >
        Publishes the PAL Builder draft associated with this `pal_id`, making
        its content the live version used by new conversations, deployments, and
        public reads.


        Call this after a draft-routed [Patch
        PAL](/api-reference/pals/patch-pal) response. That response includes a
        `publish_url` you can use directly. Publishing preserves the live
        `layers.conferencing` configuration and keeps the draft row available
        for future Builder edits.


        If the PAL has no Builder draft, the call is idempotent: Tavus returns
        the current live PAL. You can pass either the stable live PAL id or its
        underlying draft id, although integrations should normally keep and
        publish the stable live `pal_id`.
      operationId: publishPal
      responses:
        '200':
          description: The published live PAL. `status` is `success`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                    example: success
                  pal_id:
                    type: string
                    description: >-
                      The stable id of the live PAL that now contains the
                      published draft content.
                    example: pcb7a34da5fe
                  pal_name:
                    type: string
                    description: The published PAL name.
                    example: Life Coach
                  system_prompt:
                    type: string
                    description: The published system prompt.
                    example: >-
                      As a Life Coach, you are a dedicated professional who
                      specializes in...
                  updated_at:
                    type: string
                    description: The date and time when the live PAL was updated.
                    example: '2026-07-14T17:00:00.000000'
        '400':
          description: >-
            Bad Request - the PAL does not exist or is not editable by the
            authenticated account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: The error message.
        '401':
          description: UNAUTHORIZED
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invalid access token
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````