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

# Retrieve Session Template

> Retrieve a session template by ID.



## OpenAPI

````yaml /specs/openapi-interactive.json get /api/v1/session_template/{sessiontemplate_id}/
openapi: 3.0.3
info:
  title: Perso Interactive API
  version: 0.0.0
servers:
  - url: https://platform.perso.ai
security: []
tags:
  - name: Embed
paths:
  /api/v1/session_template/{sessiontemplate_id}/:
    get:
      tags:
        - Session Resources
      summary: Retrieve Session Template
      description: Retrieve a session template by ID.
      operationId: v1_session_template_retrieve
      parameters:
        - in: path
          name: sessiontemplate_id
          schema:
            type: string
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionTemplate'
          description: ''
        '401':
          description: Unauthorized - Invalid or missing authentication credentials.
        '403':
          description: Forbidden - You do not have permission to perform this action.
        '404':
          description: Not Found - The requested resource could not be found.
        '500':
          description: Internal Server Error - An unexpected error occurred.
      security:
        - PersoPlatform-APIKey: []
        - {}
components:
  schemas:
    SessionTemplate:
      type: object
      properties:
        sessiontemplate_id:
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 255
        description:
          type: string
          nullable: true
        prompt:
          allOf:
            - $ref: '#/components/schemas/Prompt'
          readOnly: true
        capability:
          type: array
          items:
            $ref: '#/components/schemas/SessionCapability'
          readOnly: true
        document:
          allOf:
            - $ref: '#/components/schemas/Document'
          readOnly: true
        llm_type:
          allOf:
            - $ref: '#/components/schemas/LLMType'
          readOnly: true
        tts_type:
          allOf:
            - $ref: '#/components/schemas/TTSType'
          readOnly: true
        text_normalization_config:
          allOf:
            - $ref: '#/components/schemas/TextNormalizationConfig'
          readOnly: true
        text_normalization_locale:
          type: string
          nullable: true
          maxLength: 10
        stt_type:
          allOf:
            - $ref: '#/components/schemas/STTType'
          readOnly: true
        stt_text_normalization_config:
          allOf:
            - $ref: '#/components/schemas/TextNormalizationConfig'
          readOnly: true
        stt_text_normalization_locale:
          type: string
          nullable: true
          maxLength: 10
        model_style:
          allOf:
            - $ref: '#/components/schemas/ModelStyle'
          readOnly: true
        agent:
          type: string
          nullable: true
          maxLength: 255
        agent_config:
          allOf:
            - $ref: '#/components/schemas/AgentConfig'
          readOnly: true
        interactive_agent_config:
          allOf:
            - $ref: '#/components/schemas/InteractiveAgentConfig'
          readOnly: true
        padding_left:
          type: number
          format: double
          maximum: 1
          minimum: -1
          nullable: true
        padding_top:
          type: number
          format: double
          maximum: 1
          minimum: 0
          nullable: true
        padding_height:
          type: number
          format: double
          maximum: 5
          minimum: 0
          nullable: true
        background_image:
          allOf:
            - $ref: '#/components/schemas/BackgroundImage'
          readOnly: true
        extra_data:
          nullable: true
        mcp_servers:
          type: array
          items:
            $ref: '#/components/schemas/MCPServer'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        last_used_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
      required:
        - agent_config
        - background_image
        - capability
        - created_at
        - document
        - interactive_agent_config
        - last_used_at
        - llm_type
        - mcp_servers
        - model_style
        - name
        - prompt
        - sessiontemplate_id
        - stt_text_normalization_config
        - stt_type
        - text_normalization_config
        - tts_type
    Prompt:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
        prompt_id:
          type: string
          readOnly: true
        system_prompt:
          type: string
          description: >-
            Instructions sent to the LLM at the start of every conversation
            using this prompt.
        require_document:
          type: boolean
          description: >-
            When require_document is True, the System prompt must include
            '{context}' string to be replaced with the document search result in
            the prompt.require_document 가 True 인 경우, 시스템 프롬프트는 '{context}' 문자열을
            포함해야 하며, 해당 문자열은 프롬프트에서 문서 검색 결과로 대체됩니다.
        intro_message:
          type: string
          description: First message the AI speaks when a session opens (optional).
      required:
        - name
        - prompt_id
        - system_prompt
    SessionCapability:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/CapabilityTypeEnum'
        description:
          type: string
          nullable: true
      required:
        - name
    Document:
      type: object
      properties:
        document_id:
          type: string
          readOnly: true
        title:
          type: string
          maxLength: 100
        file:
          type: string
          format: uri
          description: >-
            Source document file (PDF, DOCX, or TXT) to ingest as a knowledge
            base.
          pattern: (?:xls|xlsx|csv)$
        description:
          type: string
        search_count:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          description: >-
            Number of search results to return per query (default depends on
            model).
        ef_search:
          type: integer
          maximum: 500
          minimum: 1
          nullable: true
          description: >-
            HNSW `ef_search` parameter for the vector index (1-500). Higher =
            more accurate, slower.
        processed:
          type: boolean
          readOnly: true
        processed_v2:
          type: boolean
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - created_at
        - document_id
        - file
        - processed
        - processed_v2
        - title
        - updated_at
    LLMType:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
          pattern: ^[-a-zA-Z0-9_]+$
        service:
          $ref: '#/components/schemas/LLMProviderEnum'
      required:
        - name
    TTSType:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
          pattern: ^[-a-zA-Z0-9_]+$
        streamable:
          type: boolean
        service:
          $ref: '#/components/schemas/TTSProviderEnum'
        model:
          type: string
          nullable: true
          description: applies to openai, elevenlabs
          maxLength: 100
        voice:
          type: string
          nullable: true
          description: applies to openai, elevenlabs, azure, onpremise
          maxLength: 100
        voice_settings:
          nullable: true
          description: applies to openai, elevenlabs, azure, onpremise
        style:
          type: string
          nullable: true
          description: applies to azure
          maxLength: 100
        voice_extra_data:
          nullable: true
          description: applies to azure
      required:
        - name
        - service
    TextNormalizationConfig:
      type: object
      properties:
        textnormalizationconfig_id:
          type: string
          readOnly: true
        name:
          type: string
          readOnly: true
        hook_enabled:
          type: boolean
          description: >-
            Call the pre/post hooks around regex rulesets (e.g. server-side
            locale detection for multi-language text). When disabled, hook URLs
            and args are kept but not used.
        pre_hook_url:
          type: string
          nullable: true
          readOnly: true
        pre_hook_args:
          nullable: true
        post_hook_url:
          type: string
          nullable: true
          readOnly: true
        post_hook_args:
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - created_at
        - name
        - post_hook_url
        - pre_hook_url
        - textnormalizationconfig_id
    STTType:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
          pattern: ^[-a-zA-Z0-9_]+$
        service:
          $ref: '#/components/schemas/STTProviderEnum'
        options:
          nullable: true
      required:
        - name
        - service
    ModelStyle:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        model:
          type: string
        model_file:
          type: string
          format: uri
          nullable: true
        model_files:
          type: array
          items:
            $ref: '#/components/schemas/AIHumanModelFile'
          readOnly: true
        style:
          type: string
          maxLength: 100
        file:
          type: string
          format: uri
          nullable: true
        files:
          type: array
          items:
            $ref: '#/components/schemas/ModelStyleFile'
          readOnly: true
        platform_type:
          allOf:
            - $ref: '#/components/schemas/PlatformTypeEnum'
          description: |-
            Platform type for this model style

            * `android` - Android
            * `ios` - iOS
            * `webrtc` - WebRTC
        configs:
          type: array
          items:
            $ref: '#/components/schemas/ModelStyleConfig'
          readOnly: true
      required:
        - configs
        - files
        - model
        - model_files
        - name
        - style
    AgentConfig:
      type: object
      properties:
        agentconfig_id:
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 100
        config: {}
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - agentconfig_id
        - created_at
        - name
        - updated_at
    InteractiveAgentConfig:
      type: object
      description: >-
        Read-only discovery view of an interactive-agent config. Exposes the

        identifier/name/owner plus the client-facing intro_message so a caller
        can

        pick a `pliac-*` to attach at session create; prompts, tools, per-role

        models, endpoint and credentials are NOT exposed (operator-managed, and

        globals are shared across orgs).
      properties:
        interactiveagentconfig_id:
          type: string
          readOnly: true
        name:
          type: string
          readOnly: true
        description:
          type: string
          readOnly: true
        intro_message:
          type: string
          readOnly: true
        organization:
          type: string
          nullable: true
          readOnly: true
      required:
        - description
        - interactiveagentconfig_id
        - intro_message
        - name
        - organization
    BackgroundImage:
      type: object
      properties:
        backgroundimage_id:
          type: string
          readOnly: true
        title:
          type: string
          maxLength: 100
        image:
          type: string
          format: uri
          description: Image file to use as the session background (PNG/JPEG).
        created_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - backgroundimage_id
        - created_at
        - image
        - title
    MCPServer:
      type: object
      properties:
        mcpserver_id:
          type: string
          readOnly: true
        name:
          type: string
          maxLength: 100
        description:
          type: string
        organization:
          type: string
          format: uuid
          readOnly: true
          nullable: true
        url:
          type: string
          format: uri
          maxLength: 200
        auth_header:
          nullable: true
        transport_protocol:
          allOf:
            - $ref: '#/components/schemas/TransportProtocolEnum'
          description: |-
            Transport protocol for MCP server communication

            * `sse` - Server-Sent Events (SSE)
            * `streamable_http` - Streamable HTTP
        server_timeout_sec:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          description: Timeout in seconds
        extra_data:
          nullable: true
      required:
        - mcpserver_id
        - name
        - organization
        - url
    CapabilityTypeEnum:
      enum:
        - LLM
        - TTS
        - STT
        - STF_ONPREMISE
        - STF_WEBRTC
      type: string
      description: |-
        * `LLM` - LLM
        * `TTS` - TTS
        * `STT` - STT
        * `STF_ONPREMISE` - STF_ONPREMISE
        * `STF_WEBRTC` - STF_WEBRTC
    LLMProviderEnum:
      enum:
        - openai
        - azure_openai
        - claude
        - google
      type: string
      description: |-
        * `openai` - OpenAI
        * `azure_openai` - Azure OpenAI
        * `claude` - Claude
        * `google` - Google
    TTSProviderEnum:
      enum:
        - openai
        - elevenlabs
        - azure
        - onpremise
        - perso_speech
        - fish
        - inworld
      type: string
      description: |-
        * `openai` - openai
        * `elevenlabs` - elevenlabs
        * `azure` - azure
        * `onpremise` - onpremise
        * `perso_speech` - perso speech
        * `fish` - fish
        * `inworld` - inworld
    STTProviderEnum:
      enum:
        - WHISPER
        - AZURE_CONTINUOUS_STT
        - OPENAI
      type: string
      description: |-
        * `WHISPER` - Whisper
        * `AZURE_CONTINUOUS_STT` - Azure Continuous STT
        * `OPENAI` - OpenAI
    AIHumanModelFile:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        file:
          type: string
          format: uri
          nullable: true
      required:
        - name
    ModelStyleFile:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        file:
          type: string
          format: uri
          nullable: true
      required:
        - name
    PlatformTypeEnum:
      enum:
        - android
        - ios
        - webrtc
      type: string
      description: |-
        * `android` - Android
        * `ios` - iOS
        * `webrtc` - WebRTC
    ModelStyleConfig:
      type: object
      properties:
        modelstyleconfig_id:
          type: string
          maxLength: 100
        key:
          type: string
          maxLength: 100
          pattern: ^[-a-zA-Z0-9_]+$
        value:
          type: string
      required:
        - key
        - modelstyleconfig_id
        - value
    TransportProtocolEnum:
      enum:
        - sse
        - streamable_http
      type: string
      description: |-
        * `sse` - Server-Sent Events (SSE)
        * `streamable_http` - Streamable HTTP
  securitySchemes:
    PersoPlatform-APIKey:
      type: apiKey
      in: header
      name: PersoPlatform-APIKey

````