API and webhooks
Upload recordings, follow each transcription and fetch transcripts from your own code. Signed webhooks tell you when a job finishes. Included in the Unlimited plans.
Complete an upload
POST https://api.scribewren.com/v1/media/{id}/complete
Authorization: Bearer swp_0190EXAMPLE_EXAMPLEEXAMPLEEXAMPLE
Content-Type: application/json
{ "parts": [{ "partNumber": 1, "etag": "EXAMPLE-ETAG" }] }
Response201
{
"success": true,
"code": 201,
"message": "Created",
"data": {
"media": { "status": "uploaded" },
"transcription": {
"id": "019a4f2e-7c1b-7d3a-9f00-3c5e8a1b2d4f",
"status": "queued"
}
},
"error": null,
"meta": {
"requestId": "019a4f30-1c22-7a10-b5d3-42f1c0a8e777",
"timestamp": "2026-11-04T09:41:07.512Z"
}
}
When it finishes, a signed delivery to your endpoint
webhook-id: msg_019a4f30-1c22-7a10-b5d3-42f1c0a8e777
webhook-timestamp: 1793785267
webhook-signature: v1,EXAMPLE-SIGNATURE-NOT-REAL
What it does
The API does what the app does, from your code: upload audio or video, follow the transcription and fetch the transcript as segments or as a file. It is included in the Unlimited plans at no extra price. Accounts on Free cannot use it.
API requests share your plan limits and fair use with the app. There is no separate quota and no separate price. The full reference, with every endpoint and error code, is on the docs site.
- Authenticate with a bearer API key. Create and revoke keys in Settings.
- Upload in parts straight to storage with presigned links. The API never streams media itself.
- Read a transcript as segments, or export it as TXT, DOCX, PDF, SRT or VTT.
- Get a signed webhook when a transcription succeeds or fails, instead of polling.
- Webhook payloads carry IDs, status, language, duration and timestamps. They never carry a title, filename or transcript text.
How it works
- Create an API key in Settings → API in the app. Keys work while your account is on an Unlimited plan.
- Start an upload with the API, send the file in parts straight to storage with the presigned URLs, then complete it.
- Wait for the transcription to finish, either by polling it or with a signed webhook.
- Read the transcript as segments, or export it as a document or as subtitles.
Details
- Base URL
- https://api.scribewren.com/v1
- Authentication
- Bearer API key. JSON in camelCase.
- Browsers
- No cookies and no CORS. Call it from your server, not from a web page.
- Webhook events
- transcription.succeeded and transcription.failed.
- Signing
- Standard Webhooks headers: webhook-id, webhook-timestamp and webhook-signature.
- Failed deliveries
- Retried automatically, with a delivery log you can read and a test event you can send.
Plan availability
| Free | Unlimited | |
|---|---|---|
| API access | Not included | Included |
| Transcriptions | 3 per day | No daily cap |
| Fair use | Not applicable | 300 audio hours per month |
API requests count towards the same limits and fair use as the app. Compare the plans.
More features
Documentation
The full reference, with every endpoint, error code and rate limit, is on the docs site.
Questions
Is the API included in Unlimited?
Yes, at no extra price. Free accounts cannot use the API.
Does the API have its own quota?
No. API requests share your plan limits and fair use with the app. Requests are also rate limited, and the docs describe how.
Can I call the API from a browser?
No. The API sets no cookies and allows no cross-origin requests, so call it from your server and keep keys out of client code.
How do webhooks work?
Register an HTTPS endpoint in Settings and choose the events. Each delivery is signed so you can verify it came from Scribewren, and failed deliveries are retried.
What happens to the API if I leave Unlimited?
Requests are refused while your account is not on an Unlimited plan. Your transcripts stay in the app.
Try it on your own recording
Free includes a few transcriptions a day. No card needed. Compare plans.
Start free