# AssemblyAI Integration via LowCodeAPI
**Last Updated**: February 11, 2026
## Overview
AssemblyAI provides powerful speech-to-text transcription and audio intelligence platform with features like speaker diarization, sentiment analysis, topic detection, and more. This skill covers transcription, LeMUR AI analysis, and streaming capabilities.
## Base Endpoint
https://api.lowcodeapi.com/assemblyai
**Important**: Always include the provider name `assemblyai` in the URL path after `api.lowcodeapi.com/`
## Authentication
AssemblyAI uses API key authentication.
### Setup Instructions
1. Go to [AssemblyAI Account](https://www.assemblyai.com/app/account)
2. Sign up or log in
3. Copy your API key
### Authentication Details
- **Type**: API Key
- **Header**: `Authorization: Bearer {api_key}`
- **How to get credentials**: [AssemblyAI Account](https://www.assemblyai.com/app/account)
When using LowCodeAPI, you only need to provide your API key. The system handles authentication automatically.
## URL Format
LowCodeAPI supports two URL formats for endpoints with path parameters. Always try the **New Format** first, fall back to **Old Format** if needed.
### New Format (Priority)
Path parameters stay in the URL path.
**Pattern**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/{id}?api_token=YOUR_API_TOKEN
```
### Old Format (Fallback)
Path parameters become query parameters.
**Pattern**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/id?id={id}&api_token=YOUR_API_TOKEN
```
### Decision Flow for AI Agents
1. **Always use New Format first** - Keep path parameters in the URL path
2. If you receive a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider
## API Categories
- **Transcript** - Speech-to-text transcription with advanced features
- **Files** - Upload media files for transcription
- **LeMUR** - AI-powered analysis, summarization, and question answering
- **Streaming** - Real-time speech-to-text
## Common Endpoints
### Transcribe Audio
Submit a media file URL for transcription.
**Method**: POST | **LowCodeAPI Path**: `/v2/transcript`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| audio_url | string | Yes | URL of the audio or video file to transcribe |
| speaker_labels | boolean | No | Enable speaker diarization (identify different speakers) |
| punctuate | boolean | No | Enable automatic punctuation (default: true) |
| format_text | boolean | No | Enable text formatting (default: true) |
| sentiment_analysis | boolean | No | Enable sentiment analysis |
| auto_highlights | boolean | No | Enable key phrase extraction |
| auto_chapters | boolean | No | Enable automatic chapter detection |
| entity_detection | boolean | No | Enable entity detection |
| content_safety | boolean | No | Enable content moderation |
| summarization | boolean | No | Enable summarization |
| summary_type | object | No | Summary type (e.g., "paragraphs", "bullets") |
| language_code | object | No | Language code (default: "en_us") |
| language_detection | boolean | No | Enable automatic language detection |
**Example Request**:
```bash
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/audio.mp3",
"speaker_labels": true,
"punctuate": true,
"sentiment_analysis": true
}'
```
**Response**:
```json
{
"data": {
"id": "TRANSCRIPT_ID",
"status": "processing",
"audio_url": "https://example.com/audio.mp3"
}
}
```
**Official Documentation**: [Submit Transcription](https://www.assemblyai.com/docs/api-reference/transcripts/submit)
---
### Get Transcript
Retrieve a transcript by ID. Poll this endpoint until status is "completed".
**Method**: GET | **LowCodeAPI Path**: `/v2/transcript/:transcript_id`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/{TRANSCRIPT_ID}?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/transcriptid?transcript_id={TRANSCRIPT_ID}&api_token=YOUR_API_TOKEN
```
**Response**:
```json
{
"data": {
"id": "TRANSCRIPT_ID",
"status": "completed",
"text": "This is the transcribed text...",
"confidence": 0.95,
"words": [
{
"text": "This",
"start": 0,
"end": 500
}
],
"utterances": [
{
"speaker": "A",
"text": "Hello, how are you?",
"start": 0,
"end": 2000
}
]
}
}
```
**Official Documentation**: [Get Transcript](https://www.assemblyai.com/docs/api-reference/transcripts/get)
---
### List Transcripts
Get a paginated list of your transcripts.
**Method**: GET | **LowCodeAPI Path**: `/v2/transcript`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript?limit=20&status=completed&api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript?limit=20&status=completed&api_token=YOUR_API_TOKEN
```
**Query Parameters**:
| Parameter | Type | Description |
|-----------|------|-------------|
| limit | number | Maximum number of transcripts to retrieve |
| status | object | Filter by status (e.g., "completed", "processing") |
| created_on | string | Only get transcripts created on this date |
| after_id | string | Get transcripts created after this ID |
| before_id | string | Get transcripts created before this ID |
**Official Documentation**: [List Transcripts](https://www.assemblyai.com/docs/api-reference/transcripts/list)
---
### Upload Media File
Upload a media file directly to AssemblyAI servers.
**Method**: POST | **LowCodeAPI Path**: `/v2/upload`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/upload?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/upload?api_token=YOUR_API_TOKEN
```
**Example**:
```bash
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/upload?api_token=YOUR_API_TOKEN" \
-F "[email protected]"
```
**Response**:
```json
{
"data": {
"upload_url": "https://cdn.assemblyai.com/..."
}
}
```
**Official Documentation**: [Upload File](https://www.assemblyai.com/docs/api-reference/files/upload)
---
### Get Subtitles
Export a transcript in SRT or VTT format for subtitles.
**Method**: GET | **LowCodeAPI Path**: `/v2/transcript/:transcript_id/:subtitle_format`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/{TRANSCRIPT_ID}/srt?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/transcriptid/subtitleformat?transcript_id={TRANSCRIPT_ID}&subtitle_format=srt&api_token=YOUR_API_TOKEN
```
**Path Parameters**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| transcript_id | string | Yes | ID of the completed transcript |
| subtitle_format | string | Yes | Format: "srt" or "vtt" |
**Official Documentation**: [Get Subtitles](https://www.assemblyai.com/docs/api-reference/transcripts/get-subtitles)
---
### Delete Transcript
Delete a transcript by ID.
**Method**: DELETE | **LowCodeAPI Path**: `/v2/transcript/:id`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/{TRANSCRIPT_ID}?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/transcript/id?id={TRANSCRIPT_ID}&api_token=YOUR_API_TOKEN
```
**Official Documentation**: [Delete Transcript](https://www.assemblyai.com/docs/api-reference/transcripts/delete)
## LeMUR AI Analysis
### Summarize Transcript
Generate a summary using LeMUR AI.
**Method**: POST | **LowCodeAPI Path**: `/lemur/v3/generate/summary`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/summary?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/summary?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| transcript_ids | array | Yes | List of transcript IDs to summarize |
| answer_format | string | No | Desired format (e.g., "Bullet points", "Paragraphs") |
| context | string | No | Additional context for the model |
**Example**:
```bash
curl -X POST "https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/summary?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transcript_ids": ["TRANSCRIPT_ID"],
"answer_format": "Bullet points",
"context": "Focus on key action items"
}'
```
**Official Documentation**: [LeMUR Summary](https://www.assemblyai.com/docs/api-reference/lemur/summary)
---
### Ask Questions (Q&A)
Ask free-form questions about transcripts.
**Method**: POST | **LowCodeAPI Path**: `/lemur/v3/generate/question-answer`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/question-answer?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/question-answer?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| transcript_ids | array | Yes | List of transcript IDs |
| questions | array | Yes | Array of questions to ask |
| context | string | No | Additional context |
**Example**:
```bash
curl -X POST "https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/question-answer?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transcript_ids": ["TRANSCRIPT_ID"],
"questions": ["What was the main topic?", "What action items were discussed?"]
}'
```
**Official Documentation**: [LeMUR Q&A](https://www.assemblyai.com/docs/api-reference/lemur/question-answer)
---
### Extract Action Items
Extract action items from transcripts.
**Method**: POST | **LowCodeAPI Path**: `/lemur/v3/generate/action-items`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/action-items?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/action-items?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| transcript_ids | array | Yes | List of transcript IDs |
| answer_format | string | No | Format for action items |
**Official Documentation**: [LeMUR Action Items](https://www.assemblyai.com/docs/api-reference/lemur/action-items)
---
### Run Custom Task
Execute custom LLM prompts on transcripts.
**Method**: POST | **LowCodeAPI Path**: `/lemur/v3/generate/task`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/task?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/task?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| transcript_ids | array | Yes | List of transcript IDs |
| prompt | string | Yes | Your custom prompt |
| context | string | No | Additional context |
**Official Documentation**: [LeMUR Task](https://www.assemblyai.com/docs/api-reference/lemur/task)
## Streaming
### Create Temporary Token
Generate a temporary authentication token for real-time streaming.
**Method**: POST | **LowCodeAPI Path**: `/v2/realtime/token`
**New Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/realtime/token?api_token=YOUR_API_TOKEN
```
**Old Format URL**:
```
https://api.lowcodeapi.com/assemblyai/v2/realtime/token?api_token=YOUR_API_TOKEN
```
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| expires_in | number | Yes | Token expiration time in seconds |
**Official Documentation**: [Create Token](https://www.assemblyai.com/docs/api-reference/streaming/create-temporary-token)
## Complete Endpoint Reference
### Transcript Endpoints
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/v2/transcript` | Submit audio for transcription |
| GET | `/v2/transcript` | List all transcripts |
| GET | `/v2/transcript/:transcript_id` | Get transcript by ID |
| DELETE | `/v2/transcript/:id` | Delete transcript |
| GET | `/v2/transcript/:transcript_id/sentences` | Get transcript by sentences |
| GET | `/v2/transcript/:transcript_id/paragraphs` | Get transcript by paragraphs |
| GET | `/v2/transcript/:transcript_id/words` | Get word timestamps |
| GET | `/v2/transcript/:transcript_id/chapters` | Get chapters |
| GET | `/v2/transcript/:transcript_id/:subtitle_format` | Get subtitles (SRT/VTT) |
| GET | `/v2/transcript/:transcript_id/redacted-audio` | Get redacted audio |
| GET | `/v2/transcript/:transcript_id/word-search` | Search words in transcript |
### Files
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/v2/upload` | Upload media file |
### LeMUR
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/lemur/v3/generate/summary` | Summarize transcript |
| POST | `/lemur/v3/generate/question-answer` | Ask questions |
| POST | `/lemur/v3/generate/action-items` | Extract action items |
| POST | `/lemur/v3/generate/task` | Run custom task |
| GET | `/lemur/v3/:request_id` | Retrieve LeMUR response |
| DELETE | `/lemur/v3/:request_id` | Purge LeMUR data |
### Streaming
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/v2/realtime/token` | Create temporary token |
| GET | `/v2/realtime/ws` | WebSocket connection for streaming |
## API Definition Endpoints
Get the complete API specification for AssemblyAI:
- **New Format (OpenAPI)**: `https://backend.lowcodeapi.com/assemblyai/openapi`
- **Old Format (Definition)**: `https://backend.lowcodeapi.com/assemblyai/definition`
## Usage Examples
### Example 1: Complete Transcription Workflow
1. **Submit audio for transcription**
```bash
# Step 1: Start transcription (no ID needed - this creates a new job)
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://example.com/meeting.mp3",
"speaker_labels": true,
"punctuate": true,
"sentiment_analysis": true
}'
# Response: {"data": {"id": "abc123xyz", "status": "processing"}}
# Save the returned ID (TRANSCRIPT_ID = "abc123xyz")
```
2. **Poll for completion**
```bash
# Step 2: Check status using the ID from Step 1
curl -X GET "https://api.lowcodeapi.com/assemblyai/v2/transcript/abc123xyz?api_token=YOUR_API_TOKEN"
# Keep polling until status is "completed"
# Response: {"data": {"id": "abc123xyz", "status": "completed", "text": "..."}}
```
3. **Get subtitles**
```bash
# Step 3: Export subtitles using the ID from Step 1
curl -X GET "https://api.lowcodeapi.com/assemblyai/v2/transcript/abc123xyz/srt?api_token=YOUR_API_TOKEN"
```
### Example 2: LeMUR Analysis
```bash
# Step 1: Submit transcription (no ID needed)
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"audio_url": "https://example.com/interview.mp3"}'
# Save the returned ID (TRANSCRIPT_ID = "abc123xyz")
# Step 2: Wait for completion, then summarize using the ID
curl -X POST "https://api.lowcodeapi.com/assemblyai/lemur/v3/generate/summary?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transcript_ids": ["abc123xyz"],
"answer_format": "Bullet points"
}'
```
### Example 3: Upload and Transcribe
```bash
# Step 1: Upload file (no ID needed - upload returns a URL)
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/upload?api_token=YOUR_API_TOKEN" \
-F "[email protected]"
# Response: {"data": {"upload_url": "https://cdn.assemblyai.com/..."}}
# Use this upload_url as audio_url in next step
# Step 2: Transcribe the uploaded file
curl -X POST "https://api.lowcodeapi.com/assemblyai/v2/transcript?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"audio_url": "https://cdn.assemblyai.com/...",
"auto_highlights": true,
"auto_chapters": true
}'
```
## Error Handling
| Status Code | Meaning |
|-------------|---------|
| 200 | Success |
| 201 | Created (new transcript) |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid API key |
| 404 | Not found |
| 429 | Too many requests - Rate limit exceeded |
| 500 | Server error |
## Transcription Status
| Status | Description |
|--------|-------------|
| queued | Transcription is queued |
| processing | Currently being transcribed |
| completed | Transcription finished |
| error | Failed |
## Response Format
All responses are wrapped in a `data` key:
```json
{
"data": {
// Actual response from AssemblyAI API
}
}
```
## Additional Resources
- **Official Documentation**: [AssemblyAI API Reference](https://www.assemblyai.com/docs/api-reference/overview)
- **API Keys**: [AssemblyAI Account](https://www.assemblyai.com/app/account)
- **LowCodeAPI Docs**: https://docs.lowcodeapi.com