واجهة استعلام الأغاني والسجل

آخر تحديث 2026-09-18 · فريق Suno-API

تغطي هذه الصفحة ثلاث نقاط نهاية مجانية للاستعلام:

الإمكانية Method نقطة النهاية
استعلام حالة أغنية ونتيجتها POST /api/music/query
استعلام الأغاني التي أنشأها الحساب الحالي GET /api/music/songs
استعلام المعاملات المحفوظة عند إنشاء الأغنية GET /api/music/songs/:song_id

إذا استخدمت وضع إيصال القبول (accept_mode=async) على نقطة نهاية إنشاء، فإن ما تملكه رقم إيصال لا معرّف أغنية. تابع التقدم عبر GET /api/music/requests/{request_id} ثم عُد إلى نقاط النهاية في هذه الصفحة بعد الحصول على song_id الحقيقي. راجع "وضع إيصال القبول" في واجهة التوليد بالوضع المبسّط.

المصادقة ونطاق البيانات

تستخدم نقاط النهاية الثلاث المفتاح نفسه:

Authorization: Bearer YOUR_API_KEY

سجل الأغاني معزول حسب user_id الذي ينتمي إليه مفتاح API. وعدة مفاتيح أُنشئت تحت الحساب الرئيسي نفسه يمكنها قراءة سجل ذلك الحساب، لكنها لا تستطيع قراءة أغاني مستخدم آخر أو حساب موقع فرعي آخر.

لا تُعيد نقاط نهاية السجل إلا الأغاني المُولَّدة فعلاً. وهي لا تشمل:


1. استعلام حالة التوليد

يُستخدم لمعرفة الحالة الحالية والنتيجة النهائية لمعرّف أغنية واحد أو أكثر.

نقطة النهاية: POST /api/music/query

الفوترة: مجاني.

Headers

المعامل النوع مطلوب ملاحظات
Authorization string نعم Bearer YOUR_API_KEY
Content-Type string نعم application/json

معاملات جسم الطلب

المعامل النوع مطلوب القيمة الافتراضية ملاحظات
model string لا suno-v6 إصدار النموذج
song_ids string نعم - معرّفات الأغاني، مفصولة بفواصل

مثال الطلب

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "clip_id_1,clip_id_2"
  }'

مثال الاستجابة

[
  {
    "song_id": "clip_id_1",
    "song_title": "عنوان الأغنية",
    "status": "completed",
    "audio_url": "https://example.com/audio.mp3",
    "video_url": "https://example.com/video.mp4",
    "cover_url": "https://example.com/cover.jpg",
    "lyrics": "نص الكلمات",
    "style_tags": "Mandopop, acoustic",
    "duration": 180.5,
    "model_version": "suno-v6",
    "created_at": "2026-05-21T10:00:00Z"
  }
]

ملاحظات التوافق

قد تعرض الوثائق القديمة song_ids كمصفوفة. والتوصية اليوم هي سلسلة مفصولة بفواصل، وهو ما يطابق طريقة استدعاء نقطة النهاية فعلياً.

يجب أن يحمل song_ids معرّفات أغانٍ حقيقية. فالمعرّف الذي يبدأ بـ pending: ليس song_id نهائياً ولا يمكن استخدامه هنا؛ واستعلام المعرّفات المؤقتة وحدها قد يعيد مصفوفة فارغة [].

قد تحتفظ قيمة model أو model_version أو model_name الخاصة بالمنصة في الاستجابة بقيم تاريخية. وينبغي للمهام الجديدة استخدام suno-v6 أو suno-v6-wild أو suno-v6-mini؛ أما suno-v2 حتى suno-v5-5 فقد أُلغيت، وظهور تلك الأسماء في السجل لا يعني أنه يمكن إرسال النموذج بعد الآن.

ما دامت المهمة في حالة pending أو submitted أو processing فقد تكون audio_url و video_url و cover_url فارغة — وهذا طبيعي لمهمة لم تكتمل. لا تستنتج الفشل من فراغ العنوان وحده؛ اعتمد على status وأعد الاستعلام بعد اكتمال الحالة. وفقط عندما تكتمل الحالة وتبقى العناوين فارغة، يُستحسن التواصل مع الدعم مع إرفاق song_id.

⚠️ عناوين الملفات الصوتية تعيش 7 أيام — انقل ملفاتك في الوقت المناسب

audio_url و video_url (وأي عناوين وسائط أخرى مثل WAV) التي تُعيدها هذه النقطة تُقدَّم من التخزين الكائني للمنصة وتنتهي صلاحيتها افتراضياً بعد 7 أيام: تُعاد الملفات للتخزين الدوري ويعيد العنوان القديم 404.

  • خلال هذه الأيام السبعة انقل الملفات إلى مخزنك الخاص؛ ولا تعتبر العنوان رابطاً طويل الأجل.
  • العنوان المنتهي لا يحتاج إلى إعادة توليد الأغنية ولا يُحاسَب عليه مرة أخرى: استدعِ هذه النقطة (POST /api/music/query) مرة أخرى للحصول على عنوان جديد صالح لتلك الأغنية.

