Skip to content

For clean Markdown of any page, append .md to the page URL. For a complete documentation index, see For full documentation content, see For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at

Summarization

Generate summaries of your audio transcripts using LLM Gateway

For the complete documentation index, see llms.txt

Supported models: Universal-3 Pro (universal-3-pro), Universal-2 (universal-2)

Supported regions: US and EU

Note: The summarization, summary_model, and summary_type parameters on the transcription API are deprecated. Use LLM Gateway for summaries.

Two-step approach:

  1. Transcribe audio via `POST
  2. Send transcript text to LLM Gateway via `POST

Key LLM Gateway parameters:

  • model (string) - LLM model to use (e.g., claude-sonnet-4-6)
  • messages (array) - Messages including your summarization prompt and transcript text
  • max_tokens (number) - Maximum response tokens

cURL quickstart (Step 1 - Transcribe):

curl  \
  --header "Authorization: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "audio_url": "YOUR_AUDIO_URL",
    "speech_models": ["universal-3-pro", "universal-2"]
  }'

Poll GET /v2/transcript/{id} until status is completed, then extract the transcript text.

cURL quickstart (Step 2 - Summarize via LLM Gateway):

curl  \
  --header "Authorization: YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {"role": "user", "content": "Provide a brief summary of the transcript.\n\nTranscript: YOUR_TRANSCRIPT_TEXT"}
    ],
    "max_tokens": 1000
  }'

The summary is in response.choices[0].message.content.

US & EU

Generate summaries of your audio transcripts using LLM Gateway. This approach gives you full control over the summary format, length, and style by customizing your prompt.

The summarization, summary_model, and summary_type parameters on the transcription API are deprecated. Use LLM Gateway as shown below for more flexible and powerful summaries.

Quickstart

python
import requests
import time

base_url = ""
headers = {"authorization": "<YOUR_API_KEY>"}

# Step 1: Transcribe your audio file
audio_url = ""

data = {
    "audio_url": audio_url,
    "speech_models": ["universal-3-pro", "universal-2"],
    "language_detection": True
}

response = requests.post(base_url + "/v2/transcript", json=data, headers=headers)
transcript_id = response.json()['id']
polling_endpoint = base_url + "/v2/transcript/" + transcript_id

while True:
    transcription_result = requests.get(polling_endpoint, headers=headers).json()
    if transcription_result['status'] == 'completed':
        break
    elif transcription_result['status'] == 'error':
        raise RuntimeError(f"Transcription failed: {transcription_result['error']}")
    else:
        time.sleep(3)

# Step 2: Generate a summary using LLM Gateway
prompt = "Provide a brief summary of the transcript in bullet point format."

llm_gateway_data = {
    "model": "claude-sonnet-4-6",
    "messages": [
        {"role": "user", "content": f"{prompt}\n\nTranscript: {transcription_result['text']}"}
    ],
    "max_tokens": 1000
}

response = requests.post(
    "",
    headers=headers,
    json=llm_gateway_data
)

result = response.json()["choices"][0]["message"]["content"]
print(result)
javascript
const baseUrl = "";

const headers = {
  authorization: "<YOUR_API_KEY>",
  "content-type": "application/json",
};

// Step 1: Transcribe your audio file
const audioUrl = "";

const data = {
  audio_url: audioUrl,
  speech_models: ["universal-3-pro", "universal-2"],
  language_detection: true,
};

const response = await fetch(`${baseUrl}/v2/transcript`, {
  method: "POST",
  headers,
  body: JSON.stringify(data),
});

const { id: transcriptId } = await response.json();
const pollingEndpoint = `${baseUrl}/v2/transcript/${transcriptId}`;

let transcriptionResult;
while (true) {
  const pollingResponse = await fetch(pollingEndpoint, { headers });
  transcriptionResult = await pollingResponse.json();

  if (transcriptionResult.status === "completed") {
    break;
  } else if (transcriptionResult.status === "error") {
    throw new Error(`Transcription failed: ${transcriptionResult.error}`);
  } else {
    await new Promise((resolve) => setTimeout(resolve, 3000));
  }
}

// Step 2: Generate a summary using LLM Gateway
const prompt =
  "Provide a brief summary of the transcript in bullet point format.";

const llmGatewayData = {
  model: "claude-sonnet-4-6",
  messages: [
    {
      role: "user",
      content: `${prompt}\n\nTranscript: ${transcriptionResult.text}`,
    },
  ],
  max_tokens: 1000,
};

const result = await fetch(
  "",
  {
    method: "POST",
    headers,
    body: JSON.stringify(llmGatewayData),
  }
);

const resultData = await result.json();
console.log(resultData.choices[0].message.content);

Example output

plain
- Smoke from hundreds of wildfires in Canada is triggering air quality alerts throughout the US, with skylines from Maine to Maryland to Minnesota appearing gray and smoggy.
- Air pollution levels in Baltimore are considered unhealthy, with exposure to high levels leading to various health problems.
- With climate change driving more wildfires, experts warn that wide-ranging air quality consequences may become more frequent.

Customize your summary

You can control the summary output by adjusting the prompt. Here are some examples:

Bullet point summary

python
prompt = """Provide a brief summary of the transcript in bullet point format.
Focus on the key points and main takeaways."""

Paragraph summary

python
prompt = """Provide a concise paragraph summary of the transcript.
Capture the main topics and conclusions."""

Headline summary

python
prompt = """Provide a single sentence headline that captures the main topic
of the transcript."""

Conversational summary

python
prompt = """Summarize this conversation between multiple speakers.
Include who said what and the key points each speaker made."""

Custom format

You can define any format you need:

python
prompt = """Summarize the transcript using the following format:
- Topic: [main topic]
- Key Points: [list of 3-5 key points]
- Action Items: [any action items mentioned]
- Conclusion: [one sentence conclusion]"""

API reference

Step 1: Transcribe audio

bash
curl  \
--header "Authorization: <YOUR_API_KEY>" \
--header "Content-Type: application/json" \
--data '{
  "audio_url": "YOUR_AUDIO_URL"
}'

Poll for the transcript result until the status is completed, then extract the transcript text.

Step 2: Generate summary with LLM Gateway

bash
curl  \
--header "Authorization: <YOUR_API_KEY>" \
--header "Content-Type: application/json" \
--data '{
  "model": "claude-sonnet-4-6",
  "messages": [
    {"role": "user", "content": "Provide a brief summary of the transcript.\n\nTranscript: YOUR_TRANSCRIPT_TEXT"}
  ],
  "max_tokens": 1000
}'
KeyTypeDescription
modelstringThe LLM model to use. See available models.
messagesarrayThe messages to send to the model, including your summarization prompt and transcript text.
max_tokensnumberMaximum number of tokens in the response. Adjust based on desired summary length.

Response

json
{
  "choices": [
    {
      "message": {
        "content": "Your generated summary text..."
      }
    }
  ]
}

Next steps