Passer au contenu principal
POST
/
v1
/
music
/
generations
/
extendFlowMusic
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations/extendFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "extend_from_s": 30,
    "extend_s": 60,
    "instruction": "Prolonger la mélodie principale en ajoutant des cordes"
  }'
import requests

url = "https://api.apimart.ai/v1/music/generations/extendFlowMusic"

payload = {
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "extend_from_s": 30,
    "extend_s": 60,
    "instruction": "Prolonger la mélodie principale en ajoutant des cordes"
}

headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/music/generations/extendFlowMusic";

const payload = {
  model: "flowmusic",
  clip_id: "abc123-def456",
  extend_from_s: 30,
  extend_s: 60,
  instruction: "Prolonger la mélodie principale en ajoutant des cordes"
};

const headers = {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KWXVCYB70YJ1WY9X22RVYRNP"
    }
  ]
}
{
  "error": {
    "message": "clip_id is required",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Solde insuffisant",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations/extendFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "extend_from_s": 30,
    "extend_s": 60,
    "instruction": "Prolonger la mélodie principale en ajoutant des cordes"
  }'
import requests

url = "https://api.apimart.ai/v1/music/generations/extendFlowMusic"

payload = {
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "extend_from_s": 30,
    "extend_s": 60,
    "instruction": "Prolonger la mélodie principale en ajoutant des cordes"
}

headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
const url = "https://api.apimart.ai/v1/music/generations/extendFlowMusic";

const payload = {
  model: "flowmusic",
  clip_id: "abc123-def456",
  extend_from_s: 30,
  extend_s: 60,
  instruction: "Prolonger la mélodie principale en ajoutant des cordes"
};

const headers = {
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
};

fetch(url, {
  method: "POST",
  headers: headers,
  body: JSON.stringify(payload)
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KWXVCYB70YJ1WY9X22RVYRNP"
    }
  ]
}
{
  "error": {
    "message": "clip_id is required",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Solde insuffisant",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "La capacité du groupe actuel est saturée, veuillez réessayer plus tard",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}

Authentification

Authorization
string
requis
Toutes les API nécessitent une authentification par Bearer TokenObtenir une clé API :Rendez-vous sur la page de gestion des clés API pour obtenir votre clé APIAjoutez-la dans l’en-tête de la requête lors de l’utilisation :
Authorization: Bearer YOUR_API_KEY

Paramètres de requête

model
string
requis
Nom du modèle, toujours passer "flowmusic" (insensible à la casse)
clip_id
string
requis
clip_id de la musique source, provenant du result.music[].clip_id d’une tâche réussie
La tâche source doit avoir réussi. Un audio externe peut d’abord être importé via Téléverser un audio pour obtenir un clip_id.
extend_from_s
number
requis
Point temporel (en secondes) à partir duquel commence l’extensionNe peut pas dépasser la durée du clip source
extend_s
number
requis
Durée de l’extension (secondes)Valeur maximale : 164 secondes
instruction
string
requis
Instruction d’édition pour l’extension de la musiqueExemple : "Prolonger la mélodie principale en ajoutant des cordes"
title
string
Titre de la musique après extension
seed
string
Graine aléatoire, utilisée pour reproduire les résultats

Réponse

code
integer
Code de statut de la réponse, 200 en cas de succès
data
array
Tableau de données renvoyées

Cas d’usage

Scénario 1 : prolonger de 60 secondes à partir du refrain

{
  "model": "flowmusic",
  "clip_id": "abc123-def456",
  "extend_from_s": 30,
  "extend_s": 60,
  "instruction": "Prolonger la mélodie principale en ajoutant des cordes"
}
Interroger le résultat de la tâcheL’extension de musique est une tâche asynchrone ; après soumission, un task_id est renvoyé. Utilisez l’API Obtenir le statut de la tâche pour interroger la progression et le résultat de la génération. Le produit de l’extension est un nouveau clip_id ; utilisez ce nouveau clip_id pour les opérations ultérieures.

Exemple de résultat de tâche terminée

Exemple de réponse de requête (GET /v1/music/tasks/{task_id}) :
{
  "code": 200,
  "data": {
    "id": "task_01KWXVCYB70YJ1WY9X22RVYRNP",
    "status": "completed",
    "progress": 100,
    "created": 1783413242,
    "completed": 1783413292,
    "actual_time": 50,
    "cost": 0.048,
    "credits_cost": 0.48,
    "result": {
      "music": [
        {
          "clip_id": "d2f589ea-5390-4e83-8e2f-4517420408fa",
          "title": "Untitled (Extended)",
          "duration_seconds": "39.95733333",
          "create_time": "2026-07-07T08:34:33.240020Z",
          "lyrics": "waking up to the morning light,\n...",
          "lyrics_id": "0452451b-9e54-5d9f-8437-8bff97c7bbc8",
          "lyrics_timing_markers": [[0, 12], [129, 20]],
          "audio_url": "https://cdn.apimart.ai/audio/flowmusic_d2f589ea.m4a",
          "wav_url": "https://cdn.apimart.ai/audio/flowmusic_d2f589ea.wav",
          "image_url": "https://cdn.apimart.ai/image/flowmusic_d2f589ea_cover.jpg"
        }
      ]
    }
  }
}