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

Suno 매시업 생성

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

01

개요

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

빠른 시작

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

엔드포인트

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

지원 모델

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

03

요청 스키마

JSON 본문

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

suno-v4필드 14개
audio_weightnumber
선택

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

범위: 0 - 1
suno-v4.5필드 14개
audio_weightnumber
선택

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

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

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

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

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

범위: 0 - 1
suno-v5필드 14개
audio_weightnumber
선택

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

범위: 0 - 1
suno-v5.5필드 14개
audio_weightnumber
선택

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

범위: 0 - 1
callback_urlstring
선택

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

lyricsstring
선택

노래할 정확한 매시업 가사.

제한: 5000
modelstring
필수

모델 슬러그.

persona_idstring
선택

페르소나 ID.

persona_typestring
선택

페르소나 유형.

허용 값: style, voice
promptstring
선택

자동 가사를 위한 매시업 브리프.

제한: 5000
stylestring
선택

음악 스타일.

제한: 1000
style_weightnumber
선택

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

범위: 0 - 1
titlestring
선택

음악 제목.

제한: 80
upload_url_listarray
필수

매시업할 두 오디오 URL.

항목 범위: 2 - 2
vocal_genderstring
선택

보컬 성별.

허용 값: male, female
vocal_modestring
필수

보컬 생성 모드.

허용 값: auto_lyrics, exact_lyrics, instrumental
weirdness_constraintnumber
선택

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

범위: 0 - 1

조건부 규칙

이 요구 사항은 나열된 모든 조건이 일치할 때 적용됩니다.

  1. 다음의 경우 vocal_mode = auto_lyrics
    필수
    prompt
    허용되지 않음
    lyrics, style, title
  2. 다음의 경우 vocal_mode = exact_lyrics
    필수
    lyrics, style, title
    허용되지 않음
    prompt
  3. 다음의 경우 vocal_mode = instrumental
    필수
    style, title
    허용되지 않음
    prompt, lyrics
04

수락 만들기

HTTP 202

POST /api/v1/suno/create_mashup

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

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

응답 예시

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

오류

HTTP 401

GET /api/v1/suno/create_mashup/:id

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

응답 예시

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

오류

HTTP 400

POST /api/v1/suno/create_mashup

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

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

응답 예시

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

오류

HTTP 429

POST /api/v1/suno/create_mashup

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

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

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

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

응답 스키마
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/create_mashup/: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.create_mashup.create(
  model="suno-v5",
  upload_url_list=["https://cdn.runapi.ai/public/samples/music.mp3", "https://cdn.runapi.ai/public/samples/audio-2.mp3"],
  vocal_mode="auto_lyrics",
  prompt="Blend both tracks into an energetic pop mashup.",
  persona_id="persona_reference",
  persona_type="style"
)