본문으로 건너뛰기
API 레퍼런스
API 레퍼런스

Suno 음악 연장

extend music 엔드포인트를 사용하여 비동기 Task를 생성하세요.

01

개요

지원되는 모델로 extend music 엔드포인트를 사용하세요. 반환된 Task ID를 사용하여 상태를 조회하거나, 아래에 설명된 전달을 위해 callback_url을 제공하세요.

빠른 시작

  1. API 키를 만들고 RUNAPI_API_KEY로 설정합니다.
  2. 지원되는 모델을 선택하고 해당 모델의 스키마와 일치하는 본문으로 POST 요청을 전송합니다.
  3. 반환된 작업 ID를 저장한 후, 터미널 상태가 될 때까지 폴링하거나 아래에 문서화된 콜백을 처리하세요.

엔드포인트

POST /api/v1/suno/extend_music
Base URL
https://runapi.ai
API 버전
v1
인증
Authorization: Bearer YOUR_API_TOKEN
02

지원 모델

현재 가격, 속도 제한 및 상업적 이용 세부 정보는 모델 페이지를 여십시오.

03

요청 스키마

JSON 본문

필드와 허용 값은 선택된 모델에 따라 다릅니다. 제공된 경우 callback_url은 아래에 문서화된 Task 전달을 수신합니다.

suno-v4필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
suno-v4.5필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
suno-v4.5-all필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
suno-v4.5-plus필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
suno-v5필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
suno-v5.5필드 20개
audio_idstring
선택

확장할 소스 오디오 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_urlstring
선택

확장할 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

audio_weightnumber
선택

오디오 가중치 (0-1).

범위: 0 - 1
callback_urlstring
선택

비동기 알림을 위한 웹훅 URL.

continue_atnumber
선택

계속할 소스의 시작 시점(초). 커스텀 파라미터 모드에서 필수입니다.

instrumentalboolean
선택

true이면 보컬 없이 생성합니다.

lyricsstring
선택

정확한 가사. 커스텀 파라미터 모드에서 업로드된 오디오를 확장할 때만 허용됩니다.

제한: 5000
modelstring
필수

모델 슬러그.

negative_tagsstring
선택

피해야 할 스타일.

parameter_modestring
필수

소스 트랙의 파라미터를 상속하거나(source) 사용자 정의 파라미터를 제공합니다(custom).

허용 값: source, custom
persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

확장 개요. lyrics와 함께 사용할 수 없습니다.

제한: 5000
stylestring
선택

스타일 프리셋. 커스텀 파라미터 모드에서 필수입니다.

제한: 1000
style_weightnumber
선택

스타일 준수 가중치 (0-1).

범위: 0 - 1
task_idstring
선택

확장할 소스 태스크 ID. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

titlestring
선택

노래 제목. 커스텀 파라미터 모드에서 필수입니다.

제한: 80
upload_urlstring
선택

확장할 업로드된 소스 오디오 URL. task_id, audio_id, audio_url, upload_url 중 하나를 제공하세요.

vocal_genderstring
선택

보컬 성별.

허용 값: male, female
weirdness_constraintnumber
선택

기이함 제약 조건 (0-1).

범위: 0 - 1
04

수락 만들기

HTTP 202

POST /api/v1/suno/extend_music

응답 스키마
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/extend_music/:id

