跳到正文
API 参考
API 参考

Suno Separate-Audio-Stems

以异步 Task 提交Separate Audio Stems请求。

01

概览

使用必填输入提交Separate Audio Stems请求。使用返回的 Task ID 查询状态,或提供 callback_url 接收下方列出的投递。

快速开始

  1. 创建 API Key,并将其设置为 RUNAPI_API_KEY。
  2. 发送与请求 Schema 匹配的 POST 请求。
  3. 保存返回的任务 ID,随后轮询到终态,或处理下方列出的回调。

端点

POST /api/v1/suno/separate_audio_stems
基础 URL
https://runapi.ai
API 版本
v1
身份验证
Authorization: Bearer YOUR_API_TOKEN
02

支持的模型

打开模型页可查看当前价格、限流和商业使用详情。

03

请求 Schema

JSON 请求体

只发送文档列出的字段。提供 callback_url 后,它会收到下方列出的 Task 投递。

请求体5 个字段
audio_idstring
必填

Audio ID within the source task.

callback_urlstring
可选

Webhook URL for async notifications.

stem_namestring
可选

Target stem for advanced separation. Required when type is split_stem_advanced.

可选值: Lead Vocal, Drum Kit, Kick, Snare, Risers, Bass, Backing Vocals, Piano, Electric Guitar, Percussion, String Section, Synth, Acoustic Guitar, Sound Effects, Synth Pad, Synth Bass, Guitar, Brass Section, Organ, Electronic Drum Kit, Lead Electric Guitar, Synth Keys, Rhythm Electric Guitar, Electric Piano, Upright Bass, Keyboards, Distorted Electric Guitar, Synth Strings, Synth Lead, Woodwinds, Rhythm Acoustic Guitar, Flute, Harp, Tambourine, Trumpet, Arpeggiator, Accordion, Fiddle, Pedal Steel Guitar, Synth Voice, Violin, Digital Piano, Synth Brass, Mandolin, Choir, Banjo, Bells, Clarinet, Tenor Saxophone, Trombone, Shaker, French Horn, Glockenspiel, Electric Bass, Cello, Timpani, Harmonica, Marimba, Vibraphone, Lap Steel Guitar, Saxophone, Orchestra, Horns, Cymbals, Hand Clap, Oboe, Celesta, Congas, Drone, Alto Saxophone, Double Bass, Ukulele, Harpsichord, Baritone Saxophone, Xylophone, Tuba, Bass Guitar, Whistle, Lead Guitar, Rhodes, 808, Bongos, Bassoon, Cowbell, Viola, Sitar, Steel Drums, Piccolo, Theremin, Bagpipes, Hi-Hat, Music Box, Melodica, Tabla, Koto, Djembe, Taiko, Didgeridoo
task_idstring
必填

Source task ID.

typestring
可选

Stem separation mode.

可选值: separate_vocal, split_stem, split_stem_advanced 默认值: separate_vocal

条件规则

当列出的全部条件同时匹配时,应用这些要求。

  1. type = split_stem_advanced
    必填
    stem_name
    不可提供
04

创建已接受

HTTP 202

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    },
    "task_replayed": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "status",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
05

轮询处理中

HTTP 200

GET /api/v1/suno/separate_audio_stems/:id

