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

# Gemini Live API Proxy



## AsyncAPI

````yaml api-reference/asyncapi.yaml geminiProxy
id: geminiProxy
title: Gemini Live API Proxy
description: >
  Connect to Google Gemini Live API with automatic viseme generation.


  Audio responses include a `mascotVisemes` field with synchronized viseme data
  for facial animation.


  <Note>

  Due to a Mintlify limitation, received messages may display as `{}` in the
  playground. The actual response data is being received correctly — you can
  inspect it in your browser's DevTools under the Network tab → WS → Messages
  (UTF-8).

  </Note>
servers:
  - id: local
    protocol: ws
    host: localhost:3333
    bindings: []
    variables: []
  - id: production
    protocol: wss
    host: api.mascot.bot
    bindings: []
    variables: []
address: >-
  /v1/conversation/gemini?key={geminiApiKey}&mascot_key={mascotApiKey}&viseme_model={visemeModel}
parameters:
  - id: geminiApiKey
    jsonSchema:
      type: string
      description: Your Google Gemini API key
      default: YOUR_GEMINI_API_KEY
    description: Your Google Gemini API key
    type: string
    required: true
    deprecated: false
  - id: mascotApiKey
    jsonSchema:
      type: string
      description: Your Mascot Bot API key
      default: YOUR_MASCOT_API_KEY
    description: Your Mascot Bot API key
    type: string
    required: true
    deprecated: false
  - id: visemeModel
    jsonSchema:
      type: string
      description: >
        Viseme model to use for lip sync prediction. Different models are
        optimized for different languages.

        Available: `default` (English), `indonesian` (Bahasa Indonesia).
      default: default
    description: >
      Viseme model to use for lip sync prediction. Different models are
      optimized for different languages.

      Available: `default` (English), `indonesian` (Bahasa Indonesia).
    type: string
    required: true
    deprecated: false
