Tools erbjuder en köbaserad Whisper-tjänst för media-URL:er och uppladdade ljud-/videofiler.
Den här sidan fokuserar på det publika kontraktet: vad funktionen gör, hur användare och klienter använder den, vilka endpoints som finns och vad klienter ska förvänta sig i request/response.
Whisper i Tools kan:
Det vanliga Whisper-gränssnittet och det autentiserade API:t använder:
POST /api/account/loginBehörigheter på användarnivå:
whisper.use för vanlig köåtkomstwhisper.manage för admin/full köåtkomst och run-now-funktionerprovider_openai när transcriptanalys/översättningar ska köras för en icke-admin-användareTools exponerar nu också ett separat server-till-server-API för tokenbaserade integrationer.
Authkrav:
provider_whisper_apiAuthorization: Bearer YOUR_API_TOKENwhisper.apiwhisper.use)Äldre transport via X-Api-Key eller apikey kan fortfarande finnas kvar för bakåtkompatibilitet, men nya integrationer bör använda Authorization-headern.
Whisper-jobb körs asynkront.
Jobbstatusar:
queueddownloadingtranscribingfinalizingcompletedfailedJobb kan nu också exponera vilket köspår de kommer från:
queue_channel="web"queue_channel="api"Det betyder att inloggade kö-/detaljvyer och autentiserade /api/whisper/jobs*-payloads kan visa om ett jobb kommer från den vanliga användarkön eller från det tokenbaserade API-spåret.
Adminägda jobb prioriteras före vanliga jobb när arbete claimas från kön.
/whisperDen inloggade kön låter användaren:
/whisper/jobs/{jobId}Den inloggade detaljvyn visar:
Färdiga jobb kan skapa en publik transcript-share-sida.
Färdiga transcript kan exponeras via en tokeniserad publik sida under:
/shared/whisper/transcript/{token}Share-sidan är till för läsning/delning av transcriptet, inte för köadministration.
För tokenbaserade API-jobb kan Tools nu skapa den share-sidan automatiskt när transcriptet blir klart, och callback-payloaden innehåller då den direkta share-länken.
/api/whisper/*)Dessa endpoints använder inloggad webb-/JWT-auth, inte den dedikerade Whisper-API-token.
GET /api/whisper/statusReturnerar kösummering och capability-flaggor.
Typisk responseform:
{
"ok": true,
"summary": {
"queued": 3,
"processing": 1,
"completed": 21,
"failed": 2
},
"can_manage_all": false,
"config": {
"enabled": true,
"default_model": "large",
"upload_max_mb": 64,
"upload_limit": {
"configured_mb": 200,
"php_upload_max_mb": 64,
"php_post_max_mb": 128,
"effective_max_mb": 64,
"effective_max_label": "64 MB",
"limited_by_php": true
},
"ytdlp_configured": true
}
}
upload_max_mb visar nu den praktiska/effektiva gränsen för uppladdade Whisper-filer på den aktuella hosten, och additiv config.upload_limit kan förklara när PHP:s upload-/body-gränser ligger lägre än Whisper-konfigurationens egen cap.
GET /api/whisper/jobs?limit=100Returnerar synliga Whisper-jobb för den autentiserade användaren.
POST /api/whisper/jobsKöar ett nytt Whisper-jobb.
Stödda requeststilar:
source_urlmultipart/form-data med media_fileViktig regel:
source_url eller media_file, inte båda422-valideringsfel under media_file i stället för bara det generiska “failed to upload”-meddelandetExempel på JSON-body:
{
"source_url": "https://example.com/audio.mp3",
"source_label": "Intervju med kund",
"source_note": "Inspelat uppföljningssamtal med support.",
"model": "large",
"language": "sv",
"analysis_language": "sv",
"translation_target_languages": ["en"]
}
GET /api/whisper/jobs/{jobId}Returnerar ett synligt Whisper-jobb.
Additiva jobbfält inkluderar nu bland annat:
queue_channelqueue_channel_labelsource_typesource_labelsource_notesource_mimesource_size_bytessource_duration_secondssource_duration_humanstage_labelstage_detailruntime_log[]livenessanalysistranslations[]diarizationsharecallback (främst relevant för API-köjobb)POST /api/whisper/jobs/{jobId}/analyzeKör transcriptanalys för ett färdigt transcript.
Guardrails:
POST /api/whisper/jobs/{jobId}/cancelBegär kooperativ cancel av ett aktivt jobb.
POST /api/whisper/jobs/{jobId}/restartKöar om ett failat/köat jobb för ny körning.
DELETE /api/whisper/jobs/{jobId}Tar bort ett jobb som inte längre processas aktivt.
POST /api/whisper/run-nowAdmin-/managerhjälpare.
Requestbody kan exempelvis innehålla:
{
"limit": 1,
"reset_failed": true
}
/api/whisper/transcribe/*)Det här är det dedikerade server-till-server-API:t med callbackflöde.
GET /api/whisper/transcribe/statusReturnerar kösummering för det tokenbaserade API-köspåret.
GET /api/whisper/transcribe/jobs?limit=100Returnerar synliga jobb från API-köspåret.
GET /api/whisper/transcribe/jobs/{jobId}Returnerar ett synligt API-köjobb.
POST /api/whisper/transcribeKöar ett nytt tokenautentiserat Whisper-jobb.
Obligatoriskt fält:
callback_urlStödda submit-stilar:
source_urlmedia_fileGuidning för upload-validering:
422 med errors.media_file[] som förklarar den effektiva Whisper-uploadgränsenmedia_file-validering används nu också för partiella uppladdningar, saknad temp-mapp, skrivfel och andra PHP-relaterade uploadtransportfel innan jobbet hunnit köasToken-API:t accepterar samma additiva metadata som den vanliga kö-endpointen, inklusive:
source_labelsource_notemodellanguageanalysis_languagetranslation_target_languages[]disable_diarizationExempel på JSON-body:
{
"source_url": "https://example.com/audio.mp3",
"callback_url": "https://api.example.test/whisper/callback",
"source_label": "Kundintervju",
"source_note": "Transkribera och skicka slutresultatet tillbaka till vår integration.",
"model": "large",
"language": "en",
"analysis_language": "en",
"translation_target_languages": ["sv"]
}
Exempel på lyckad respons:
{
"ok": true,
"message": "Whisper API job queued. A callback will be sent when the job reaches a terminal state.",
"job": {
"id": 123,
"queue_channel": "api",
"queue_channel_label": "API queue",
"status": "queued",
"callback": {
"url": "https://api.example.test/whisper/callback",
"status": "pending",
"http_status": null,
"last_attempt_at": null,
"delivered_at": null,
"error": null
},
"share": null
}
}
När ett tokenautentiserat Whisper-API-jobb når terminalstatus completed eller failed skickar Tools en JSON-POST till den angivna callback_url.
Callback-envelope:
{
"ok": true,
"event": "whisper.job.completed",
"job": {
"job_id": 123,
"status": "completed",
"status_label": "Completed",
"queue_channel": "api",
"queue_channel_label": "API queue",
"source": "Kundintervju",
"model": "large",
"language": "en",
"job_url": "https://tools.example.test/whisper/jobs/123",
"share_url": "https://tools.example.test/shared/whisper/transcript/example-token-redacted",
"transcript_text": "...",
"analysis_text": "...",
"translations": [],
"share": {
"url": "https://tools.example.test/shared/whisper/transcript/example-token-redacted"
}
}
}
Failade callbacks använder event="whisper.job.failed" och kan innehålla failure_error i stället för transcript/share-data.
Klientrekommendationer:
job.job_id som nyckelVanliga felklasser:
401 oautentiserad / token avvisad403 saknad behörighet404 jobb saknas eller är inte synligt för anroparen422 validerings- eller business-regelfel429 throttling5xx tillfälligt backend-/providerfelWhisper-rutterna använder en generell policy throttle:120,1.
Klienter bör ändå implementera vanlig backoff för upprepad polling eller temporära fel.
Authorization: Bearer YOUR_API_TOKENcallback_url som obligatoriskt för tokenbaserade submitsqueue_channel och queue_channel_label i operatörs-/debuggränssnitttranscript_text som primärresultat och speaker_aware_transcript som additiv hjälputdatashare.url som publik åtkomst och hantera den försiktigt