응답 스키마
JSON
{
  "properties": {
    "audios": {
      "items": {
        "properties": {
          "audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "duration": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "image_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "lyrics": {
            "type": "string"
          },
          "model_name": {
            "type": "string"
          },
          "stream_audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "unevaluatedProperties": false
      },
      "type": "array"
    },
    "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
    },
    "generation_stage": {
      "enum": [
        "text_generated",
        "first_audio_ready"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

폴링 완료

HTTP 200

GET /api/v1/suno/extend_music/:id

응답 스키마
JSON
{
  "properties": {
    "audios": {
      "items": {
        "properties": {
          "audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "duration": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "image_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "lyrics": {
            "type": "string"
          },
          "model_name": {
            "type": "string"
          },
          "stream_audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "unevaluatedProperties": false
      },
      "type": "array"
    },
    "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
    },
    "generation_stage": {
      "enum": [
        "text_generated",
        "first_audio_ready",
        "all_audios_ready",
        "failed"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "audios",
    "billing"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

JSON
{
  "audios": [
    {
      "audio_url": "https://file.runapi.ai/reference-audio.mp3",
      "id": "audio_reference"
    }
  ],
  "billing": {
    "refund": null,
    "reservation": null,
    "settlement": null
  },
  "id": "tsk_reference_demo",
  "status": "completed"
}
07

폴링 실패

HTTP 200

GET /api/v1/suno/extend_music/:id

응답 스키마
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

응답 스키마
JSON
{
  "properties": {
    "audios": {
      "items": {
        "properties": {
          "audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "duration": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "image_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "lyrics": {
            "type": "string"
          },
          "model_name": {
            "type": "string"
          },
          "stream_audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "unevaluatedProperties": false
      },
      "type": "array"
    },
    "generation_stage": {
      "enum": [
        "text_generated",
        "first_audio_ready"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "processing"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

JSON
{
  "generation_stage": "text_generated",
  "id": "tsk_reference_demo",
  "status": "processing"
}
09

고객 콜백: 완료됨

HTTP 200

POST callback_url

응답 스키마
JSON
{
  "properties": {
    "audios": {
      "items": {
        "properties": {
          "audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "duration": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "image_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "lyrics": {
            "type": "string"
          },
          "model_name": {
            "type": "string"
          },
          "stream_audio_url": {
            "type": "string",
            "x-runapi-generated-media": true
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object",
        "unevaluatedProperties": false
      },
      "type": "array"
    },
    "generation_stage": {
      "enum": [
        "text_generated",
        "first_audio_ready",
        "all_audios_ready",
        "failed"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "completed"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "status",
    "audios"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

JSON
{
  "audios": [
    {
      "audio_url": "https://file.runapi.ai/reference-audio.mp3",
      "id": "audio_reference"
    }
  ],
  "id": "tsk_reference_demo",
  "status": "completed"
}
10

고객 콜백: 실패함

HTTP 200

POST callback_url

응답 스키마
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"
}
11

오류

HTTP 401

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 401

GET /api/v1/suno/extend_music/:id

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 400

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "oneOf": [
    {
      "properties": {
        "error": {
          "description": "사람이 읽을 수 있는 오류 메시지.",
          "type": "string"
        }
      },
      "required": [
        "error"
      ],
      "type": "object",
      "unevaluatedProperties": false
    },
    {
      "properties": {
        "error": {
          "description": "사람이 읽을 수 있는 유효성 검사 요약입니다.",
          "type": "string"
        },
        "errors": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "공개 요청 필드를 키로 하는 유효성 검사 메시지로, 각 필드에 대해 사람이 읽을 수 있는 문자열 배열이 포함됩니다.",
          "type": "object"
        }
      },
      "required": [
        "error",
        "errors"
      ],
      "type": "object",
      "unevaluatedProperties": false
    }
  ]
}

응답 예시

JSON
{
  "error": "model must be one of: suno-v4, suno-v4.5, suno-v4.5-all, suno-v4.5-plus, suno-v5, suno-v5.5"
}
14

오류

HTTP 402

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 429

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 409

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 429

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 503

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 504

POST /api/v1/suno/extend_music

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

오류

HTTP 404

GET /api/v1/suno/extend_music/:id

응답 스키마
JSON
{
  "properties": {
    "error": {
      "description": "사람이 읽을 수 있는 오류 메시지.",
      "type": "string"
    }
  },
  "required": [
    "error"
  ],
  "type": "object",
  "unevaluatedProperties": false
}

응답 예시

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

생성된 코드 샘플

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.extend_music.create(
  model="suno-v5",
  upload_url="https://cdn.runapi.ai/public/samples/music.mp3",
  parameter_mode="custom",
  instrumental=False,
  prompt="Continue the arrangement with a brighter chorus.",
  style="Acoustic pop with warm piano.",
  title="Brighter Chorus",
  continue_at=60,
  persona_id="persona_reference",
  persona_type="style"
)