# 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