# Get transcript as paragraphs Retrieve the transcript organized into paragraphs with start and end timestamps. Only available for completed transcriptions. Returns the transcript text split into natural paragraphs, each with timing information (start and end timestamps in seconds). Supports pagination via `limit` and `offset` query parameters. Supports **ETag caching** -- completed transcription paragraphs are immutable, so the API returns `Cache-Control: public, max-age=86400`. Use the `If-None-Match` header to avoid re-downloading unchanged data. When PII redaction was enabled for the transcription, the response includes `X-PII-Redacted` and `X-PII-Policies` headers. #### Path Parameters **`transcription_id`** string required The transcription ID with `trans_` prefix. #### Query Parameters **`limit`** integer optional Maximum number of paragraphs to return. Must be between 1 and 1000. Omit to return all paragraphs. **`offset`** integer optional ยท Defaults to `0` Number of paragraphs to skip for pagination. ## Returns Returns a success envelope with: - **`data.transcription_id`** -- The transcription ID. - **`data.audio_duration_seconds`** -- Total audio duration in seconds. - **`data.paragraphs`** -- Array of paragraph objects, each containing `text`, `start` (seconds), and `end` (seconds). - **`metadata`** -- Request metadata including `request_id`, `timestamp`, `processing_time_ms`, `upstream_latency_ms`, `retry_attempts`, `cache_hit`, `total_count`, and `returned_count`. - **`actions`** -- Links to related format endpoints (`get_sentences`, `get_subtitles_srt`, etc.) and pagination links (`next`, `previous`) when applicable. Response headers include `ETag`, `Last-Modified`, and `Cache-Control`. Request ```bash cURL curl -s -X GET "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/paragraphs?limit=10&offset=0" \ -H "Authorization: Bearer $ACCESS_TOKEN" | python3 -m json.tool ``` ```python Python SDK from aitronos import Aitronos client = Aitronos(api_key="your-api-key") result = client.audio.get_paragraphs( transcription_id="trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", limit=10, offset=0, ) for paragraph in result.data.paragraphs: print(f"[{paragraph.start}s - {paragraph.end}s] {paragraph.text}") ``` ```python Python import requests transcription_id = "trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6" url = f"https://api.aitronos.com/v1/audio/transcribe/{transcription_id}/paragraphs" headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"} params = {"limit": 10, "offset": 0} response = requests.get(url, headers=headers, params=params) data = response.json() for p in data["data"]["paragraphs"]: print(f"[{p['start']}s - {p['end']}s] {p['text']}") ``` ```javascript JavaScript const accessToken = process.env.ACCESS_TOKEN; const transcriptionId = 'trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6'; const response = await fetch( `https://api.aitronos.com/v1/audio/transcribe/${transcriptionId}/paragraphs?limit=10`, { headers: { 'Authorization': `Bearer ${accessToken}`, }, } ); const data = await response.json(); data.data.paragraphs.forEach(p => { console.log(`[${p.start}s - ${p.end}s] ${p.text}`); }); ``` Response ```json 200 OK { "success": true, "data": { "transcription_id": "trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "audio_duration_seconds": 125.5, "paragraphs": [ { "text": "Welcome everyone to today's meeting. We have several important topics to discuss including the quarterly results and the upcoming product launch.", "start": 0.5, "end": 12.3 }, { "text": "Let's start with the quarterly results. Revenue increased by 15% compared to last quarter, driven primarily by our enterprise segment.", "start": 13.1, "end": 25.8 } ], "billing": null }, "metadata": { "request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d", "timestamp": "2026-03-02T12:00:00Z", "processing_time_ms": 120, "upstream_latency_ms": 95, "retry_attempts": 0, "cache_hit": false, "total_count": 8, "returned_count": 2 }, "actions": { "get_sentences": "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/sentences", "get_subtitles_srt": "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/subtitles/srt", "get_subtitles_vtt": "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/subtitles/vtt", "get_subtitles_txt": "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/subtitles/txt", "next": "https://api.aitronos.com/v1/audio/transcribe/trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6/paragraphs?limit=10&offset=10" } } ``` ```json 409 Conflict { "success": false, "error": { "code": "TRANSCRIPTION_NOT_COMPLETE", "message": "This transcription is still being processed.", "system_message": "Transcription is not completed yet", "type": "client_error", "status": 409, "details": { "transcription_id": "trans_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "current_status": "processing" }, "trace_id": "abc-123-def", "timestamp": "2026-03-02T12:00:00Z" } } ``` ## Related Resources - [Create Transcription](/docs/api-reference/audio/create-transcription) - [Get Transcription](/docs/api-reference/audio/get-transcription) - [List Transcriptions](/docs/api-reference/audio/list-transcriptions) - [Delete Transcription](/docs/api-reference/audio/delete-transcription) - [Get Sentences](/docs/api-reference/audio/get-sentences) - [Get Subtitles](/docs/api-reference/audio/get-subtitles) - [Search Transcript](/docs/api-reference/audio/search-transcript) - [Get Redacted Audio](/docs/api-reference/audio/get-redacted-audio) - [Upload Audio File](/docs/api-reference/audio/upload-audio)