API Demorphus
Version 1 · mise à jour 2026-10-28 · English
L’API fait exactement ce que fait le Studio, depuis votre propre code : vous envoyez un morceau, Demorphus le traite et le vérifie avec SH Labs, puis vous récupérez le MP3. Même pipeline, même quota, même résultat.
1. Qui y a accès
- Les abonnés Monthly (19 € / mois, 50 morceaux par mois) et Yearly (60 € / an, 150 morceaux par mois).
- Les comptes qui ont des morceaux à l’unité (1,49 € le morceau).
Le quota est partagé avec le Studio : un morceau envoyé par l’API compte comme un morceau importé dans le Studio. Le compte gratuit n’a pas accès à l’API.
2. Créer une clé
Connectez-vous, ouvrez Accès API dans le Studio, donnez un nom à la clé et cliquez sur « Créer une clé API ».
- La clé commence par
dmk_live_. Elle n’est affichée qu’une seule fois : copiez-la tout de suite. Demorphus n’en garde qu’une empreinte et ne peut pas vous la renvoyer. - Au plus 5 clés actives par compte. Une clé se révoque depuis la même page, immédiatement.
- Gardez-la côté serveur. Ne la mettez jamais dans une page web ou une application mobile.
3. Authentification
Base de l’API : https://studio.demorphus.com/api/v1
Chaque requête envoie la clé dans l’en-tête Authorization: Bearer dmk_live_…. Aucun cookie n’est lu.
curl -H "Authorization: Bearer $DEMORPHUS_KEY" https://studio.demorphus.com/api/v1/me
4. Traiter un morceau
Un morceau prend 10 à 15 minutes. L’API est donc asynchrone : vous envoyez le fichier, vous recevez un identifiant, puis vous demandez où en est le morceau jusqu’à ce qu’il soit prêt.
Envoyer le fichier
curl -H "Authorization: Bearer $DEMORPHUS_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F [email protected] https://studio.demorphus.com/api/v1/tracks
Réponse 202, avec l’en-tête Location vers le morceau :
{"reused": false, "track": {"id": "8f0c…", "status": "queued", "audio_url": null, …}}
L’en-tête Idempotency-Key est facultatif mais conseillé. Si la connexion coupe et que vous renvoyez le même fichier avec la même valeur, vous recevez le même morceau (200, "reused": true) sans qu’il soit décompté deux fois. Une valeur par envoi : 1 à 64 caractères parmi A-Z a-z 0-9 _ . : -. Réutilisée avec un autre fichier, ou plus de 24 h après, elle répond 409.
Suivre le morceau
curl -H "Authorization: Bearer $DEMORPHUS_KEY" https://studio.demorphus.com/api/v1/tracks/$ID
Demandez toutes les 30 à 60 secondes. Le champ status vaut :
| status | Sens |
|---|---|
queued | En attente dans la file. |
processing | En cours de traitement. |
done | Terminé, le rendu passe sous le seuil SH Labs. |
not_reached | Terminé, mais aucun rendu ne passe le seuil : le meilleur est livré et le morceau compte, comme dans le Studio. |
unverified | Terminé, rendu livré sans verdict SH Labs. |
failed | Le traitement a échoué. |
Le morceau contient aussi les mêmes informations que le rapport du Studio : scores avant et après (baseline, attempts), durée, empreintes SHA-256 du fichier source et du résultat, date d’expiration.
Télécharger le MP3
curl -H "Authorization: Bearer $DEMORPHUS_KEY" -o song-demorphus.mp3 \
https://studio.demorphus.com/api/v1/tracks/$ID/audio
Disponible quand status vaut done, not_reached ou unverified (le champ audio_url est alors rempli). Les fichiers sont effacés après 7 jours, comme dans le Studio.
5. Routes
| Route | Rôle |
|---|---|
GET /me | Votre formule et ce qu’il vous reste : plan, status, unlimited, remaining_this_month, used_this_month, credits. |
POST /tracks | Envoie un morceau (champ multipart file). |
GET /tracks | Liste vos morceaux, Studio compris. |
GET /tracks/{id} | Un morceau. |
GET /tracks/{id}/audio | Le MP3 traité. |
6. Fichiers acceptés et limites
- MP3, WAV ou FLAC, mono ou stéréo, de 5 secondes à 10 minutes, moins de 50 Mo.
- 10 envois par minute et par clé.
- Un morceau traité à la fois par compte. Quand 5 morceaux sont déjà en attente ou en cours pour tout le service, l’envoi répond
429. Réessayez après le délai indiqué parRetry-After.
7. Erreurs
Toute erreur renvoie {"error": "…", "code": "…"} : error est un message lisible, code ne change pas et sert à votre code.
| HTTP | code |
|---|---|
| 400 | invalid_request |
| 401 | invalid_key |
| 402 | quota_exhausted |
| 403 | forbidden |
| 404 | not_found |
| 405 | method_not_allowed |
| 409 | conflict |
| 413 | file_too_large |
| 429 | rate_limited |
| 503 | unavailable |
| autre (500…) | error |
402 quota_exhausted : le quota du mois est atteint et il ne reste pas de morceau à l’unité. Il repart le premier jour du mois suivant, ou achetez des morceaux à l’unité depuis Mon compte.
Une question sur l’API ? [email protected]