API Reference
Whisper API Docs
OpenAI-compatible speech-to-text. One endpoint, every format.
Authentication
All requests require an API key in the Authorization header. Create and manage keys in your dashboard.
http
Authorization: Bearer dt_live_xxxxxxxxTranscribe audio
POST https://deeting.ai/api/v1/audio/transcriptions
Upload a file via multipart/form-data, or pass an audio_url in a JSON body for large files.
Upload a filebash
curl https://deeting.ai/api/v1/audio/transcriptions \
-H "Authorization: Bearer dt_live_xxxxxxxx" \
-F "file=@meeting.mp3" \
-F "response_format=verbose_json"Transcribe by URL (large files)bash
curl https://deeting.ai/api/v1/audio/transcriptions \
-H "Authorization: Bearer dt_live_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"audio_url": "https://cdn.example.com/lecture.mp3", "response_format": "srt"}'| Parameter | Type | Description |
|---|---|---|
| file | file | Audio/video file (mp3, mp4, wav, m4a…) |
| audio_url | string | Public URL to audio (JSON body alternative) |
| language | string? | ISO code, e.g. en, zh. Omit for auto-detect. |
| response_format | string? | text | json | verbose_json | srt | vtt (default: full JSON) |
| timestamp_granularities | string? | Include word for word-level timestamps (verbose_json) |
Response formats
verbose_json — full structure with per-segment timestamps and metadata:
json
{
"task": "transcribe",
"language": "en",
"duration": 612.4,
"text": "…full transcript…",
"segments": [
{
"id": 0,
"seek": 0,
"start": 0.0,
"end": 6.2,
"text": " Welcome everyone to the meeting.",
"temperature": 0.0,
"avg_logprob": -0.24,
"compression_ratio": 1.31,
"no_speech_prob": 0.01
}
]
}srt / vtt — ready-to-use subtitles:
srt
1
00:00:00,000 --> 00:00:06,200
Welcome everyone to the meeting.
2
00:00:06,200 --> 00:00:11,050
Let's get started with the roadmap.Errors & limits
Errors return a consistent JSON shape: { "error": { "code", "message" } }
text
401 missing_api_key / invalid_api_key → bad or missing Authorization header
429 quota_exceeded → monthly hours exhausted, upgrade
400 invalid_audio_url / bad_request → malformed request
502 upstream_unavailable → transcription service errorQuotas are per calendar month and reset on the 1st. Free tier includes 10 hours/month; upgrade for more. Very long audio is best sent via audio_url.