2. استعلام سجل أغاني الحساب

يسرد الأغاني التي أنشأها الحساب الرئيسي الذي ينتمي إليه مفتاح API الحالي. مناسب لبناء قائمة أغانيك أو منتقي أو صفحة سجل خاصة بك.

نقطة النهاية: GET /api/music/songs

الفوترة: مجاني.

معاملات الاستعلام

المعامل النوع مطلوب القيمة الافتراضية ملاحظات
p integer لا 1 رقم الصفحة، يبدأ من 1
page_size integer لا 20 عدد العناصر في الصفحة، بحد أقصى 100
q string لا - بحث تقريبي بالعنوان، أو بحث دقيق بمعرّف الأغنية الكامل
status string لا - تصفية دقيقة بالحالة، مثل completed و playable

تُرتَّب النتائج تنازلياً حسب created_at ثم معرّف السجل الداخلي، بحيث يبقى ترتيب الصفحات مستقراً.

طريقة العثور على إرسال انتهت مهلته: نقاط نهاية التوليد لا تُصدر استجابة وسيطة قبل القبول. فإذا انتهت مهلة عميلك أو انقطع الاتصال أثناء الإرسال، فقد يكون الطلب قد قُبل وهو قيد التوليد. ألقِ نظرة على هذه النقطة (الأحدث أولاً): الأغاني المقبولة تظهر في القائمة بشكل طبيعي. ولا تُعد الإرسال إلا بعد التأكد من غيابها فعلاً، حتى لا تدفع مرتين. راجع "أوقات الانتظار وإعدادات المهلة" في نظرة عامة على الواجهة الجديدة.

مثال الطلب

curl "https://www.suno-api.io/api/music/songs?p=1&page_size=20&status=completed" \
  -H "Authorization: Bearer YOUR_API_KEY"

مثال الاستجابة

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 42,
    "items": [
      {
        "song_id": "8e31b3c0-example-song-id",
        "title": "مدينة في الليل",
        "status": "completed",
        "generation_type": "custom_generate",
        "model": "suno-v6",
        "duration": 187.42,
        "audio_url": "https://example.com/audio.mp3",
        "image_url": "https://example.com/cover.jpg",
        "created_at": 1784000000,
        "completed_at": 1784000120
      }
    ]
  }
}

حقول الاستجابة

الحقل النوع ملاحظات
song_id string معرّف الأغنية الحقيقي، ويمكن استخدامه لاستعلام التفاصيل
title string العنوان الحالي، وقد يكون المستخدم قد غيّره
status string الحالة الحالية
generation_type string نوع التوليد
model string نموذج التوليد
duration number مدة الصوت بالثواني
audio_url string عنوان الصوت؛ قد يكون فارغاً قبل الاكتمال
image_url string عنوان صورة الغلاف؛ قد يكون فارغاً
created_at integer وقت الإنشاء، طابع زمني Unix بالثواني
completed_at integer وقت الاكتمال، طابع زمني Unix بالثواني؛ قد لا يُعاد قبل الاكتمال

لا تُعيد نقطة القائمة البرومبتات ولا حقول الفوترة ولا معلومات الحساب ولا الاستجابات الخام. وللحصول على البرومبتات ومعاملات التوليد، استدعِ نقطة تفاصيل الأغنية.


3. استعلام معاملات التوليد

يبحث عن البرومبت والأسلوب والنموذج والأغنية المصدر التي حفظتها المنصة عند توليد الأغنية.

نقطة النهاية: GET /api/music/songs/:song_id

الفوترة: مجاني.

لا يمكن قراءة إلا أغاني الحساب الرئيسي الذي ينتمي إليه مفتاح API الحالي. أما أغاني المستخدمين الآخرين أو حسابات المواقع الفرعية فتُعامَل دائماً على أنها "الأغنية غير موجودة".

معامل المسار

المعامل النوع مطلوب ملاحظات
song_id string نعم معرّف الأغنية الحقيقي

مثال الطلب

curl "https://www.suno-api.io/api/music/songs/8e31b3c0-example-song-id" \
  -H "Authorization: Bearer YOUR_API_KEY"

مثال الاستجابة

