Export
GET /transcriptions/{id}/export renders the transcript and returns the file in the response body. Generation is synchronous: the call returns when the file is ready.
curl -sS --fail-with-body \ "https://api.scribewren.com/v1/transcriptions/$TX_ID/export?format=srt" \ -H "Authorization: Bearer $SCRIBEWREN_API_KEY" \ -o interview.srtOn success this is the one endpoint that does not use the JSON envelope. The body is the file. On failure you get the normal JSON error envelope, so check the HTTP status before you save the body.
Query parameters
Section titled “Query parameters”| Parameter | Required | Notes |
|---|---|---|
format |
Yes | txt, docx, pdf, srt or vtt. Case-insensitive. Anything else is 400 VALIDATION_ERROR with reason invalid_enum. |
timestamps |
No | true or false. Adds timestamps to txt, docx and pdf. Default false. srt and vtt always carry timestamps and ignore this option. |
speakers |
No | true or false. Adds speaker names. When you leave it out, it is on if the transcript has more than one speaker, and off otherwise. |
timestamps and speakers accept only the exact strings true and false. Any other value is VALIDATION_ERROR with reason invalid_boolean.
Response
Section titled “Response”| Format | Content-Type |
|---|---|
txt |
text/plain; charset=utf-8 |
docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
pdf |
application/pdf |
srt |
application/x-subrip; charset=utf-8 |
vtt |
text/vtt; charset=utf-8 |
The response also carries these headers:
HTTP/1.1 200 OKContent-Type: application/x-subrip; charset=utf-8Content-Disposition: attachment; filename="interview.srt"; filename*=UTF-8''interview.srtCache-Control: no-storeX-Content-Type-Options: nosniffContent-Disposition gives the suggested file name twice: a plain ASCII filename and a percent-encoded UTF-8 filename*. Prefer filename* when your client understands it.
The name is built from the transcription’s title plus the format extension. The characters / \ : * ? " < > | and control characters are removed, and the name is cut to 150 bytes. If you save the file yourself, you can ignore the suggested name and choose your own.
Cache-Control: no-store tells caches and proxies not to keep the file. Exports are generated again on every call, so a call after the transcript changed returns the new text.
Errors
Section titled “Errors”| Status | error.code |
When |
|---|---|---|
| 400 | VALIDATION_ERROR |
format is missing or unknown, or a boolean option is invalid. See error.details.fields. |
| 404 | NOT_FOUND |
The transcription does not exist or belongs to another account. |
| 409 | INVALID_STATE_TRANSITION |
The transcription has not succeeded. error.details.reason is not_ready. |
| 429 | RATE_LIMITED |
You are exporting too fast. Wait for Retry-After seconds. The export policy is listed in Rate limits. |
| 503 | EXPORT_FAILED |
The file could not be generated. error.details.format names the format. It is safe to retry after a short wait. |
Exports are allowed on a restricted account, because they only read data. See Authentication.
Can't find what you need? Contact support, email [email protected], or open Help and then Contact in the app. scribewren.com