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:

  • Content-Type: multipart/form-data
  • Body:
  • - 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:

  • 400 — No file or invalid format
  • 403 — Insufficient credits
  • 429 — Rate limit (max 10 per hour)
  • 500 — Transcription failed
  • Limits:

  • Max file size: 500 MB
  • Supported formats: MP3, WAV, M4A, OGG, FLAC, WebM, MP4
  • Rate limit: 10 transcriptions per hour
  • 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:

  • Max 5 requests per day per IP
  • Max file size: 1 MB
  • 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"

    Billing

  • Per-second billing (no rounding to full minutes)
  • Credits are deducted after successful transcription
  • No credits deducted on error
  • Data Privacy

  • All data is processed exclusively on EU servers
  • Audio files are deleted immediately after transcription
  • See Privacy Policy for details