{
  "success": true,
  "message": "",
  "data": {
    "song_id": "8e31b3c0-example-song-id",
    "title": "مدينة في الليل",
    "status": "completed",
    "generation_type": "custom_generate",
    "model": "suno-v6",
    "duration": 187.42,
    "audio_url": "https://example.com/audio.mp3",
    "image_url": "https://example.com/cover.jpg",
    "video_url": "",
    "wav_url": "",
    "created_at": 1784000000,
    "completed_at": 1784000120,
    "client_request_id": "example-request-id",
    "client_request_index": 0,
    "parameters": {
      "prompt": "شوارع مدينة بعد المطر، كلمات عن لقاء من جديد",
      "style_tags": "Mandopop, acoustic, warm vocal",
      "title": "مدينة في الليل",
      "model": "suno-v6",
      "generation_type": "custom_generate",
      "source_song_id": "",
      "source_audio_url": "",
      "custom_mode": null,
      "instrumental": null,
      "negative_tags": null,
      "vocal_gender": null,
      "lyrics_mode": null,
      "wait_audio": null,
      "style_weight": null,
      "weirdness_constraint": null
    },
    "parameter_retention": {
      "core_parameters_available": true,
      "extended_parameters_available": false,
      "sources": [
        "suno_tasks"
      ],
      "unavailable_fields": [
        "custom_mode",
        "instrumental",
        "negative_tags",
        "vocal_gender",
        "lyrics_mode",
        "wait_audio",
        "style_weight",
        "weirdness_constraint"
      ]
    }
  }
}

حقول parameters

الحقل النوع ملاحظات
prompt string برومبت التوليد أو الكلمات
style_tags string وسوم الأسلوب
title string عنوان التوليد المحفوظ؛ وقد تحتفظ مهمة تاريخية عادية بالعنوان الحالي فقط
model string نموذج التوليد
generation_type string نوع التوليد
source_song_id string معرّف الأغنية المصدر لمهام الكوفر والتمديد وما شابه
source_audio_url string عنوان الصوت المصدر
custom_mode boolean/null هل استُخدم الوضع المخصص؛ null عندما لا يكون محفوظاً
instrumental boolean/null هل الأغنية موسيقية بلا غناء؛ البيانات التاريخية الموجودة لا تحفظ هذا عادة بشكل منفصل
negative_tags string/null الأساليب المستبعدة
vocal_gender string/null إعداد جنس الغناء
lyrics_mode string/null وضع الكلمات؛ البيانات التاريخية الموجودة لا تحفظه عادة
wait_audio boolean/null هل انتظر الصوت الكامل؛ البيانات التاريخية الموجودة لا تحفظه عادة
style_weight number/null وزن الأسلوب
weirdness_constraint number/null معامل الإبداع/الغرابة

حقل prompt_view (عرض البرومبت، أُضيف في 2026-09-28)

prompt_view بنية مُوحَّدة مخصّصة لعرض البرومبت: تنظّم البيانات في أقسام ثابتة حسب نوع التوليد، فلا يحتاج العميل إلى تحديد أي حقل يعرضه. وهو حقل إضافي بحت — الحقول القديمة (parameters و parameter_retention) تحتفظ بالاسم والمعنى، والعملاء الذين لا يحلّلون الحقل الجديد لا يتأثرون إطلاقاً.

