Saltar para o conteúdo 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": "Continuar a melodia principal, adicionando cordas"
  }'
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": "Continuar a melodia principal, adicionando cordas"
}

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: "Continuar a melodia principal, adicionando cordas"
};

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": "Saldo insuficiente",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "A capacidade do grupo atual está saturada, tente novamente mais tarde",
    "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": "Continuar a melodia principal, adicionando cordas"
  }'
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": "Continuar a melodia principal, adicionando cordas"
}

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: "Continuar a melodia principal, adicionando cordas"
};

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": "Saldo insuficiente",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "A capacidade do grupo atual está saturada, tente novamente mais tarde",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}

Autenticação

Authorization
string
obrigatório
Todos os endpoints exigem autenticação via Bearer TokenObtenha sua API Key:Acesse a página de gerenciamento de API Keys para obter sua API KeyAo usar, adicione ao cabeçalho da requisição:
Authorization: Bearer YOUR_API_KEY

Parâmetros da Requisição

model
string
obrigatório
Nome do modelo, sempre passe "flowmusic" (não diferencia maiúsculas de minúsculas)
clip_id
string
obrigatório
clip_id da música de origem, proveniente de result.music[].clip_id de uma tarefa concluída com sucesso
A tarefa de origem deve ter sido concluída com sucesso. Áudios externos podem ser importados primeiro via Enviar Áudio para obter um clip_id.
extend_from_s
number
obrigatório
Ponto no tempo (segundos) a partir do qual a continuação começaNão pode exceder a duração do clip de origem
extend_s
number
obrigatório
Duração da continuação (segundos)Valor máximo: 164 segundos
instruction
string
obrigatório
Instrução de edição para a continuação da músicaExemplo: "Continuar a melodia principal, adicionando cordas"
title
string
Título da música após a extensão
seed
string
Semente aleatória, usada para reproduzir resultados

Resposta

code
integer
Código de status da resposta, 200 em caso de sucesso
data
array
Array de dados retornados

Casos de Uso

Cenário 1: Continuar 60 segundos a partir do refrão

{
  "model": "flowmusic",
  "clip_id": "abc123-def456",
  "extend_from_s": 30,
  "extend_s": 60,
  "instruction": "Continuar a melodia principal, adicionando cordas"
}
Consultar o Resultado da TarefaA extensão de música é uma tarefa assíncrona; após o envio, um task_id é retornado. Use o endpoint Obter Status da Tarefa para consultar o progresso e o resultado da geração. O produto da extensão é um novo clip_id; use o novo clip_id nas operações subsequentes.

Exemplo de Resultado de Tarefa Concluída

Exemplo de resposta da consulta (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"
        }
      ]
    }
  }
}