---
title: "Depose un audio dans la file de traitement serveur (Lot L5)"
method: POST
path: "/audio"
tags: ["pipeline"]
---

# Depose un audio dans la file de traitement serveur (Lot L5)

`POST /audio`

## Request

- Base URL: `https://jam-jam.org/api/v1`
- URL: `https://jam-jam.org/api/v1/audio`
- Auth: one of:
  - HTTP bearer
  - none

Met en file l'analyse (accords, paroles) puis le calage AUTOMATIQUE
d'un audio pour une chanson DU COMPTE appelant — la MEME file que
l'application mobile/web, jamais un acces a l'audio d'un tiers
(exception du gerant EXT-014, 2026-09-23). Portee `audio:write`,
compte requis. `songId` DOIT deja exister dans le carnet du compte
appelant (404 sinon, jamais un oracle sur le carnet d'un tiers :
la recherche ne porte que sur SON PROPRE carnet). Idempotent par
(compte, chanson, sha256) : un second depot identique rend le meme
travail sans consommer une seconde unite (`reused: true`). Plafond
anti-abus : 50 travaux en attente par compte.

## Response `202`

Travail mis en file (ou reutilise)

- AudioPipelineJob: Un travail de la file de traitement audio serveur (Lot L5). Forme stable pour l'API publique (`base_song_id`/`source_sha256` sont des noms de colonnes SQL, deliberement gardes tels quels : c'est la MEME file, la meme forme, que l'application).
  - `id` string, required
  - `base_song_id` string
  - `source_sha256` string
  - `origin` 'mobile' | 'web' | 'api'
  - `tier` 'free' | 'unlimited'
  - `status` 'queued' | 'active' | 'done' | 'failed' | 'cancelled', required
  - `stage` 'analyze' | 'align', required
  - `analyze_status` 'pending' | 'running' | 'done' | 'failed', required
  - `align_status` 'pending' | 'running' | 'done' | 'failed' | 'skipped' | 'cancelled', required
  - `stems_status` 'pending' | 'submitted' | 'done' | 'failed' | 'skipped'
  - `progress` integer, required
  - `error_code` string
  - `rank` integer: Position dans la file (queued seulement)
  - `reused` boolean: Vrai si ce depot a reutilise un travail existant (idempotence)
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `claimed_at` string, date-time
  - `started_at` string, date-time
  - `finished_at` string, date-time

## Other responses

- `400`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `401`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `403`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `404`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `413`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `415`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).
- `429`: Toute erreur de cette API, quel que soit le code HTTP, est un `application/problem+json` (RFC 9457) avec ce meme schema : `code` est la valeur stable a tester par un client (le `status` HTTP peut varier legerement selon le contexte, `code` non). `quota` est renseigne pour les erreurs liees au quota (`quota-exhausted`, `anon-quota-exhausted`, `client-quota`).

---

[API](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api.md) · [All operations](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jam-jam/apis/jam-jam-convert-api/revisions/64cd41a46e4e?raw)
