Langsung ke konten utama
POST
/
v1
/
music
/
generations
/
replaceFlowMusic
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations/replaceFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "start_s": 10,
    "end_s": 20,
    "instruction": "Ganti dengan versi piano"
  }'
import requests

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

payload = {
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "start_s": 10,
    "end_s": 20,
    "instruction": "Ganti dengan versi piano"
}

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/replaceFlowMusic";

const payload = {
  model: "flowmusic",
  clip_id: "abc123-def456",
  start_s: 10,
  end_s: 20,
  instruction: "Ganti dengan versi piano"
};

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_01KWXVHGTG5JM33S8FG1K90YQ6"
    }
  ]
}
{
  "error": {
    "message": "end_s must be greater than start_s",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Saldo tidak mencukupi",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "Kapasitas grup saat ini penuh, silakan coba lagi nanti",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/music/generations/replaceFlowMusic \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "start_s": 10,
    "end_s": 20,
    "instruction": "Ganti dengan versi piano"
  }'
import requests

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

payload = {
    "model": "flowmusic",
    "clip_id": "abc123-def456",
    "start_s": 10,
    "end_s": 20,
    "instruction": "Ganti dengan versi piano"
}

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/replaceFlowMusic";

const payload = {
  model: "flowmusic",
  clip_id: "abc123-def456",
  start_s: 10,
  end_s: 20,
  instruction: "Ganti dengan versi piano"
};

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_01KWXVHGTG5JM33S8FG1K90YQ6"
    }
  ]
}
{
  "error": {
    "message": "end_s must be greater than start_s",
    "type": "invalid_request",
    "param": "",
    "code": "invalid_request"
  }
}
{
  "error": {
    "message": "Saldo tidak mencukupi",
    "type": "invalid_request",
    "param": "",
    "code": "quota_not_enough"
  }
}
{
  "error": {
    "message": "Kapasitas grup saat ini penuh, silakan coba lagi nanti",
    "type": "rate_limit_error",
    "param": "",
    "code": "rate_limit_error"
  }
}

Autentikasi

Authorization
string
wajib
Semua endpoint memerlukan autentikasi menggunakan Bearer TokenMendapatkan API Key:Kunjungi halaman pengelolaan API Key untuk mendapatkan API Key AndaTambahkan ke header permintaan saat digunakan:
Authorization: Bearer YOUR_API_KEY

Parameter Permintaan

model
string
wajib
Nama model, selalu isi "flowmusic" (tidak peka huruf besar/kecil)
clip_id
string
wajib
clip_id musik sumber, berasal dari result.music[].clip_id tugas yang telah berhasil
start_s
number
wajib
Waktu mulai penggantian (detik)
end_s
number
wajib
Waktu akhir penggantian (detik)
end_s harus lebih besar dari start_s dan tidak boleh melebihi durasi clip sumber.
instruction
string
wajib
Instruksi penyuntingan untuk segmen penggantiContoh: "Ganti dengan versi piano"
title
string
Judul musik setelah penggantian
seed
integer
Seed acak, digunakan untuk mereproduksi atau mengontrol hasil pembuatan

Respons

code
integer
Kode status respons, bernilai 200 jika berhasil
data
array
Array data yang dikembalikan

Skenario Penggunaan

Skenario 1: Mengganti detik ke-10 hingga ke-20 dengan versi piano

{
  "model": "flowmusic",
  "clip_id": "abc123-def456",
  "start_s": 10,
  "end_s": 20,
  "instruction": "Ganti dengan versi piano"
}
Memeriksa hasil tugasPenggantian segmen adalah tugas asinkron; setelah diajukan, task_id akan dikembalikan. Gunakan endpoint Mendapatkan Status Tugas untuk memeriksa progres dan hasil pembuatan. Hasil penggantian adalah clip_id yang baru (seluruh lagu dikeluarkan ulang dengan rentang yang ditentukan sudah diganti); gunakan clip_id baru untuk operasi berikutnya.

Contoh Hasil Tugas Selesai

Contoh respons kueri (GET /v1/music/tasks/{task_id}):
{
  "code": 200,
  "data": {
    "id": "task_01KWXVHGTG5JM33S8FG1K90YQ6",
    "status": "completed",
    "progress": 100,
    "created": 1783413392,
    "completed": 1783413454,
    "actual_time": 62,
    "cost": 0.048,
    "credits_cost": 0.48,
    "result": {
      "music": [
        {
          "clip_id": "9508d1fe-633e-464b-8a40-c6368e5464fa",
          "title": "Untitled (Replaced)",
          "duration_seconds": "181.58933333",
          "create_time": "2026-07-07T08:37:13.864452Z",
          "lyrics": "[Verse 1]\nWaking up to the morning light,\n...",
          "lyrics_id": "c302d603-81b6-552f-8122-e512928d6aa1",
          "lyrics_timing_markers": [[10, 12], [71, 15]],
          "audio_url": "https://cdn.apimart.ai/audio/flowmusic_9508d1fe.m4a",
          "wav_url": "https://cdn.apimart.ai/audio/flowmusic_9508d1fe.wav",
          "image_url": "https://cdn.apimart.ai/image/flowmusic_9508d1fe_cover.jpg"
        }
      ]
    }
  }
}