"prompt_view": {
  "type": "custom_generate",
  "type_label": "الوضع المتقدم",
  "generation": {
    "model": "suno-v6", "max_mode": false, "duration": 182.4,
    "title": "الرابعة فجراً#701f37", "title_base": "الرابعة فجراً", "title_suffix": "701f37",
    "created_at": 1790421721
  },
  "inputs": {
    "user_text": "…", "user_text_kind": "lyrics",
    "user_style": "إلكتروني غوتشاو، بيس عميق، سينث رجعي",
    "style_tags": "إلكتروني غوتشاو، بيس عميق، سينث رجعي",
    "style_source": "user", "lyrics": "…",
    "negative_tags": "", "is_instrumental": false
  },
  "extended": {
    "vocal_gender": "m", "style_weight": 0.5, "audio_weight": 0.85,
    "weirdness_constraint": 0.5, "variety": 2, "lyrics_mode": "manual",
    "custom_mode": true
  },
  "reference": { "voice_name": "sv_40_34", "source_song_id": "", "source_title": "" },
  "retention": {
    "recorded_since": "2026-09-28", "missing_reason": "",
    "not_applicable_fields": ["audio_weight"]
  }
}
الحقل النوع ملاحظات
type / type_label string نوع التوليد الخام / التسمية المعروضة (توليد مبسّط، الوضع المتقدم، وضع المؤثرات الصوتية، توليد بصوت مستنسخ…)
generation.model string النموذج المستخدم
generation.max_mode bool هل Max Mode مُفعَّل
generation.duration number مدة الصوت بالثواني
generation.title string العنوان كما هو محفوظ (قد يتضمن لاحقة)
generation.title_base string العنوان المعروض بعد حذف اللاحقة #xxxxxx من النهاية
generation.title_suffix string اللاحقة نفسها (بدون #)؛ فارغة عند عدم وجودها
inputs.user_text string إدخال المستخدم (وصف أو كلمات، حسب النوع)
inputs.user_text_kind string lyrics / description / cover_requirements
inputs.user_style string الأسلوب الذي كتبه المستخدم بنفسه (الوضع المتقدم، الصوت، المؤثرات)
inputs.style_tags string الأسلوب الذي طُبِّق فعلاً
inputs.style_source string user = من إدخال المستخدم؛ suno_derived = استنتجه Suno من الوصف
inputs.lyrics string نص الكلمات؛ فارغ عند عدم وجودها، و[Instrumental] للأغنية الموسيقية
inputs.negative_tags string الأساليب المستبعدة
inputs.is_instrumental bool هل الأغنية موسيقية بلا غناء
extended.* — معاملات موسّعة، انظر أدناه؛ الحقول غير المحفوظة لا تظهر
reference.voice_name string اسم الصوت (للأنواع الصوتية فقط؛ ولا يُعاد persona id الداخلي)
reference.source_song_id / source_title string الأغنية المصدر لمهام الكوفر والتمديد وما شابه
retention.recorded_since string تاريخ بدء حفظ المعاملات الموسّعة (2026-09-28)
retention.missing_reason string سبب عدم وجود المعاملات الموسّعة؛ البيانات التاريخية تعطي not_recorded_before_20260928
retention.not_applicable_fields string[] معاملات لم يكن نوع التوليد هذا يحتاجها أصلاً (لا تعرضها كـ"معاملات مفقودة")

الحقول التي قد تظهر في extended: vocal_gender و style_weight و audio_weight و weirdness_constraint و variety و lyrics_mode و custom_mode، إضافة إلى مجموعة المؤثرات الصوتية sound_type / sound_bpm / sound_key / sound_loop. ولا تُعاد القيم الفارغة إطلاقاً.

ثلاث قواعد للعرض (اتبعها بدل التخمين):

  1. ميِّز مصدر الأسلوب: عند style_source=suno_derived اعرضه كـ "أسلوب (استنتجه Suno من وصفك)"، ولا تكتب "أسلوبك"؛
  2. البرومبتات الداخلية لا تظهر أبداً: أنواع الكوفر الصوتي لا تُعيد إلا 【متطلبات الأسلوب】/【متطلبات الكوفر】 التي كتبها المستخدم؛ والبنية الثابتة التي نجمعها للنموذج لا تظهر في أي حقل (والبيانات التاريخية مُنقّاة بالطريقة ذاتها)؛
  3. لا تخمّن المعاملات المحفوظة: إن لم تكن في extended فلم تُسجَّل حينها — استخدم retention لتفسير السبب.

ملاحظات حفظ المعاملات

يفصل parameter_retention بين "تمرير قيمة فارغة صراحةً" و"عدم حفظ الحقل تاريخياً":

الأغاني التاريخية العادية حفظت عادة البرومبت والأسلوب والعنوان الحالي والنموذج ونوع التوليد والأغنية المصدر، لكنها لم تحفظ كل المعاملات المتقدمة بشكل منفصل. ولا تخمّن المنصة القيم المفقودة من generation_type أبداً.

بعض مهام الموسيقى الموسّعة حفظت أيضاً البرومبت الأصلي والأسلوب والعنوان والنموذج، إضافة إلى custom_mode و negative_tags و vocal_gender و style_weight و weirdness_constraint. وحتى مع وجود سجل موسّع، قد تبقى instrumental و lyrics_mode و wait_audio غير قابلة للاسترجاع.

يمكن للمستخدم إعادة تسمية الأغاني لاحقاً. وعندما لا تحفظ مهمة تاريخية عادية عنواناً أصلياً منفصلاً، فقد يكون parameters.title هو العنوان الحالي؛ وعند وجود سجل مهمة موسّعة يُعطى الأولوية لعنوان التوليد الأصلي المحفوظ فيه.

غير موجودة أو بلا صلاحية

تستخدم أخطاء العمل مغلف استجابة موحّداً. وعندما لا توجد الأغنية أو لا تنتمي إلى الحساب الحالي:

{
  "success": false,
  "message": "song not found"
}

يُعاد خطأ العمل هذا حالياً مع HTTP 200، لذا احكم على النتيجة من الحقل success. أما مفتاح API المفقود أو غير الصالح أو المنتهي أو المُعطَّل فيُعيد HTTP 401.

ملاحظات أمنية

لا تُعيد نقاط نهاية السجل والتفاصيل أبداً:

التاليواجهة الكلمات ذات الطوابع الزمنية

احصل على مفتاح API

أنشئ مفتاح API من لوحة التحكم بعد التسجيل. كل عملية توليد تكلف 0.6 يوان وتعيد مقطوعتين، والتنزيلات غير محدودة، ولا حاجة إلى رقم هاتف.

احصل على مفتاح API العودة إلى النظرة العامة