مرجع API
Suno شخصيات
Create a reusable persona from a track's reference vocals.
01
نظرة عامة
استخدم نقطة نهاية الشخصيات واقرأ النتيجة من الاستجابة ذاتها.
البدء السريع
- أنشئ مفتاح API واضبطه كـ RUNAPI_API_KEY.
- أرسل طلب POST يطابق نص الطلب مخطط الطلب.
- اقرأ النتيجة من جسم الاستجابة الناجحة.
نقطة النهاية
- عنوان URL الأساسي
https://runapi.ai- إصدار API
v1- المصادقة
Authorization: Bearer YOUR_API_TOKEN
02
النماذج المدعومة
افتح صفحة النموذج للاطلاع على التسعير الحالي وحدود المعدل وتفاصيل الاستخدام التجاري.
03
نص JSONمخطط الطلب
أرسل الحقول المُعلنة لهذا الطرف فقط.
جسم الطلب4 حقل
descriptionstring
مطلوب
وصف الشخصية.
namestring
مطلوب
اسم الشخصية.
source_audio_idstring
مطلوب
معرّف الصوت ضمن المهمة Task المصدر التي تحمل الأصوات المرجعية.
source_task_idstring
مطلوب
معرّف Task في RunAPI الذي أنتج الصوت المرجعي.
04
HTTP 200استجابة النجاح
POST /api/v1/personas
مخطط الاستجابة
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
}
مثال على الاستجابة
JSON
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"persona": {
"description": "A warm and expressive vocal character.",
"id": "persona_reference",
"name": "Studio Voice"
}
}
05
HTTP 401الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "Authentication required"
}
06
HTTP 400الأخطاء
POST /api/v1/personas
مخطط الاستجابة
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": "Validation failed",
"errors": {
"source_task_id": [
"is required"
]
}
}
07
HTTP 402الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "Insufficient balance"
}
08
HTTP 429الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "API key credit limit exceeded"
}
09
HTTP 409الأخطاء
POST /api/v1/personas
مخطط الاستجابة
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"
}
10
HTTP 429الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "Rate limit reached. Please retry later."
}
11
HTTP 503الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "Service under maintenance, please try again later"
}
12
HTTP 504الأخطاء
POST /api/v1/personas
مخطط الاستجابة
JSON
{
"properties": {
"error": {
"description": "رسالة خطأ قابلة للقراءة البشرية.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
مثال على الاستجابة
JSON
{
"error": "The request timed out"
}
13
نماذج الأكواد المولَّدة
استخدم cURL مباشرةً، أو ثبّت SDK للغة البرمجة التي تستخدمها. كل نموذج يُرسل الطلب الذي تم التحقق من صحته كما هو موضح في هذا المرجع.
التثبيت
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."
)