DeepScript

Speech-to-Text API

The speech-to-text API that keeps your audio in Germany

A REST API with 20 endpoints, 99 languages, speaker diarization on every tier and HMAC-signed webhooks. Our own engines on our own hardware in Germany, no third party in the speech pipeline, from €0.18 per hour of audio.

Base URL
https://api.deepscript.com/v1
Authentication
Bearer ds_live_…
Rate limit
100 requests/min authenticated, 30 without a key
Data residency
Germany

Three calls to a transcript

The upload responds immediately with an ID. From there, poll or wait for the webhook.

# 1. Upload
curl -X POST https://api.deepscript.com/v1/transcriptions \
  -H "Authorization: Bearer ds_live_YOUR_KEY" \
  -F "file=@meeting.mp3" -F "model=standard" -F "language=auto"

# 2. Poll
curl https://api.deepscript.com/v1/transcriptions/{id}/status \
  -H "Authorization: Bearer ds_live_YOUR_KEY"

# 3. Export
curl "https://api.deepscript.com/v1/transcriptions/{id}/export?format=srt" \
  -H "Authorization: Bearer ds_live_YOUR_KEY" -o result.srt

Error format: RFC 7807 Problem Details, application/problem+json.

Every endpoint

Paths, methods and names are English, exactly as in the OpenAPI specification. Try them interactively with your own key in the reference.

Transcriptions

The core of the API: upload a file, poll for status, fetch the result in four formats. The upload responds immediately with an ID, processing runs asynchronously.

MethodPathSummary
POST/v1/transcriptionsCreate transcription (file upload)
GET/v1/transcriptionsList transcriptions
GET/v1/transcriptions/{id}Get transcription detail
DELETE/v1/transcriptions/{id}Delete transcription
GET/v1/transcriptions/{id}/statusGet transcription status (lightweight polling)
GET/v1/transcriptions/{id}/eventsSSE stream for real-time status updates
GET/v1/transcriptions/{id}/exportExport transcription

Vocabularies

Custom word lists for product names, domain terms and proper nouns. Created once, referenced by ID on any transcription.

MethodPathSummary
GET/v1/vocabulariesList vocabularies
POST/v1/vocabulariesCreate vocabulary
GET/v1/vocabularies/{id}Get vocabulary
PUT/v1/vocabularies/{id}Update vocabulary
DELETE/v1/vocabularies/{id}Delete vocabulary

Webhooks

Instead of polling: register an HTTPS endpoint and receive an HMAC-SHA256 signed delivery on every event, with three retry attempts.

MethodPathSummary
GET/v1/webhooksList webhook endpoints
POST/v1/webhooksCreate webhook endpoint
DELETE/v1/webhooks/{id}Delete webhook endpoint

Account

Workspace balance, usage and profile. Useful to check whether the balance covers a large batch before starting it.

MethodPathSummary
GET/v1/account/balanceGet current balance
GET/v1/account/usageGet usage analytics
GET/v1/account/profileGet account profile

System

Callable without authentication. The language list is the authoritative answer to which languages are actually supported.

MethodPathSummary
GET/v1/healthHealth check
GET/v1/languagesList supported languages

Webhook events

Every delivery carries an HMAC-SHA256 signature in the header and is retried three times with increasing backoff on failure.

  • transcription.completedSent when a transcription completes
  • transcription.failedSent when a transcription fails
  • balance.lowSent when workspace balance drops below the configured threshold

Machine readable

The complete OpenAPI 3.1 specification is mirrored on this domain. Client generators, Postman and AI agents can read it directly.

API key in two minutes

Create an account, generate a key, start calling. The first 3 transcriptions are free, no credit card.