Référence API

Musique

POST/v1/music/generations
GET/v1/music/tasks/{task_id}
GET/v1/music/tasks/{task_id}/content

Génération de musique asynchrone pour les chansons et les instrumentaux. La soumission renvoie immédiatement un task_id ; interrogez la tâche ou recevez un callback webhook, puis lisez l'audio terminé depuis /content.

#Paramètres de la requête

  • modelstringobligatoire

    Un ID de modèle de musique issu de la page des modèles, par ex. suno.

  • promptstringobligatoire

    Décrivez la chanson, l'ambiance, l'instrumentation ou l'orientation des paroles.

  • titlestringfacultatif

    Titre de piste facultatif, transmis aux familles de modèles qui le prennent en charge.

  • tagsstring | arrayfacultatif

    Indications facultatives de genre ou de style, comme cinematic, pop ou ambient.

  • versionstringfacultatif

    Sélecteur de version de la famille de modèles lorsque le fournisseur propose plusieurs générations.

  • mvstringfacultatif

    Sélecteur de mode musical propre au fournisseur ; gardez-le côté serveur sauf si les utilisateurs ont besoin d'un contrôle explicite.

  • instrumentalbooleanfacultatif

    Génère une sortie instrumentale sans voix lorsque le modèle le permet.

  • make_instrumentalbooleanfacultatif

    Indicateur alternatif pour une sortie instrumentale ; certains fournisseurs l'utilisent à la place de instrumental.

  • continue_clip_idstringfacultatif

    Prolonge ou étend un clip précédent au lieu de démarrer une nouvelle piste.

  • continue_atnumberfacultatif

    Point de reprise en secondes pour les parcours de continuation.

  • webhook_urlstringfacultatif

    URL HTTPS appelée dès que la tâche atteint un état final.

  • webhook_secretstringfacultatif

    Si défini, les envois portent X-Xiaoxiang-Signature: sha256=hex(HMAC-SHA256(body, secret)).

Commencez simplement

Pour la plupart des produits, prompt suffit pour une première intégration. Les champs title, tags, version et de continuation sont des réglages avancés à n'ajouter que lorsque le produit en a clairement besoin.

Même contrat asynchrone que les autres tâches média

La musique suit le même schéma soumission → interrogation ou webhook → /content que les tâches d'image et de vidéo : un seul exécuteur de tâches backend peut généralement gérer les trois.

#Erreurs associées

  • 404 not_foundChemin inconnu, nom de modèle inconnu, ou task_id expiré / appartenant à un autre compte.
  • 422 unprocessable_entityLe fournisseur a rejeté des valeurs de paramètres transmises par la passerelle (par ex. taille ou durée non prise en charge).
  • 401Jeton bearer invalide ou manquant. Pas de error.code sur ce chemin — basez-vous sur le statut.
  • 402 insufficient_user_quotaLe solde du portefeuille ne couvre pas l'estimation préréservée.
  • 429Limitation par clé. Corps vide ; attendez Retry-After. Un 429 qui contient insufficient_user_quota correspond en revanche à un plafond de dépenses quotidien.
  • 503 model_not_foundModèle inconnu, ou aucun canal opérationnel ne le sert actuellement.

Table complète des codes d'erreur →

#Exemple de requête

# submit
curl https://www.aisplice.store/v1/music/generations \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno",
    "prompt": "a warm cinematic piano theme",
    "instrumental": true
  }'

# poll every 5s
curl https://www.aisplice.store/v1/music/tasks/$TASK_ID -H "Authorization: Bearer sk-YOUR_KEY"

# fetch the finished track
curl -L https://www.aisplice.store/v1/music/tasks/$TASK_ID/content \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -o song.mp3

#Réponse

response.json
// POST — submit accepted
{"task_id": "task_xxx", "status": "queued"}

// GET /v1/music/tasks/{task_id}
{
  "task_id": "task_xxx",
  "status": "in_progress",
  "progress": "42%"
}

// GET /v1/music/tasks/{task_id}/content
{
  "task_id": "task_xxx",
  "status": "completed",
  "metadata": {
    "audio_url": "https://…",
    "lyric": "…"
  }
}

Toujours bloqué ?

Envoyez-nous l'ID de requête ou le message d'erreur, et nous examinerons le problème.