bindings: []
operations:
  - &ref_1
    id: sendSetup
    title: Send setup
    type: receive
    messages:
      - &ref_4
        id: SetupMessage
        payload:
          - name: Setup Message
            description: Initialize the Gemini session with model and configuration
            type: object
            properties:
              - name: setup
                type: object
                description: Session configuration
                required: true
                properties:
                  - name: model
                    type: string
                    description: Gemini model to use
                    required: false
                  - name: generationConfig
                    type: object
                    description: Generation settings
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            setup:
              type: object
              description: Session configuration
              properties:
                model:
                  type: string
                  description: Gemini model to use
                  default: models/gemini-2.0-flash-exp
                  x-parser-schema-id: <anonymous-schema-6>
                generationConfig:
                  type: object
                  description: Generation settings
                  default:
                    responseModalities:
                      - AUDIO
                    speechConfig:
                      voiceConfig:
                        prebuiltVoiceConfig:
                          voiceName: Aoede
                  x-parser-schema-id: <anonymous-schema-7>
              x-parser-schema-id: <anonymous-schema-5>
          required:
            - setup
          x-parser-schema-id: <anonymous-schema-4>
        title: Setup Message
        description: Initialize the Gemini session with model and configuration
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: SetupMessage
          - id: x-parser-message-name
            value: SetupMessage
    bindings: []
    extensions: &ref_0
      - id: x-parser-unique-object-id
        value: geminiProxy
  - &ref_2
    id: sendTextMessage
    title: Send text message
    type: receive
    messages:
      - &ref_5
        id: TextMessage
        payload:
          - name: Text Message
            description: Send a text message to Gemini
            type: object
            properties:
              - name: clientContent
                type: object
                description: Message content
                required: true
                properties:
                  - name: turns
                    type: array
                    description: Conversation turns
                    required: false
                  - name: turnComplete
                    type: boolean
                    description: Whether this completes the turn
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            clientContent:
              type: object
              description: Message content
              properties:
                turns:
                  type: array
                  description: Conversation turns
                  default:
                    - role: user
                      parts:
                        - text: hello
                  x-parser-schema-id: <anonymous-schema-10>
                turnComplete:
                  type: boolean
                  description: Whether this completes the turn
                  default: true
                  x-parser-schema-id: <anonymous-schema-11>
              x-parser-schema-id: <anonymous-schema-9>
          required:
            - clientContent
          x-parser-schema-id: <anonymous-schema-8>
        title: Text Message
        description: Send a text message to Gemini
        example: No examples found
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: TextMessage
          - id: x-parser-message-name
            value: TextMessage
    bindings: []
    extensions: *ref_0
  - &ref_3
    id: receiveAudioResponse
    title: Receive audio response
    type: send
    messages:
      - &ref_6
        id: AudioResponse
        contentType: application/json
        payload:
          - name: Audio Response
            description: Audio response from Gemini with viseme data
            type: object
            properties:
              - name: serverContent
                type: object
                description: Gemini server response containing audio
                required: false
                properties:
                  - name: modelTurn
                    type: object
                    required: false
                    properties:
                      - name: parts
                        type: array
                        required: false
              - name: mascotVisemes
                type: object
                description: Synchronized viseme data for lip sync
                required: false
                properties:
                  - name: visemes
                    type: array
                    description: Array of viseme timing data
                    required: false
                  - name: audio_event_id
                    type: integer
                    description: Unique identifier for audio correlation
                    required: false
                  - name: subchunk_id
                    type: integer
                    description: Current chunk number
                    required: false
                  - name: total_chunks
                    type: integer
                    description: Total chunks in segment
                    required: false
                  - name: audio_duration
                    type: number
                    description: Audio duration in milliseconds
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          properties:
            serverContent:
              type: object
              description: Gemini server response containing audio
              properties:
                modelTurn:
                  type: object
                  properties:
                    parts:
                      type: array
                      items:
                        type: object
                        properties:
                          inlineData:
                            type: object
                            properties:
                              mimeType:
                                type: string
                                description: Audio MIME type
                                example: audio/pcm;rate=24000
                                x-parser-schema-id: <anonymous-schema-18>
                              data:
                                type: string
                                description: Base64-encoded PCM audio data
                                x-parser-schema-id: <anonymous-schema-19>
                            x-parser-schema-id: <anonymous-schema-17>
                        x-parser-schema-id: <anonymous-schema-16>
                      x-parser-schema-id: <anonymous-schema-15>
                  x-parser-schema-id: <anonymous-schema-14>
              x-parser-schema-id: <anonymous-schema-13>
            mascotVisemes:
              type: object
              description: Synchronized viseme data for lip sync
              properties:
                visemes:
                  type: array
                  description: Array of viseme timing data
                  items:
                    type: object
                    properties:
                      visemeId:
                        type: integer
                        description: Viseme ID (0-21, Microsoft SAPI mapping)
                        x-parser-schema-id: <anonymous-schema-23>
                      offset:
                        type: number
                        description: Timing offset in milliseconds
                        x-parser-schema-id: <anonymous-schema-24>
                    x-parser-schema-id: <anonymous-schema-22>
                  x-parser-schema-id: <anonymous-schema-21>
                audio_event_id:
                  type: integer
                  description: Unique identifier for audio correlation
                  x-parser-schema-id: <anonymous-schema-25>
                subchunk_id:
                  type: integer
                  description: Current chunk number
                  x-parser-schema-id: <anonymous-schema-26>
                total_chunks:
                  type: integer
                  description: Total chunks in segment
                  x-parser-schema-id: <anonymous-schema-27>
                audio_duration:
                  type: number
                  description: Audio duration in milliseconds
                  x-parser-schema-id: <anonymous-schema-28>
              x-parser-schema-id: <anonymous-schema-20>
          x-parser-schema-id: <anonymous-schema-12>
        title: Audio Response
        description: Audio response from Gemini with viseme data
        example: |-
          {
            "serverContent": {
              "modelTurn": {
                "parts": [
                  {
                    "inlineData": {
                      "mimeType": "audio/pcm;rate=24000",
                      "data": "CAE1/kP7f/rU/E4A0wJwBK4EAgTRA8EDawTFBLUERgWMBsoIngqnDQ..."
                    }
                  }
                ]
              }
            },
            "mascotVisemes": {
              "visemes": [
                {
                  "visemeId": 4,
                  "offset": 12
                },
                {
                  "visemeId": 18,
                  "offset": 108
                },
                {
                  "visemeId": 20,
                  "offset": 121
                },
                {
                  "visemeId": 6,
                  "offset": 204
                }
              ],
              "audio_event_id": 3001,
              "subchunk_id": 1,
              "total_chunks": 1,
              "audio_duration": 720
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: AudioResponse
          - id: x-parser-message-name
            value: AudioResponse
    bindings: []
    extensions: *ref_0
sendOperations:
  - *ref_1
  - *ref_2
receiveOperations:
  - *ref_3
sendMessages:
  - *ref_4
  - *ref_5
receiveMessages:
  - *ref_6
extensions:
  - id: x-parser-unique-object-id
    value: geminiProxy
securitySchemes: []

````