API Referansı
Suno Personalar
Create a reusable persona from a track's reference vocals.
01
Genel Bakış
Personalar uç noktasını kullanın ve sonucu aynı yanıttan okuyun.
Hızlı başlangıç
- Bir API anahtarı oluşturun ve RUNAPI_API_KEY olarak ayarlayın.
- Gövdesi istek şemasıyla eşleşen bir POST isteği gönderin.
- Sonucu başarılı yanıt gövdesinden okuyun.
Uç Nokta
- Temel URL
https://runapi.ai- API sürümü
v1- Kimlik doğrulama
Authorization: Bearer YOUR_API_TOKEN
02
Desteklenen modeller
Güncel fiyatlandırma, hız sınırları ve ticari kullanım ayrıntıları için bir model sayfası açın.
03
JSON gövdesiİstek şeması
Yalnızca bu uç nokta için bildirilen alanları gönderin.
İstek gövdesi4 alan
descriptionstring
Zorunlu
Persona açıklaması.
namestring
Zorunlu
Persona adı.
source_audio_idstring
Zorunlu
Referans vokalleri taşıyan kaynak görev içindeki ses kimliği.
source_task_idstring
Zorunlu
Referans sesi üreten RunAPI Görev Kimliği.
04
HTTP 200Başarılı yanıt
POST /api/v1/personas
Yanıt şeması
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
},
"persona": {
"properties": {
"description": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name",
"description"
],
"type": "object",
"unevaluatedProperties": false
}
},
"required": [
"persona",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"persona": {
"description": "A warm and expressive vocal character.",
"id": "persona_reference",
"name": "Studio Voice"
}
}
05
HTTP 401Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "Authentication required"
}
06
HTTP 400Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"oneOf": [
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
},
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir doğrulama özeti.",
"type": "string"
},
"errors": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Herkese açık istek alanına göre anahtarlanan doğrulama mesajları; her alan için insan tarafından okunabilir dizelerden oluşan bir dizi içerir.",
"type": "object"
}
},
"required": [
"error",
"errors"
],
"type": "object",
"unevaluatedProperties": false
}
]
}
Yanıt örneği
JSON
{
"error": "Validation failed",
"errors": {
"source_task_id": [
"is required"
]
}
}
07
HTTP 402Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "Insufficient balance"
}
08
HTTP 429Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "API key credit limit exceeded"
}
09
HTTP 409Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "The request uses features that are not supported for the selected model"
}
10
HTTP 429Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "Rate limit reached. Please retry later."
}
11
HTTP 503Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "Service under maintenance, please try again later"
}
12
HTTP 504Hatalar
POST /api/v1/personas
Yanıt şeması
JSON
{
"properties": {
"error": {
"description": "İnsan tarafından okunabilir hata mesajı.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Yanıt örneği
JSON
{
"error": "The request timed out"
}
13
Oluşturulan Kod Örnekleri
Doğrudan cURL kullanın veya diliniz için bir SDK yükleyin. Her örnek, bu başvuruda gösterilen doğrulanmış isteği gönderir.
Yükle
Shell
pip install runapi-suno
PYTHON
import os
from runapi.suno import SunoClient
client = SunoClient(api_key=os.environ["RUNAPI_API_KEY"])
result = client.personas.run(
source_task_id="tsk_source_music",
source_audio_id="audio_reference",
name="Studio Voice",
description="A warm and expressive vocal character."
)