openapi: 3.1.0
info:
  title: Simli
  version: 1.0.0
security:
  - ApiKeyAuth: []
servers:
  - url: https://api.simli.ai/
    description: API server

paths:
  /compose/ice:
    get:
      summary: Get Ice Servers
      description: Create a new set of temporary ICE Server Credentials for WebRTC P2P session
      operationId: getIceServers_compose_ice_get
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  minProperties: 1
                  properties:
                    urls:
                      type: string
                    username:
                      type: string
                    credential:
                      type: string

        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /compose/token:
    post:
      summary: Compose Session Token
      description: Create a temporary Simli Compose Session Token
      operationId: start_audio_to_video_session_compose_token_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/StartStreamingSessionRequest"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_token:
                    type: string
        "400":
          description: Invalid Data
          content:
            application/json:
              schema:
                type: object
                properties:
                  session_token:
                    type: string
                    description: FAIL TOKEN
                  detail:
                    type: string
                    description: Fail Reason

        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /static/audio:
    post:
      summary: Generate Static Video
      description: Generate and stream a static video file from a given audio sample
      operationId: audioToVideoInterface_static_audio_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AudioToVideoRequest"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                contentMediaType: application/json
                properties:
                  hls_url:
                    type: string
                    example: "https://api.simli.ai/hls/path-to-file/output.m3u8"
                  mp4_url:
                    type: string
                    example: "https://api.simli.ai/mp4/path-to-file/output.mp4"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /static/hls/{destination}/{file}:
    get:
      summary: Get HLS Segment
      security: []
      description: Get HLS Stream of Generated Video
      operationId: getCachedVideo_static_hls__machineIP___file__get
      parameters:
        - name: destination
          in: path
          required: true
          schema:
            type: string
        - name: file
          in: path
          required: true
          schema:
            type: string
            title: File
      responses:
        "200":
          description: Successful Response
          content:
            application/x-mpegURL:
              schema: {}
            video/MP2T:
              schema: {}
        "404":
          description: File not found
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /static/mp4/{destination}/{file}:
    get:
      summary: Get MP4 of Generated Video
      operationId: getCachedVideoMp4_static_mp4__machineIP___file__get
      security: []
      parameters:
        - name: destination
          in: path
          required: true
          schema:
            type: string
        - name: file
          in: path
          required: true
          schema:
            type: string
            title: File
      responses:
        "200":
          description: Successful Response
          content:
            video/mp4:
              schema: {}
        "404":
          description: File not found

        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /faces/trinity:
    post:
      summary: Generate Trinity Face
      operationId: enqueueGSAGeneration_faces_gs_create_post
      parameters:
        - name: gsVersion
          in: query
          required: false
          schema:
            allOf:
              - $ref: "#/components/schemas/TrinityVersion"
            default: GSA_1.0
        - name: face_name
          in: query
          required: false
          schema:
            type: string
            default: untitled_avatar
            title: Face Name
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_enqueueGSAGeneration_faces_gs_create_post"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /faces/trinity/preprocess:
    post:
      summary: Preprocess Trinity Face Image
      description: >-
        Reframes a portrait to the framing Trinity expects: the head centred with
        equal padding above and below, squared to the camera, on a simplified
        version of the image's own background. Returns the reframed PNG.
      operationId: preprocess_image_faces_trinity_preprocess_post
      parameters:
        - name: retry
          in: query
          required: false
          description: >-
            Render at higher quality. Substantially slower - roughly 160 seconds
            against 25 - so use it to re-run an image whose first result was
            unsatisfactory rather than as the default.
          schema:
            type: boolean
            default: false
            title: Retry
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_preprocess_image_faces_trinity_preprocess_post"
  /faces/trinity/generation_status:
    get:
      summary: Check Trinity Generation Status
      operationId: getRequestStatus_faces_gs_status_get
      parameters:
        - name: face_id
          in: query
          required: false
          schema:
            type: string
            title: Face Id
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /faces:
    get:
      summary: Get all faces
      responses:
        "200":
          description: List of faces
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/FacesResponse"

  /faces/trinity/{id}:
    delete:
      summary: Delete a face
      description: Removes a face. This can not be undone. All agents connected to this face_id will be broken
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "204":
          description: Face deleted successfully
        "400":
          description: Invalid input
        "401":
          description: Unauthorized
  /integrations/livekit/agents:
    post:
      security: []
      summary: Start Livekit Agents Session
      operationId: init_integrations_livekit_agents_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LiveKitInitializationRequest"
        required: true
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                  session_id:
                    type: string
                    format: uuid
                  destination:
                    type: string
                    format: base64
        "400":
          description: Session Failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"

  /history/sessions:
    get:
      summary: Retrieve session history
      description: Returns a list of session history records for the authenticated user
      parameters:
        - name: startTime
          in: query
          description: Filter records from this Unix timestamp
          required: false
          schema:
            type: integer
            example: 1745750387
        - name: endTime
          in: query
          description: Filter records until this Unix timestamp
          required: false
          schema:
            type: integer
            example: 1745750408
      responses:
        "200":
          description: A list of session history records
          content:
            application/json:
              schema:
                type: object
                properties:
                  sessions:
                    type: array
                    items:
                      $ref: "#/components/schemas/HistoryRecord"
        "401":
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
        "500":
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"

  /ratelimiter/sessions:
    get:
      summary: Active Session Count
      responses:
        "200":
          description: "Active session Count"
          content:
            application/json:
              schema:
                type: object
                properties:
                  currentUsage:
                    type: integer
        "401":
          description: Unauthorized - Invalid API key
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Error"
  /faces/legacy:
    post:
      summary: Generate Legacy Face
      deprecated: true
      operationId: generateFaceIDAPI_faces_legacy_create_post
      parameters:
        - name: characterVersion
          in: query
          required: false
          schema:
            allOf:
              - $ref: "#/components/schemas/CharacterVersion"
            default: "1.5"
        - name: face_name
          in: query
          required: false
          schema:
            type: string
            default: untitled_avatar
            title: Face Name
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: "#/components/schemas/Body_generateFaceIDAPI_faces_legacy_create_post"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"

  /faces/legacy/{id}:
    delete:
      deprecated: true
      summary: Delete a face
      description: Removes a face. This can not be undone. All agents connected to this face_id will be broken
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        "204":
          description: Face deleted successfully
        "400":
          description: Invalid input
        "401":
          description: Unauthorized

  /faces/legacy/generation_status:
    get:
      deprecated: true
      summary: Get Legacy Face Generation Status
      operationId: getRequestStatus_faces_legacy_status_get
      parameters:
        - name: face_id
          in: query
          required: false
          schema:
            type: string
            title: Face Id
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"

  /auto/agent:
    post:
      deprecated: true
      summary: Create New Agent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AgentRequest"
      responses:
        "201":
          description: Agent created successfully
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AgentResponse"
        "400":
          description: Invalid input
  /auto/agents:
    get:
      deprecated: true
      summary: Get All Agents
      responses:
        "200":
          description: List of agents
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/AgentResponse"
  /auto/agent/{id}:
    parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
          format: uuid
    get:
      deprecated: true
      summary: Get Agent
      responses:
        "200":
          description: A single agent
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AgentResponse"
    put:
      summary: Update Agent
      deprecated: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AgentUpdate"
      responses:
        "200":
          description: Agent updated successfully
        "404":
          description: Agent not found
    delete:
      summary: Delete Agent
      deprecated: true
      responses:
        "204":
          description: Agent deleted successfully
        "404":
          description: Agent not found
  /auto/token:
    post:
      summary: Create Simli Auto Session Token
      description: Create a temporary session token for Simli Auto Sessions
      deprecated: true
      operationId: createPipecatSessionToken_auto_token_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TokenRequest"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /auto/start/configurable:
    post:
      summary: Start Auto Session
      description: Start new Simli Auto Session without preconfigured agent
      deprecated: true
      operationId: startPipecatSession_auto_start_configurable_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ConfigurableSessionRequest"
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionDetails"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /auto/start/{agent_id}/{session_token}:
    get:
      security: []
      summary: Start Auto Session from config
      deprecated: true
      operationId: startAgentIDQuery_auto_start__agent_id___session_token__post
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            title: Agent Id
        - name: session_token
          in: path
          required: true
          schema:
            type: string
            title: Session Token
        - name: redirect
          in: query
          required: false
          schema:
            type: boolean
            default: false
            title: Redirect
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SessionDetails"
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"
  /auto/transcript/{session_id}:
    get:
      summary: Get Simli Auto Transcript
      deprecated: true
      operationId: getE2ETranscript_auto_transcript__session_id__get
      parameters:
        - name: session_id
          in: query
          required: true
          schema:
            type: string
            title: Sessionid
      responses:
        "200":
          description: Successful Response
          content:
            application/json:
              schema: {}
        "422":
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/HTTPValidationError"

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-simli-api-key

  schemas:
    FacesRequest:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          format: uuid
          description: "Unique identifier for the face, generated by the MySQL service"
        owner_id:
          type: string
          description: "Unique identifier for the owner of the face"
        simli_version:
          type: integer
          description: "Version of the Simli model used for the face"
          example: 1
      required:
        - id
        - owner_id
    FacesResponse:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          format: uuid
          description: "Unique identifier for the face, generated by the MySQL service"
        owner_id:
          type: string
          description: "Unique identifier for the owner of the face"
        simli_version:
          type: integer
          description: "Version of the Simli model used for the face"
          example: 1
        created_at:
          type: string
          format: date-time
          description: "Timestamp when the face was created"
        updated_at:
          type: string
          format: date-time
          description: "Timestamp when the face was last updated"
      required:
        - id
        - owner_id
        - simli_version
        - created_at
        - updated_at
    AgentResponse:
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
          format: uuid
          description: "Unique identifier for the agent, generated by the MySQL service"
        face_id:
          type: string
          format: uuid
        name:
          type: string
          default: "Untitled Agent"
        first_message:
          type: string
        prompt:
          type: string
        voice_provider:
          type: string
          enum: ["elevenlabs", "cartesia"]
        voice_id:
          type: string
          format: uuid
        voice_model:
          type: string
          example: sonic-english
        language:
          type: string
        emotion:
          type: string
          format: uuid
        llm_model:
          type: string
          example: gpt-4o-mini
        llm_endpoint:
          type: string
          description: "The URL of the custom LLM to use"
          example: https://api.example.com/v1/chat/completions
        max_idle_time:
          type: integer
          default: 300
        max_session_length:
          type: integer
          default: 3600
        owner_id:
          type: string
          description: "Unique identifier for the owner of the agent"
        llm_provider:
          type: string
          enum: ["openai", "google", "user"]
          description: "The provider of the LLM used by the agent"
        simli_version:
          type: integer
          description: "Version of the Simli model used for the face"
          example: 1
        created_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was created"
        updated_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was last updated"
      required:
        - id
        - face_id
        - name
        - first_message
        - prompt
        - voice_provider
        - voice_id
        - voice_model
        - language
        - emotion
        - llm_model
        - llm_endpoint
        - max_idle_time
        - max_session_length
        - owner_id
        - llm_provider
        - created_at
        - updated_at
    AgentRequest:
      type: object
      additionalProperties: false
      properties:
        face_id:
          type: string
          format: uuid
        name:
          type: string
          default: "Untitled Agent"
        first_message:
          type: string
        prompt:
          type: string
        voice_provider:
          type: string
          enum: ["elevenlabs", "cartesia"]
        voice_id:
          type: string
          format: uuid
        voice_model:
          type: string
          example: sonic-english
        owner_id:
          type: string
          description: "Unique identifier for the owner of the agent"
        language:
          type: string
        emotion:
          type: string
          format: uuid
        llm_model:
          type: string
          example: gpt-4o-mini
        llm_endpoint:
          type: string
          description: "The URL of the custom LLM to use"
          example: https://api.example.com/v1/chat/completions
        max_idle_time:
          type: integer
          default: 300
        max_session_length:
          type: integer
          default: 3600
        llm_provider:
          type: string
          enum: ["openai", "google", "user"]
          description: "The provider of the LLM used by the agent"
        created_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was created"
        updated_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was updated"
      required:
        - face_id
        - name
    AgentUpdate:
      type: object
      additionalProperties: false
      properties:
        face_id:
          type: string
          format: uuid
        name:
          type: string
        first_message:
          type: string
        prompt:
          type: string
        voice_provider:
          type: string
          enum: ["elevenlabs", "cartesia"]
        voice_id:
          type: string
          format: uuid
        voice_model:
          type: string
          example: sonic-english
        llm_model:
          type: string
          example: gpt-4o-mini
        llm_endpoint:
          type: string
          description: "The URL of the custom LLM to use"
          example: https://api.example.com/v1/chat/completions
        language:
          type: string
        emotion:
          type: string
          format: uuid
        max_idle_time:
          type: integer
        max_session_length:
          type: integer
        llm_provider:
          type: string
          enum: ["openai", "google", "user"]
          description: "The provider of the LLM used by the agent"
        created_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was created"
        updated_at:
          type: string
          format: date-time
          description: "Timestamp when the agent was updated"
    AudioToVideoRequest:
      properties:
        faceId:
          type: string
          title: Faceid
        audioBase64:
          type: string
          title: Audiobase64
        audioFormat:
          type: string
          enum:
            - pcm16
            - pcm32
            - wav
            - mp3
            - ogg
          title: Audioformat
        audioSampleRate:
          type: integer
          title: Audiosamplerate
          default: 16000
        audioChannelCount:
          type: integer
          title: Audiochannelcount
          default: 1
        videoStartingFrame:
          type: integer
          title: Videostartingframe
          default: 0
      type: object
      required:
        - faceId
        - audioBase64
        - audioFormat
      title: AudioToVideoRequest
    ConfigurableSessionRequest:
      properties:
        faceId:
          type: string
          title: Faceid
          default: tmp9i8bbq7c
        ttsProvider:
          allOf:
            - $ref: "#/components/schemas/TTS_Provider"
          default: Cartesia
        ttsAPIKey:
          anyOf:
            - type: string
            - type: "null"
          title: Ttsapikey
        ttsModel:
          type: string
          title: Ttsmodel
          default: sonic-turbo-2025-03-07
        voiceId:
          type: string
          title: Voiceid
          default: a167e0f3-df7e-4d52-a9c3-f949145efdab
        systemPrompt:
          anyOf:
            - type: string
            - type: "null"
          title: Systemprompt
          default:
            You are Chatbot, a friendly, helpful robot. Your goal is to demonstrate
            your capabilities in a succinct way. Your output will be converted
            to audio so don't include special characters in your answers.
            Respond to what the user said in a creative and helpful way, but
            keep your responses brief.
        firstMessage:
          anyOf:
            - type: string
            - type: "null"
          title: Firstmessage
        maxSessionLength:
          type: integer
          title: Maxsessionlength
          default: 3600
        maxIdleTime:
          type: integer
          title: Maxidletime
          default: 300
        language:
          type: string
          title: Language
          default: en
        customLLMConfig:
          anyOf:
            - $ref: "#/components/schemas/CustomLLMConfig"
            - type: "null"
        llmConfig:
          allOf:
            - $ref: "#/components/schemas/LLMConfig"
          default:
            model: gpt-4o-mini
            provider: OpenAI
        createTranscript:
          type: boolean
          title: Createtranscript
          default: false
        model:
          allOf:
            - $ref: "#/components/schemas/SimliModels"
          default: artalk
      type: object
      title: ConfigurableSessionRequest
    CustomLLMConfig:
      properties:
        model:
          type: string
          title: Model
        baseURL:
          type: string
          title: Baseurl
        llmAPIKey:
          type: string
          title: Llmapikey
      type: object
      required:
        - model
        - baseURL
        - llmAPIKey
      title: CustomLLMConfig
    Google_Models:
      type: string
      enum:
        - gemini-2.5-pro
        - gemini-2.5-flash
        - gemini-2.5-flash-lite-preview-06-17
      title: Google_Models
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: "#/components/schemas/ValidationError"
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LLMConfig:
      properties:
        model:
          anyOf:
            - $ref: "#/components/schemas/OpenAI_Models"
            - $ref: "#/components/schemas/Google_Models"
            - type: string
          title: Model
          default: gpt-4o-mini
        provider:
          allOf:
            - $ref: "#/components/schemas/LLM_Provider"
          default: OpenAI
        apiKey:
          anyOf:
            - type: string
            - type: "null"
          title: Apikey
        baseURL:
          anyOf:
            - type: string
            - type: "null"
          title: Baseurl
      type: object
      title: LLMConfig
    LLM_Provider:
      type: string
      enum:
        - OpenAI
        - Google
        - User
      title: LLM_Provider
    LiveKitInitializationRequest:
      properties:
        session_token:
          type: string
          title: Session Token
        livekit_token:
          type: string
          title: Livekit Token
        livekit_url:
          type: string
          title: Livekit Url
      type: object
      required:
        - session_token
        - livekit_token
        - livekit_url
      title: LiveKitInitializationRequest
    OpenAI_Models:
      type: string
      enum:
        - gpt-4o
        - gpt-4o-mini
        - gpt-4.1
        - gpt-4.1-mini
        - gpt-4.1-nano
      title: OpenAI_Models
    SessionDetails:
      properties:
        roomUrl:
          type: string
          title: Roomurl
        sessionId:
          type: string
          title: Sessionid
      type: object
      required:
        - roomUrl
        - sessionId
      title: SessionDetails
    SimliModels:
      type: string
      enum:
        - fasttalk
        - artalk
      title: SimliModels
    StartStreamingSessionRequest:
      properties:
        faceId:
          type: string
          title: Faceid
        apiVersion:
          type: string
          title: Apiversion
          const: v2
        sessionAggregator:
          anyOf:
            - type: string
            - type: "null"
          title: Sessionaggregator
        handleSilence:
          type: boolean
          title: Handlesilence
          default: true
        maxSessionLength:
          type: integer
          title: Maxsessionlength
          default: 3600
        maxIdleTime:
          type: integer
          title: Maxidletime
          default: 300
        startFrame:
          type: integer
          title: Startframe
          default: 0
        audioInputFormat:
          type: string
          title: Audioinputformat
          default: pcm16
      type: object
      required:
        - faceId
      title: StartStreamingSessionRequest
    TTS_Provider:
      type: string
      enum:
        - ElevenLabs
        - PlayHT
        - Cartesia
        - User
      title: TTS_Provider
    TokenRequest:
      properties:
        expiryStamp:
          anyOf:
            - type: integer
            - type: "null"
          title: Expirystamp
          default: -1
        simliAPIKey:
          type: string
          title: Simliapikey
        llmAPIKey:
          anyOf:
            - type: string
            - type: "null"
          title: Llmapikey
          default: ""
        ttsAPIKey:
          anyOf:
            - type: string
            - type: "null"
          title: Ttsapikey
          default: ""
        createTranscript:
          type: boolean
          title: Createtranscript
          default: false
        originAllowList:
          anyOf:
            - items:
                type: string
              type: array
              uniqueItems: true
            - type: "null"
          title: Originallowlist
          default: []
      type: object
      required:
        - simliAPIKey
      title: TokenRequest
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    HistoryRecord:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Firebase unique identifier for the session
        face_id:
          type: string
          description: face_id used in session
        kind:
          type: string
          description: Interaction Method
        endUserAggregator:
          type: string
          description: (optional) Aggregation identifier provided in request by customer for grouping their end-users
        apiKeyName:
          type: string
          description: (optional) Name of the API key used for this session
        sessionTotalTime:
          type: number
          format: double
          description: Total session duration in seconds
        startTime:
          type: integer
          description: Session start time as Unix timestamp
        endTime:
          type: integer
          description: Session end time as Unix timestamp
      required:
        - id
        - userId
        - sessionTokenId
        - sessionTotalTime
        - startTime
        - endTime

    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
        code:
          type: string
          description: Error code
      required:
        - error
    Body_generateFaceIDAPI_faces_legacy_create_post:
      properties:
        image:
          type: string
          format: binary
          title: Image
      type: object
      required:
        - image
      title: Body_generateFaceIDAPI_faces_legacy_create_post
    CharacterVersion:
      type: string
      enum:
        - "1.5"
      title: CharacterVersion
    Body_enqueueGSAGeneration_faces_gs_create_post:
      properties:
        image:
          type: string
          format: binary
          title: Image
      type: object
      required:
        - image
      title: Body_enqueueGSAGeneration_faces_gs_create_post
    Body_preprocess_image_faces_trinity_preprocess_post:
      properties:
        image:
          type: string
          format: binary
          title: Image
          description: >-
            JPEG, PNG or WEBP, under 5MB, at least 512x512. It must contain a
            person facing the camera whose head is at least 15% of the image
            height - a head smaller than that carries too few pixels to keep the
            likeness, and is rejected. Where several people are present, the
            largest camera-facing head is treated as the subject.
      type: object
      required:
        - image
      title: Body_preprocess_image_faces_trinity_preprocess_post
    TrinityVersion:
      type: string
      enum:
        - GSA_1.0
      title: GSVersion
