API Documentation
Overview
The Transkribr API lets you integrate audio transcription into your own applications. All requests are sent via HTTPS.
Base URL: https://api.transkribr.eu
Authentication
All endpoints (except Demo and Health) require an API key in the Authorization header:
Authorization: Bearer tk_your_api_key
API keys can be created in the Dashboard under "API Keys". Each key is tied to your account and uses your credits. The key is shown only once — store it securely!
Endpoints
POST /api/transcribe
Transcribes an audio file. Requires authentication and sufficient credits.
Request:
- audio (file, required) — Audio file (MP3, WAV, M4A, OGG, FLAC, WebM, MP4)
- language (string, optional) — Language code (e.g. "de", "en", "fr"). Empty = auto-detect.
Response (200):
{
"id": "uuid",
"status": "completed",
"text": "Transcribed text...",
"duration_seconds": 120
}Errors:
Limits:
GET /api/credits
Returns the current credit balance.
Response (200):
{ "credits_minutes": 45.5 }GET /api/usage
Returns credit balance and usage history.
Response (200):
{
"credits_minutes": 45.5,
"usage": [
{
"id": "uuid",
"filename": "meeting.mp3",
"duration_seconds": 600,
"credits_deducted": 10.0,
"credits_remaining": 45.5,
"created_at": "2026-03-08T12:00:00Z"
}
]
}GET /api/transcriptions
List all transcriptions (newest first).
Response (200):
[
{
"id": "uuid",
"filename": "interview.mp3",
"status": "completed",
"text": "Transcribed text...",
"duration": 300,
"created_at": "2026-03-08T12:00:00Z"
}
]DELETE /api/transcriptions/:id
Delete a single transcription.
Response (200):
{ "message": "Deleted" }DELETE /api/account
Delete entire account including all data (GDPR Art. 17).
Response (200):
{ "message": "Account deleted" }GET /api/health
Health check (no authentication required).
Response (200):
{ "status": "ok", "db": "ok", "timestamp": "2026-03-08T12:00:00Z" }POST /api/demo
Demo transcription without authentication. IP-based rate limit.
Limits:
Error Handling
All errors are returned as JSON with a code and message property:
{ "code": "NO_CREDITS", "message": "No credits left" }Common error codes: NO_CREDITS, INSUFFICIENT_CREDITS, RATE_LIMIT, UNSUPPORTED_FORMAT, INVALID_FORMAT, GPU_OVERLOADED, GPU_TIMEOUT, TRANSCRIPTION_FAILED
Example (cURL)
curl -X POST https://api.transkribr.eu/api/transcribe \ -H "Authorization: Bearer tk_your_api_key" \ -F "audio=@meeting.mp3" \ -F "language=de"