响应 Schema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "separated_audios": {
      "properties": {
        "backing_vocals_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "bass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "brass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "drums_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "fx_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "guitar_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "instrumental_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "keyboard_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "pairs": {
          "items": {
            "properties": {
              "extracted_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "remaining_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "stem_name": {
                "type": "string"
              }
            },
            "required": [
              "stem_name",
              "extracted_audio",
              "remaining_audio"
            ],
            "type": "object",
            "unevaluatedProperties": false
          },
          "type": "array"
        },
        "percussion_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "piano_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "strings_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "synth_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "vocal_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "woodwinds_url": {
          "type": "string",
          "x-runapi-generated-media": true
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "processing"
}
06

轮询已完成

HTTP 200

GET /api/v1/suno/separate_audio_stems/:id

响应 Schema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "id": {
      "type": "string"
    },
    "separated_audios": {
      "properties": {
        "backing_vocals_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "bass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "brass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "drums_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "fx_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "guitar_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "instrumental_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "keyboard_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "pairs": {
          "items": {
            "properties": {
              "extracted_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "remaining_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "stem_name": {
                "type": "string"
              }
            },
            "required": [
              "stem_name",
              "extracted_audio",
              "remaining_audio"
            ],
            "type": "object",
            "unevaluatedProperties": false
          },
          "type": "array"
        },
        "percussion_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "piano_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "strings_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "synth_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "vocal_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "woodwinds_url": {
          "type": "string",
          "x-runapi-generated-media": true
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "separated_audios",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "separated_audios": {
    "instrumental_url": "https://file.runapi.ai/reference-instrumental.mp3",
    "vocal_url": "https://file.runapi.ai/reference-vocals.mp3"
  },
  "status": "completed"
}
07

轮询失败

HTTP 200

GET /api/v1/suno/separate_audio_stems/:id

响应 Schema
JSON
{
  "properties": {
    "billing": {
      "properties": {
        "refund": {
          "oneOf": [
            {
              "properties": {
                "refunded_at": {
                  "type": "string"
                }
              },
              "required": [
                "refunded_at"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "reservation": {
          "oneOf": [
            {
              "properties": {
                "amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "amount_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        },
        "settlement": {
          "oneOf": [
            {
              "properties": {
                "amount_micro_cents": {
                  "type": "integer"
                },
                "charged_amount_cents": {
                  "type": "integer"
                }
              },
              "required": [
                "charged_amount_cents",
                "amount_micro_cents"
              ],
              "type": "object",
              "unevaluatedProperties": false
            },
            {
              "enum": [
                null
              ]
            }
          ]
        }
      },
      "required": [
        "reservation",
        "settlement",
        "refund"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    "error": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "failed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "error",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "error": "Task processing failed.",
  "id": "tsk_reference_demo",
  "status": "failed"
}
08

客户回调:已完成

HTTP 200

POST callback_url

响应 Schema
JSON
{
  "properties": {
    "id": {
      "type": "string"
    },
    "separated_audios": {
      "properties": {
        "backing_vocals_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "bass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "brass_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "drums_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "fx_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "guitar_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "instrumental_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "keyboard_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "pairs": {
          "items": {
            "properties": {
              "extracted_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "remaining_audio": {
                "properties": {
                  "audio_url": {
                    "type": "string",
                    "x-runapi-generated-media": true
                  },
                  "duration_seconds": {
                    "type": "number"
                  },
                  "id": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "duration_seconds",
                  "audio_url"
                ],
                "type": "object",
                "unevaluatedProperties": false
              },
              "stem_name": {
                "type": "string"
              }
            },
            "required": [
              "stem_name",
              "extracted_audio",
              "remaining_audio"
            ],
            "type": "object",
            "unevaluatedProperties": false
          },
          "type": "array"
        },
        "percussion_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "piano_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "strings_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "synth_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "vocal_url": {
          "type": "string",
          "x-runapi-generated-media": true
        },
        "woodwinds_url": {
          "type": "string",
          "x-runapi-generated-media": true
        }
      },
      "type": "object",
      "unevaluatedProperties": false
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "separated_audios"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "id": "tsk_reference_demo",
  "separated_audios": {
    "instrumental_url": "https://file.runapi.ai/reference-instrumental.mp3",
    "vocal_url": "https://file.runapi.ai/reference-vocals.mp3"
  },
  "status": "completed"
}
09

客户回调:失败

HTTP 200

POST callback_url

响应 Schema
JSON
{
  "properties": {
    "error": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "properties": {
            "code": {
              "type": "string"
            },
            "limit_cents": {
              "type": "integer"
            },
            "message": {
              "type": "string"
            },
            "reset_at": {
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "used_cents": {
              "type": "integer"
            },
            "window": {
              "enum": [
                "1h",
                "1d",
                "7d",
                "daily",
                "weekly",
                "monthly",
                "lifetime"
              ],
              "type": "string"
            }
          },
          "required": [
            "code",
            "message"
          ],
          "type": "object",
          "unevaluatedProperties": false
        }
      ]
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "failed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": {
    "code": "generation_failed",
    "message": "Task processing failed."
  },
  "id": "tsk_reference_demo",
  "status": "failed"
}
10

错误

HTTP 401

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Authentication required"
}
11

错误

HTTP 401

GET /api/v1/suno/separate_audio_stems/:id

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Authentication required"
}
12

错误

HTTP 400

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "oneOf": [
    {
      "properties": {
        "error": {
          "description": "Human-readable error message.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    {
      "properties": {
        "error": {
          "description": "Human-readable validation summary.",
          "type": "string"
        },
        "errors": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Validation messages keyed by public request field, with an array of human-readable strings for each field.",
          "type": "object"
        }
      },
      "required": [
        "error",
        "errors"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  ]
}

响应示例

JSON
{
  "error": "Validation failed",
  "errors": {
    "task_id": [
      "is required"
    ]
  }
}
13

错误

HTTP 402

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Insufficient balance"
}
14

错误

HTTP 429

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "API key credit limit exceeded"
}
15

错误

HTTP 409

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "The request uses features that are not supported for the selected model"
}
16

错误

HTTP 429

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Rate limit reached. Please retry later."
}
17

错误

HTTP 503

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Service under maintenance, please try again later"
}
18

错误

HTTP 504

POST /api/v1/suno/separate_audio_stems

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "The request timed out"
}
19

错误

HTTP 404

GET /api/v1/suno/separate_audio_stems/:id

响应 Schema
JSON
{
  "properties": {
    "error": {
      "description": "Human-readable error message.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

响应示例

JSON
{
  "error": "Task with id 'tsk_reference_demo' not found"
}
20

生成的代码示例

直接使用 cURL,或安装所用语言的 SDK。每个示例都会提交本参考中经过验证的请求。

安装

Shell
pip install runapi-suno
PYTHON
import os
from runapi.suno import SunoClient

client = SunoClient(api_key=os.environ["RUNAPI_API_KEY"])
task = client.separate_audio_stems.create(
  task_id="tsk_source_music",
  audio_id="audio_reference",
  type="separate_vocal"
)