POST /models/{model_slug}/transcript

Slug audio : alpha-audio-v1 uniquement. Multipart : champ fichier obligatoire nommé audio (pas file). Optionnels : enable_diarization, enable_postcorrect (booléens formulaire). POST /models/{slug}/transcript : 200 TranscriptResponse si synchrone ; 202 si durée audio ≥ seuil (TRANSCRIPT_AUTO_JOB_THRESHOLD_SECONDS, défaut 60 s) — corps TranscriptJobSubmitResponse avec job_id, status (ex. queued), status_url (chemin relatif à préfixer avec la base URL). POST .../transcript/sync : toujours synchrone 200 si succès. POST .../transcript/jobs : file d’attente async, réponse 202. GET .../transcript/jobs/{job_id} : état (queued | running | succeeded | failed), result si succès. Le champ interne gateway_wall_ms est exclu du JSON client.

POST /models/{model_slug}/transcript

Request Body

Les paramètres suivants peuvent être inclus dans le corps de la requête :

Paramètres

audio
file
Required

Fichier audio (multipart, nom de champ : audio).

enable_diarization
boolean
Default Value: false

Optionnel. Active la diarization.

enable_postcorrect
boolean
Default Value: false

Optionnel. Post-correction (nom exact du champ). Désactivée temporairement sur la passerelle ; réactivation prévue sous peu.

Successful Response

Les champs suivants sont retournés dans une réponse réussie :

Champs de réponse

model_slug
string

Slug du modèle (réponse synchrone).

text
string

Texte transcrit (réponse 200 ou dans result).

inference_seconds
number

Durée d’inférence (réponse synchrone).

audio_duration_seconds
number

Durée audio détectée.

audio_filename
string null

Nom du fichier audio, ou null.

job_id
string

Identifiant du job (réponse 202).

status_url
string

Chemin relatif pour le polling (réponse 202) ; préfixer avec la base URL.

status
string

queued | running | succeeded | failed selon contexte.

result
object

Objet transcription une fois le job réussi.

error
string null

Message d’erreur si échec du job.

Examples

Exemples de code pour utiliser cet endpoint :

curl
curl -X POST "https://api-endpoints.alphaedge-ai.com/models/alpha-audio-v1/transcript" \
  -H "X-API-Key: TA_CLE" \
  -F "audio=@/chemin/audio.wav" \
  -F "enable_diarization=true"
python
import requests
url = "https://api-endpoints.alphaedge-ai.com/models/alpha-audio-v1/transcript"
headers = {"X-API-Key": "TA_CLE"}
with open("/chemin/audio.wav", "rb") as f:
    files = {"audio": ("audio.wav", f, "audio/wav")}
    data = {
        "enable_diarization": "true",
    }
    r = requests.post(url, headers=headers, files=files, data=data, timeout=300)
print(r.status_code)
print(r.json())
typescript
import fs from "node:fs";
const form = new FormData();
form.append("audio", new Blob([fs.readFileSync("/chemin/audio.wav")]), "audio.wav");
form.append("enable_diarization", "true");
const res = await fetch("https://api-endpoints.alphaedge-ai.com/models/alpha-audio-v1/transcript", {
  method: "POST",
  headers: { "X-API-Key": "TA_CLE" },
  body: form
});
console.log(res.status, await res.json());

Response

Exemple de réponse de l'API :

json
HTTP 200 — TranscriptResponse :
{
  "model_slug": "alpha-audio-v1",
  "text": "…",
  "inference_seconds": 1.2,
  "enable_diarization": false,
  "audio_duration_seconds": 45.3,
  "audio_filename": "audio.wav"
}

HTTP 202 — soumission job (TranscriptJobSubmitResponse) :
{
  "job_id": "abc123",
  "status": "queued",
  "status_url": "/models/alpha-audio-v1/transcript/jobs/abc123"
}

GET …/transcript/jobs/{job_id} — TranscriptJobStatusResponse (extrait) :
{
  "job_id": "abc123",
  "status": "succeeded",
  "created_at": "2026-04-27T10:00:00Z",
  "updated_at": "2026-04-27T10:00:05Z",
  "result": { "model_slug": "alpha-audio-v1", "text": "…" },
  "error": null
}