Grok (xAI)

Set up Grok as a speech-to-text provider for real-time meeting bot transcription.

Use Grok (xAI) as the speech-to-text provider for real-time transcription with meeting bots. Recall sends meeting audio to Grok and delivers normalized transcript events to your application.

Setup

  1. Create an xAI API key for speech-to-text transcription.
  2. Open the Recall.ai dashboard in the region where you create your bots, go to Transcription → Grok, and add your xAI API key. For example, the us-west-2 Grok settings are for bots created in us-west-2.
  3. Select grok_streaming in each bot's transcription configuration, as shown below.

Adding your API key saves the credentials for the integration. It does not automatically enable Grok transcription for your bots. Configure both the provider and a real-time endpoint in your Create Bot request.

Quickstart: real-time transcription with meeting bots

Call Create Bot with recording_config.transcript.provider.grok_streaming and an endpoint subscribed to transcript.data:

curl --request POST \
  --url https://RECALL_REGION.recall.ai/api/v1/bot/ \
  --header 'Authorization: RECALL_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "meeting_url": "MEETING_URL",
    "recording_config": {
      "transcript": {
        "provider": {
          "grok_streaming": {
            "interim_results": true
          }
        }
      },
      "realtime_endpoints": [
        {
          "type": "webhook",
          "url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
          "events": ["transcript.data", "transcript.partial_data"]
        }
      ]
    }
  }'

Replace RECALL_REGION, RECALL_API_KEY, MEETING_URL, and the endpoint URL with your values. Use a valid meeting URL. The Authorization header contains your Recall.ai API key; your xAI API key is configured separately in the dashboard.

For WebSocket delivery, use an endpoint with "type": "websocket" and a wss:// URL instead. See Real-Time Websocket Endpoints.

Receive finalized and partial transcripts

  • transcript.data delivers finalized utterances.
  • transcript.partial_data delivers interim updates. Enable interim_results in the Grok provider configuration and subscribe to this event to receive them. Partial text may change; replace it with the finalized utterance when it arrives.

Saving a provider key alone does not send events. Your application must have a reachable real-time endpoint configured in recording_config.realtime_endpoints. Verify incoming requests using your workspace verification secret before processing them.

Follow the meeting bot real-time transcription guide for request verification, handling transcript failures, and retrieving the full transcript after the meeting. See Real-Time Event Payloads for event schemas.

Provider configuration

Set Grok options inside recording_config.transcript.provider.grok_streaming. The current Create Bot API reference defines the available fields, types, and defaults. Common options include:

OptionTypePurpose
modelstringxAI transcription model; defaults to grok-voice-transcribe-2.0.
languagestringLanguage code used for text formatting.
interim_resultsbooleanEnables interim results; defaults to true.
endpointingintegerSilence duration in milliseconds before an utterance is finalized; defaults to 400, range 0–5000.
keytermarray of stringsTerms to bias transcription toward; up to 100 terms.

For example, to add keyterms:

{
  "grok_streaming": {
    "interim_results": true,
    "keyterm": ["Recall.ai", "Grok"]
  }
}

keyterm is an array, even when you provide only one term.

Participant speaker labels

To transcribe separate participant streams and receive participant speaker labels, enable perfect diarization alongside the provider:

{
  "recording_config": {
    "transcript": {
      "provider": {
        "grok_streaming": {}
      },
      "diarization": {
        "use_separate_streams_when_available": true
      }
    }
  }
}

This fragment shows only the transcript settings; keep your meeting_url and real-time endpoint in the full request. Separate-stream diarization depends on meeting-platform support and does not distinguish multiple people sharing the same audio stream. It can increase transcription usage, and raw provider data is unavailable when it is enabled. See Diarization for platform support, costs, and limitations.


Did this page help you?