مرجع REST API
منصة Ultralytics توفر واجهة REST API شاملة للوصول البرمجي إلى مجموعات البيانات والنماذج والتدريب وعمليات النشر.

بدء سريع
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
نظرة عامة على واجهة برمجة التطبيقات
يتم تنظيم واجهة برمجة التطبيقات (API) حول موارد المنصة الأساسية:
graph LR
A[API Key] --> B[Datasets]
A --> C[Projects]
A --> D[Models]
A --> E[Deployments]
B -->|train on| D
C -->|contains| D
D -->|deploy to| E
D -->|export| F[Exports]
B -->|auto-annotate| B
| الموارد | الوصف | العمليات الرئيسية |
|---|---|---|
| مجموعات البيانات | مجموعات الصور الموسومة | CRUD، الصور، التسميات، التصدير، النسخ |
| المشاريع | مساحات عمل التدريب | CRUD، استنساخ، أيقونة |
| النماذج | نقاط التفتيش المدربة | CRUD، التنبؤ، التنزيل، النسخ، التصدير |
| عمليات النشر | نقاط نهاية الاستدلال المخصصة | CRUD، بدء/إيقاف، المقاييس، السجلات، الحالة |
| عمليات التصدير | مهام تحويل التنسيق | إنشاء، الحالة، تنزيل |
| التدريب | وظائف GPU السحابية | بدء، حالة، إلغاء |
| الفواتير | الائتمانات والاشتراكات | الرصيد، إعادة التعبئة، طرق الدفع |
| الفرق | التعاون في مساحة العمل | الأعضاء، الدعوات، الأدوار |
المصادقة
تتطلب معظم طلبات API المصادقة عبر مفتاح API. تدعم نقاط النهاية العامة (قائمة مجموعات البيانات العامة والمشاريع والنماذج) الوصول للقراءة بشكل مجهول دون مفتاح.
الحصول على مفتاح API
- انتقل إلى
Settings>Profile(قسم مفاتيح API) - انقر
Create Key - انسخ المفتاح الذي تم إنشاؤه
راجع مفاتيح API للحصول على تعليمات مفصلة.
رأس التفويض
قم بتضمين مفتاح API الخاص بك في جميع الطلبات:
Authorization: Bearer ul_your_api_key_here
تنسيق مفتاح API
تستخدم مفاتيح API التنسيق ul_ متبوعًا بـ 40 حرفًا سداسيًا عشريًا. حافظ على سرية مفتاحك - لا تقم أبدًا بإدخاله في التحكم في الإصدار أو مشاركته علنًا.
مثال
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
import requests
headers = {"Authorization": "Bearer ul_abc123..."}
response = requests.get(
"https://platform.ultralytics.com/api/datasets",
headers=headers,
)
data = response.json()
const response = await fetch("https://platform.ultralytics.com/api/datasets", {
headers: { Authorization: "Bearer ul_abc123..." },
});
const data = await response.json();
عنوان URL الأساسي
تستخدم جميع نقاط نهاية API:
https://platform.ultralytics.com/api
حدود المعدل
تستخدم واجهة برمجة التطبيقات (API) نظامًا مزدوج الطبقات لتقييد معدل الاستخدام لحماية النظام من إساءة الاستخدام مع الحفاظ على الاستخدام المشروع دون قيود:
- لكل مفتاح API — يتم فرض القيود لكل مفتاح API على الطلبات المصادق عليها
- لكل عنوان IP — 100 طلب/دقيقة لكل عنوان IP على جميع
/api/*المسارات (ينطبق على الطلبات المصادق عليها وغير المصادق عليها)
عند الاختناق، تعيد واجهة برمجة التطبيقات 429 مع إعادة محاولة البيانات الوصفية:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z
وفقًا لحدود مفتاح API
يتم تطبيق حدود المعدل تلقائيًا بناءً على نقطة النهاية التي يتم استدعاؤها. العمليات المكلفة لها حدود أكثر صرامة لمنع إساءة الاستخدام، بينما تشترك عمليات CRUD القياسية في حدود افتراضية سخية:
| نقطة النهاية | الحد الأقصى | ينطبق على |
|---|---|---|
| افتراضي | 100 طلب/دقيقة | جميع نقاط النهاية غير المدرجة أدناه (قائمة، الحصول، الإنشاء، التحديث، الحذف) |
| التدريب | 10 طلبات/دقيقة | بدء وظائف التدريب على السحابة (POST /api/training/start) |
| تحميل | 10 طلبات/دقيقة | تحميل الملفات وعناوين URL الموقعة واستيعاب مجموعات البيانات |
| توقع | 20 طلبًا/دقيقة | استنتاج النموذج المشترك (POST /api/models/{id}/predict) |
| تصدير | 20 طلبًا/دقيقة | تصدير تنسيق النموذج (POST /api/exports) وتصدير مجموعات البيانات NDJSON |
| تنزيل | 30 طلبًا/دقيقة | تنزيل ملفات وزن النموذج (GET /api/models/{id}/download) |
| مخصصة | غير محدود | نقاط نهاية مخصصة — خدمتك الخاصة، بدون قيود على واجهة برمجة التطبيقات |
كل فئة لها عداد مستقل لكل مفتاح API. على سبيل المثال، إجراء 20 طلبًا للتنبؤ لا يؤثر على الحد الافتراضي المسموح به وهو 100 طلب في الدقيقة.
نقاط نهاية مخصصة (غير محدودة)
نقاط نهاية مخصصة هي لا يخضع لحدود معدل مفتاح API. عند نشر نموذج إلى نقطة نهاية مخصصة، فإن الطلبات إلى عنوان URL لنقطة النهاية تلك (على سبيل المثال، https://predict-abc123.run.app/predict) انتقل مباشرة إلى الخدمة المخصصة لك دون أي قيود على السرعة من المنصة. أنت تدفع مقابل الحوسبة، لذا تحصل على إنتاجية غير محدودة تصل إلى تكوين توسيع نطاق نقطة النهاية الخاصة بك.
حدود معدل المعالجة
عندما تتلقى 429 رمز الحالة، انتظر Retry-After (أو حتى X-RateLimit-Reset) قبل إعادة المحاولة. انظر الأسئلة الشائعة حول حدود السرعة لتنفيذ التراجع الأسي.
تنسيق الاستجابة
ردود النجاح
تُرجع الاستجابات JSON مع حقول خاصة بالموارد:
{
"datasets": [...],
"total": 100
}
استجابات الأخطاء
{
"error": "Invalid dataset ID"
}
| حالة HTTP | المعنى |
|---|---|
200 | النجاح |
201 | الإنشاء |
400 | طلب غير صالح |
401 | المصادقة مطلوبة |
403 | أذونات غير كافية |
404 | المورد غير موجود |
409 | الصراع (مكرر) |
429 | تجاوز حد المعدل |
500 | خطأ في الخادم |
واجهة برمجة تطبيقات مجموعات البيانات
إدارة مجموعات الصور الموسومة لتدريب YOLO .
قائمة مجموعات البيانات
GET /api/datasets
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
username | سلسلة نصية | تصفية حسب اسم المستخدم |
slug | سلسلة نصية | جلب مجموعة بيانات واحدة بواسطة slug |
limit | عدد صحيح | العناصر لكل صفحة (الافتراضي: 20، الحد الأقصى: 500) |
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"
import requests
resp = requests.get(
"https://platform.ultralytics.com/api/datasets",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"limit": 10},
)
for ds in resp.json()["datasets"]:
print(f"{ds['name']}: {ds['imageCount']} images")
الاستجابة:
{
"datasets": [
{
"_id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"classNames": ["person", "car"],
"visibility": "private",
"username": "johndoe",
"starCount": 3,
"isStarred": false,
"sampleImages": [
{
"url": "https://storage.example.com/...",
"width": 1920,
"height": 1080,
"labels": [{ "classId": 0, "bbox": [0.5, 0.4, 0.3, 0.6] }]
}
],
"createdAt": "2024-01-15T10:00:00Z",
"updatedAt": "2024-01-16T08:30:00Z"
}
],
"total": 1,
"region": "us"
}
الحصول على مجموعة بيانات
GET /api/datasets/{datasetId}
يعرض تفاصيل مجموعة البيانات الكاملة بما في ذلك البيانات الوصفية وأسماء الفئات وعدد الأقسام.
إنشاء مجموعة بيانات
POST /api/datasets
الجسم:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}
المهام المدعومة
صالح task القيم: detect, segment, classify, pose, obb.
تحديث مجموعة البيانات
PATCH /api/datasets/{datasetId}
النص (تحديث جزئي):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}
حذف مجموعة البيانات
DELETE /api/datasets/{datasetId}
حذف مؤقت لمجموعة البيانات (نقلها إلى سلة المهملات، يمكن استعادتها خلال 30 يومًا).
استنساخ مجموعة البيانات
POST /api/datasets/{datasetId}/clone
ينشئ نسخة من مجموعة البيانات مع جميع الصور والتسميات. لا يمكن استنساخ سوى مجموعات البيانات العامة.
النص (جميع الحقول اختيارية):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}
تصدير مجموعة البيانات
GET /api/datasets/{datasetId}/export
إرجاع استجابة JSON مع عنوان URL للتنزيل الموقع لملف تصدير مجموعة البيانات.
الاستجابة:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}
الحصول على إحصائيات الفصل
GET /api/datasets/{datasetId}/class-stats
يعرض توزيع الفئات، وخريطة الحرارة للموقع، وإحصائيات الأبعاد. يتم تخزين النتائج في ذاكرة التخزين المؤقت لمدة تصل إلى 5 دقائق.
الاستجابة:
{
"classes": [{ "classId": 0, "count": 1500, "imageCount": 450 }],
"imageStats": {
"widthHistogram": [{ "bin": 640, "count": 120 }],
"heightHistogram": [{ "bin": 480, "count": 95 }],
"pointsHistogram": [{ "bin": 4, "count": 200 }]
},
"locationHeatmap": {
"bins": [
[5, 10],
[8, 3]
],
"maxCount": 50
},
"dimensionHeatmap": {
"bins": [
[2, 5],
[3, 1]
],
"maxCount": 12,
"minWidth": 10,
"maxWidth": 1920,
"minHeight": 10,
"maxHeight": 1080
},
"classNames": ["person", "car", "dog"],
"cached": true,
"sampled": false,
"sampleSize": 1000
}
احصل على نماذج مدربة على مجموعة البيانات
GET /api/datasets/{datasetId}/models
تُرجع النماذج التي تم تدريبها باستخدام مجموعة البيانات هذه.
الاستجابة:
{
"models": [
{
"_id": "model_abc123",
"name": "experiment-1",
"slug": "experiment-1",
"status": "completed",
"task": "detect",
"epochs": 100,
"bestEpoch": 87,
"projectId": "project_xyz",
"projectSlug": "my-project",
"projectIconColor": "#3b82f6",
"projectIconLetter": "M",
"username": "johndoe",
"startedAt": "2024-01-14T22:00:00Z",
"completedAt": "2024-01-15T10:00:00Z",
"createdAt": "2024-01-14T21:55:00Z",
"metrics": {
"mAP50": 0.85,
"mAP50-95": 0.72,
"precision": 0.88,
"recall": 0.81
}
}
],
"count": 1
}
التعليق التلقائي على مجموعة البيانات
POST /api/datasets/{datasetId}/predict
قم بتشغيل YOLO على صور مجموعة البيانات لتوليد التعليقات التوضيحية تلقائيًا. يستخدم نموذجًا محددًا للتنبؤ بالعلامات للصور غير المُعلّقة.
الجسم:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
imageHash | سلسلة نصية | نعم | تجزئة الصورة المراد تعليقها |
modelId | سلسلة نصية | لا | معرف النموذج المراد استخدامه للاستدلال |
confidence | عائم | لا | عتبة الثقة (الافتراضية: 0.25) |
iou | عائم | لا | IoU (الافتراضية: 0.45) |
استيعاب مجموعة البيانات
POST /api/datasets/ingest
قم بإنشاء مهمة استيراد مجموعة بيانات لمعالجة ملفات ZIP التي تم تحميلها والتي تحتوي على صور وتسميات.
graph LR
A[Upload ZIP] --> B[POST /api/datasets/ingest]
B --> C[Process ZIP]
C --> D[Extract images]
C --> E[Parse labels]
C --> F[Generate thumbnails]
D & E & F --> G[Dataset ready]
مجموعة بيانات الصور
قائمة الصور
GET /api/datasets/{datasetId}/images
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
split | سلسلة نصية | تصفية حسب التقسيم: train, val, test |
offset | عدد صحيح | إزاحة ترقيم الصفحات (الافتراضي: 0) |
limit | عدد صحيح | العناصر لكل صفحة (الافتراضي: 50، الحد الأقصى: 5000) |
sort | سلسلة نصية | ترتيب الفرز: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc |
hasLabel | سلسلة نصية | تصفية حسب حالة الملصق (true أو false) |
hasError | سلسلة نصية | تصفية حسب حالة الخطأ (true أو false) |
search | سلسلة نصية | البحث حسب اسم الملف أو تجزئة الصورة |
includeThumbnails | سلسلة نصية | تضمين عناوين URL المصغرة الموقعة (الافتراضي: true) |
includeImageUrls | سلسلة نصية | تضمين عناوين URL الكاملة للصور الموقعة (الافتراضي: false) |
الحصول على عناوين URL للصور الموقعة
POST /api/datasets/{datasetId}/images/urls
احصل على عناوين URL موقعة لمجموعة من تجزئات الصور (لعرضها في المتصفح).
حذف الصورة
DELETE /api/datasets/{datasetId}/images/{hash}
الحصول على تسميات الصور
GET /api/datasets/{datasetId}/images/{hash}/labels
يعرض التعليقات التوضيحية وأسماء الفئات لصورة معينة.
تحديث تسميات الصور
PUT /api/datasets/{datasetId}/images/{hash}/labels
الجسم:
{
"labels": [{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] }]
}
تنسيق الإحداثيات
تستخدم المربعات المحددة تنسيق YOLO : [x_center, y_center, width, height] حيث جميع القيم تتراوح بين 0 و 1.
عمليات الصور المجمعة
نقل الصور بين الأقسام (التدريب/التقييم/الاختبار) داخل مجموعة البيانات:
PATCH /api/datasets/{datasetId}/images/bulk
حذف الصور بشكل جماعي:
DELETE /api/datasets/{datasetId}/images/bulk
واجهة برمجة تطبيقات المشاريع
إدارة مساحات عمل التدريب التي تجمع النماذج معًا.
سرد المشاريع
GET /api/projects
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
username | سلسلة نصية | تصفية حسب اسم المستخدم |
limit | عدد صحيح | عدد العناصر في كل صفحة |
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
الحصول على مشروع
GET /api/projects/{projectId}
إنشاء مشروع
POST /api/projects
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
https://platform.ultralytics.com/api/projects
resp = requests.post(
"https://platform.ultralytics.com/api/projects",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"name": "my-project", "slug": "my-project", "description": "Detection experiments"},
)
project_id = resp.json()["projectId"]
تحديث المشروع
PATCH /api/projects/{projectId}
حذف المشروع
DELETE /api/projects/{projectId}
حذف المشروع بشكل مؤقت (نقله إلى سلة المهملات).
مشروع الاستنساخ
POST /api/projects/{projectId}/clone
أيقونة المشروع
تحميل رمز المشروع (نموذج متعدد الأجزاء مع ملف صورة):
POST /api/projects/{projectId}/icon
إزالة رمز المشروع:
DELETE /api/projects/{projectId}/icon
واجهة برمجة تطبيقات النماذج
إدارة نقاط فحص النماذج المدربة ضمن المشاريع.
سرد النماذج
GET /api/models
معلمات الاستعلام:
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
projectId | سلسلة نصية | نعم | رقم المشروع (مطلوب) |
fields | سلسلة نصية | لا | مجموعة الحقول: summary, charts |
ids | سلسلة نصية | لا | معرفات النماذج المفصولة بفواصل |
limit | عدد صحيح | لا | النتائج القصوى (الافتراضي 20، الحد الأقصى 100) |
قائمة النماذج المكتملة
GET /api/models/completed
إرجاع النماذج التي انتهت من التدريب (لاستخدامها في محددات النماذج والنشر).
الحصول على نموذج
GET /api/models/{modelId}
إنشاء نموذج
POST /api/models
نص JSON:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
projectId | سلسلة نصية | نعم | رقم مشروع الهدف |
slug | سلسلة نصية | لا | عنوان URL (أحرف أبجدية رقمية صغيرة/واصلة) |
name | سلسلة نصية | لا | اسم العرض (100 حرف كحد أقصى) |
description | سلسلة نصية | لا | وصف النموذج (1000 حرف كحد أقصى) |
task | سلسلة نصية | لا | نوع المهمة (detect، segment، الوضع، obb classify) |
تحميل ملف النموذج
النموذج .pt يتم التعامل مع تحميل الملفات بشكل منفصل. استخدم واجهة المستخدم الخاصة بالمنصة لسحب ملفات النماذج وإفلاتها في المشروع.
تحديث النموذج
PATCH /api/models/{modelId}
حذف النموذج
DELETE /api/models/{modelId}
تنزيل ملفات النماذج
GET /api/models/{modelId}/files
يعيد عناوين URL موقعة لتنزيل ملفات النموذج.
نموذج النسخ
POST /api/models/{modelId}/clone
انسخ نموذجًا عامًا إلى أحد مشاريعك.
الجسم:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
targetProjectSlug | سلسلة نصية | نعم | عنوان مشروع الوجهة |
modelName | سلسلة نصية | لا | اسم النموذج المستنسخ |
description | سلسلة نصية | لا | وصف النموذج |
owner | سلسلة نصية | لا | اسم المستخدم الخاص بالفريق (لنسخ مساحة العمل) |
تتبع التنزيل
POST /api/models/{modelId}/track-download
تتبع تحليلات تنزيل النماذج.
تشغيل الاستدلال
POST /api/models/{modelId}/predict
نموذج متعدد الأجزاء:
| الحقل | النوع | الوصف |
|---|---|---|
file | ملف | ملف صورة (JPEG، PNG، WebP) |
conf | عائم | عتبة الثقة (الافتراضية: 0.25) |
iou | عائم | IoU (الافتراضية: 0.7) |
imgsz | عدد صحيح | حجم الصورة بالبكسل (الافتراضي: 640) |
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
with open("image.jpg", "rb") as f:
resp = requests.post(
f"https://platform.ultralytics.com/api/models/{model_id}/predict",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"file": f},
data={"conf": 0.5},
)
results = resp.json()["images"][0]["results"]
الاستجابة:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}
احصل على رمز Predict
POST /api/models/{modelId}/predict/token
احصل على رمز قصير الأجل لطلبات التنبؤ المباشرة. يتجاوز الرمز وكيل API للحصول على استنتاجات ذات زمن انتقال أقل من تطبيقات جانب العميل.
نموذج الإحماء
POST /api/models/{modelId}/predict/warmup
قم بتحميل نموذج مسبقًا للحصول على استنتاج أول أسرع. قم باستدعاء هذا قبل تشغيل التنبؤات لتجنب التأخير في الطلب الأولي.
واجهة برمجة تطبيقات التدريب
بدء مهام التدريب السحابي ومراقبتها وإلغاؤها.
graph LR
A[POST /training/start] --> B[Job Created]
B --> C{Training}
C -->|progress| D[GET /models/id/training]
C -->|cancel| E[DELETE /models/id/training]
C -->|complete| F[Model Ready]
F --> G[Deploy or Export]
ابدأ التدريب
POST /api/training/start
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo11n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16
}
}' \
https://platform.ultralytics.com/api/training/start
resp = requests.post(
"https://platform.ultralytics.com/api/training/start",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo11n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16,
},
},
)
GPU
تشمل GPU المتاحة ما يلي rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000، وغيرها. انظر التدريب السحابي للحصول على القائمة الكاملة مع الأسعار.
الحصول على حالة التدريب
GET /api/models/{modelId}/training
إرجاع حالة مهمة التدريب الحالية والمقاييس والتقدم المحرز لنموذج ما.
إلغاء التدريب
DELETE /api/models/{modelId}/training
ينهي تشغيل مثيل الحوسبة ويضع علامة على المهمة على أنها ملغاة.
واجهة برمجة تطبيقات عمليات النشر
إنشاء وإدارة نقاط نهاية استدلال مخصصة.
graph LR
A[Create] --> B[Deploying]
B --> C[Ready]
C -->|stop| D[Stopped]
D -->|start| C
C -->|delete| E[Deleted]
D -->|delete| E
C -->|predict| F[Inference Results]
سرد عمليات النشر
GET /api/deployments
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
modelId | سلسلة نصية | تصفية حسب النموذج |
status | سلسلة نصية | تصفية حسب الحالة |
limit | عدد صحيح | النتائج القصوى (الافتراضي: 20، الحد الأقصى: 100) |
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
إنشاء عملية نشر
POST /api/deployments
الجسم:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
modelId | سلسلة نصية | نعم | معرف النموذج المراد نشره |
name | سلسلة نصية | نعم | اسم النشر |
region | سلسلة نصية | نعم | منطقة النشر |
resources | كائن | لا | تكوين الموارد (cpu، ذاكرة Gi، الحد الأدنى من الحالات، الحد الأقصى من الحالات) |
ينشئ نقطة نهاية استدلال مخصصة في المنطقة المحددة. يمكن الوصول إلى نقطة النهاية عالميًا عبر عنوان URL فريد.
اختيار المنطقة
اختر منطقة قريبة من المستخدمين للحصول على أقل زمن انتقال. تعرض واجهة المستخدم للمنصة تقديرات زمن الانتقال لجميع المناطق الـ 43 المتاحة.
الحصول على عملية نشر
GET /api/deployments/{deploymentId}
حذف عملية النشر
DELETE /api/deployments/{deploymentId}
بدء عملية النشر
POST /api/deployments/{deploymentId}/start
استئناف النشر المتوقف.
إيقاف عملية النشر
POST /api/deployments/{deploymentId}/stop
إيقاف النشر قيد التشغيل مؤقتًا (إيقاف الفوترة).
فحص السلامة
GET /api/deployments/{deploymentId}/health
إرجاع حالة صحة نقطة نهاية النشر.
تشغيل الاستدلال عند النشر
POST /api/deployments/{deploymentId}/predict
إرسال صورة مباشرة إلى نقطة نهاية النشر للاستدلال. وظيفياً، هذا مكافئ لتنبؤ النموذج، ولكن يتم توجيهه عبر نقطة النهاية المخصصة لزمن انتقال أقل.
نموذج متعدد الأجزاء:
| الحقل | النوع | الوصف |
|---|---|---|
file | ملف | ملف صورة (JPEG، PNG، WebP) |
conf | عائم | عتبة الثقة (الافتراضية: 0.25) |
iou | عائم | IoU (الافتراضية: 0.7) |
imgsz | عدد صحيح | حجم الصورة بالبكسل (الافتراضي: 640) |
الحصول على المقاييس
GET /api/deployments/{deploymentId}/metrics
يعرض عدد الطلبات المرتجعة ومقاييس زمن الاستجابة ومعدل الأخطاء مع بيانات sparkline.
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
range | سلسلة نصية | النطاق الزمني: 1h, 6h, 24h (افتراضي)، 7d, 30d |
sparkline | سلسلة نصية | اضبط على true للحصول على بيانات خطية مصغرة محسّنة لعرض لوحة المعلومات |
الحصول على السجلات
GET /api/deployments/{deploymentId}/logs
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
severity | سلسلة نصية | مرشح مفصول بفواصل: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | عدد صحيح | عدد الإدخالات (الافتراضي: 50، الحد الأقصى: 200) |
pageToken | سلسلة نصية | رمز ترقيم الصفحات من الاستجابة السابقة |
واجهة برمجة التطبيقات للمراقبة
المقاييس المجمعة
GET /api/monitoring
يعرض المقاييس المجمعة عبر جميع عمليات النشر الخاصة بالمستخدمين: إجمالي الطلبات، وعمليات النشر النشطة، ومعدل الأخطاء، ومتوسط زمن الاستجابة.
واجهة برمجة تطبيقات التصدير
تحويل النماذج إلى تنسيقات محسّنة للنشر على الحافة.
سرد عمليات التصدير
GET /api/exports
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
modelId | سلسلة نصية | رقم الطراز (مطلوب) |
status | سلسلة نصية | تصفية حسب الحالة |
limit | عدد صحيح | النتائج القصوى (الافتراضي: 20، الحد الأقصى: 100) |
إنشاء عملية تصدير
POST /api/exports
الجسم:
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
modelId | سلسلة نصية | نعم | معرف نموذج المصدر |
format | سلسلة نصية | نعم | تنسيق التصدير (انظر الجدول أدناه) |
gpuType | سلسلة نصية | مشروط | مطلوب عند format هو engine (TensorRT) |
args | كائن | لا | تصدير الحجج (imgsz, half, dynamic، إلخ) |
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"modelId": "MODEL_ID", "format": "onnx"}' \
https://platform.ultralytics.com/api/exports
resp = requests.post(
"https://platform.ultralytics.com/api/exports",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"modelId": "MODEL_ID", "format": "onnx"},
)
export_id = resp.json()["exportId"]
التنسيقات المدعومة:
| التنسيق | القيمة | حالة الاستخدام |
|---|---|---|
| ONNX | onnx | الاستدلال عبر المنصات |
| TorchScript | torchscript | نشر PyTorch |
| OpenVINO | openvino | Intel |
| TensorRT | engine | GPU الرسومات NVIDIA |
| CoreML | coreml | أجهزة Apple |
| TFLite | tflite | المحمول والمدمج |
| TF SavedModel | saved_model | TensorFlow |
| TF GraphDef | pb | رسم بياني TensorFlow |
| PaddlePaddle | paddle | بايدو PaddlePaddle |
| NCNN | ncnn | شبكة عصبية متنقلة |
| Edge TPU | edgetpu | أجهزة Google |
| TF.js | tfjs | استنتاج المتصفح |
| MNN | mnn | استنتاجات أليبابا للهواتف المحمولة |
| RKNN | rknn | وحدة المعالجة العصبية Rockchip |
| IMX | imx | مستشعر Sony IMX500 |
| Axelera | axelera | مسرعات Axelera AI |
| ExecuTorch | executorch | وقت تشغيل Meta ExecuTorch |
الحصول على حالة التصدير
GET /api/exports/{exportId}
إلغاء التصدير
DELETE /api/exports/{exportId}
تتبع التصدير تنزيل
POST /api/exports/{exportId}/track-download
واجهة برمجة تطبيقات النشاط
track وإدارة أحداث النشاط لحسابك.
سرد النشاط
GET /api/activity
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
limit | عدد صحيح | حجم الصفحة (الافتراضي: 20، الحد الأقصى: 100) |
page | عدد صحيح | رقم الصفحة (افتراضي: 1) |
archived | قيمة منطقية | true لعلامة التبويب "الأرشيف"، false لصندوق الوارد |
search | سلسلة نصية | البحث غير الحساس لحالة الأحرف في حقول الأحداث |
وضع علامة على الأحداث المشاهدة
POST /api/activity/mark-seen
الجسم:
{
"all": true
}
أو تمرير معرفات محددة:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}
أرشفة الأحداث
POST /api/activity/archive
الجسم:
{
"all": true,
"archive": true
}
أو تمرير معرفات محددة:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}
واجهة برمجة تطبيقات سلة المهملات
إدارة الموارد المحذوفة مؤقتًا (احتفاظ لمدة 30 يومًا).
عرض سلة المهملات
GET /api/trash
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
type | سلسلة نصية | مرشح: all, project, dataset, model |
page | عدد صحيح | رقم الصفحة (افتراضي: 1) |
limit | عدد صحيح | العناصر في كل صفحة (الافتراضي: 50، الحد الأقصى: 200) |
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
استعادة عنصر
POST /api/trash
الجسم:
{
"id": "item_abc123",
"type": "dataset"
}
حذف العنصر نهائياً
DELETE /api/trash
الجسم:
{
"id": "item_abc123",
"type": "dataset"
}
لا رجعة فيه
لا يمكن التراجع عن الحذف الدائم. سيتم إزالة المورد وجميع البيانات المرتبطة به.
إفراغ سلة المهملات
DELETE /api/trash/empty
يحذف جميع العناصر الموجودة في سلة المهملات بشكل دائم.
واجهة برمجة تطبيقات الفواتير
إدارة الائتمانات والاشتراكات وطرق الدفع.
وحدات العملة
تستخدم مبالغ الفواتير السنتات (creditsCents) حيث 100 = $1.00.
الحصول على الرصيد
GET /api/billing/balance
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
الاستجابة:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}
الحصول على ملخص الاستخدام
GET /api/billing/usage-summary
يعرض تفاصيل الخطة والحدود ومقاييس الاستخدام.
الحصول على المعاملات
GET /api/billing/transactions
يعرض سجل المعاملات (الأحدث أولاً).
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
إنشاء جلسة إتمام الدفع
POST /api/billing/checkout-session
الجسم:
{
"amount": 25,
"owner": "team-username"
}
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
amount | رقم | نعم | المبلغ بالدولار (5-1000 دولار) |
owner | سلسلة نصية | لا | اسم المستخدم الخاص بالفريق لإعادة تعبئة رصيد مساحة العمل (يتطلب دور المسؤول) |
ينشئ جلسة دفع لشراء بالائتمان.
إنشاء إتمام دفع الاشتراك
POST /api/billing/subscription-checkout
ينشئ جلسة دفع لترقية الاشتراك في Pro.
الجسم:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}
| الحقل | النوع | مطلوب | الوصف |
|---|---|---|---|
planId | سلسلة نصية | نعم | خطط للاشتراك في (pro) |
billingCycle | سلسلة نصية | لا | دورة الفوترة: monthly (افتراضي) أو yearly |
owner | سلسلة نصية | لا | اسم المستخدم الخاص بالفريق لترقية مساحة العمل (يتطلب دور المسؤول) |
إنشاء جلسة بوابة
POST /api/billing/portal-session
يعيد عنوان URL إلى بوابة الفوترة لإدارة الاشتراك.
التعبئة التلقائية
إضافة رصيد تلقائيًا عندما ينخفض الرصيد عن الحد الأدنى.
الحصول على تكوين إعادة التعبئة التلقائية
GET /api/billing/auto-topup
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
owner | سلسلة نصية | اسم المستخدم لمالك مساحة العمل |
تحديث إعدادات التعبئة التلقائية
PATCH /api/billing/auto-topup
الجسم:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}
طرق الدفع
قائمة طرق الدفع
GET /api/billing/payment-methods
إنشاء نية الإعداد
POST /api/billing/payment-methods/setup
إرجاع سر العميل لإضافة طريقة دفع جديدة.
تعيين طريقة الدفع الافتراضية
POST /api/billing/payment-methods/default
الجسم:
{
"paymentMethodId": "pm_123"
}
تحديث معلومات الفوترة
PATCH /api/billing/payment-methods
الجسم:
{
"name": "Jane Doe",
"address": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}
حذف طريقة الدفع
DELETE /api/billing/payment-methods/{id}
واجهة برمجة تطبيقات التخزين
الحصول على معلومات التخزين
GET /api/storage
الاستجابة:
{
"tier": "free",
"usage": {
"storage": {
"current": 1073741824,
"limit": 107374182400,
"percent": 1.0
}
},
"region": "us",
"username": "johndoe",
"updatedAt": "2024-01-15T10:00:00Z",
"breakdown": {
"byCategory": {
"datasets": { "bytes": 536870912, "count": 2 },
"models": { "bytes": 268435456, "count": 4 },
"exports": { "bytes": 268435456, "count": 3 }
},
"topItems": [
{
"_id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"sizeBytes": 536870912,
"type": "dataset"
},
{
"_id": "model_def456",
"name": "experiment-1",
"slug": "experiment-1",
"sizeBytes": 134217728,
"type": "model",
"parentName": "My Project",
"parentSlug": "my-project"
}
]
}
}
إعادة حساب السعة التخزينية
POST /api/storage
يؤدي إلى إعادة حساب استخدام التخزين.
تحميل واجهة برمجة التطبيقات
تستخدم عمليات تحميل الملفات المباشرة تدفق URL الموقع بخطوتين.
احصل على عنوان URL للتحميل الموقع
POST /api/upload/signed-url
اطلب عنوان URL موقّع لتحميل ملف مباشرة إلى التخزين السحابي. يتجاوز عنوان URL الموقّع خادم API لنقل الملفات الكبيرة.
الجسم:
{
"assetType": "images",
"assetId": "abc123",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"totalBytes": 5242880
}
| الحقل | النوع | الوصف |
|---|---|---|
assetType | سلسلة نصية | نوع الأصل: models, datasets, images, videos |
assetId | سلسلة نصية | معرف الأصل المستهدف |
filename | سلسلة نصية | اسم الملف الأصلي |
contentType | سلسلة نصية | نوع MIME |
totalBytes | عدد صحيح | حجم الملف بالبايت |
الاستجابة:
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.example.com/...",
"objectPath": "images/abc123/my-image.jpg",
"downloadUrl": "https://cdn.example.com/...",
"expiresAt": "2026-02-22T12:00:00Z"
}
تحميل كامل
POST /api/upload/complete
أخبر المنصة بأن تحميل الملف قد اكتمل حتى تبدأ في معالجته.
الجسم:
{
"datasetId": "abc123",
"objectPath": "datasets/abc123/images/my-image.jpg",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"size": 5242880
}
واجهة برمجة تطبيقات مفاتيح API
عرض مفاتيح API
GET /api/api-keys
إنشاء مفتاح API
POST /api/api-keys
الجسم:
{
"name": "training-server"
}
حذف مفتاح API
DELETE /api/api-keys
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
keyId | سلسلة نصية | معرف مفتاح API المطلوب إلغاؤه |
مثال:
curl -X DELETE \
-H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"
واجهة برمجة التطبيقات للفرق والأعضاء
إدارة التعاون في مساحة العمل مع الفرق والأعضاء والدعوات.
قائمة الفرق
GET /api/teams
إنشاء فريق
POST /api/teams/create
الجسم:
{
"username": "my-team",
"fullName": "My Team"
}
قائمة الأعضاء
GET /api/members
يعرض أعضاء مساحة العمل الحالية.
دعوة عضو
POST /api/members
الجسم:
{
"email": "user@example.com",
"role": "editor"
}
أدوار الأعضاء
| الدور | الصلاحيات |
|---|---|
viewer | وصول للقراءة فقط إلى موارد مساحة العمل |
editor | إنشاء الموارد وتحريرها وحذفها |
admin | وصول كامل بما في ذلك إدارة الأعضاء |
انظر Teams للحصول على تفاصيل الدور في واجهة المستخدم.
تحديث دور العضو
PATCH /api/members/{userId}
إزالة عضو
DELETE /api/members/{userId}
نقل الملكية
POST /api/members/transfer-ownership
دعوات
قبول الدعوة
POST /api/invites/accept
احصل على معلومات الدعوة
GET /api/invites/info
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
token | سلسلة نصية | رمز الدعوة |
إلغاء الدعوة
DELETE /api/invites/{inviteId}
إعادة إرسال الدعوة
POST /api/invites/{inviteId}/resend
استكشف واجهة برمجة التطبيقات
البحث في المحتوى العام
GET /api/explore/search
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
q | سلسلة نصية | استعلام البحث |
type | سلسلة نصية | نوع المورد: all (افتراضي)، projects, datasets |
sort | سلسلة نصية | ترتيب الفرز: stars (افتراضي)، newest, oldest, name-asc, name-desc, count-desc, count-asc |
offset | عدد صحيح | إزاحة ترقيم الصفحات (الافتراضي: 0). تعرض النتائج 20 عنصرًا في كل صفحة. |
بيانات الشريط الجانبي
GET /api/explore/sidebar
يعرض محتوى مختارًا للشريط الجانبي "استكشاف".
واجهات برمجة التطبيقات الخاصة بالمستخدم والإعدادات
الحصول على المستخدم حسب اسم المستخدم
GET /api/users
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
username | سلسلة نصية | اسم المستخدم المطلوب البحث عنه |
متابعة أو إلغاء متابعة المستخدم
PATCH /api/users
الجسم:
{
"username": "target-user",
"followed": true
}
تحقق من توفر اسم المستخدم
GET /api/username/check
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
username | سلسلة نصية | اسم المستخدم للتحقق |
suggest | منطقي | اختياري: true لتضمين اقتراح إذا تم أخذه |
الإعدادات
GET /api/settings
POST /api/settings
الحصول على إعدادات ملف تعريف المستخدم أو تحديثها (الاسم المعروض، السيرة الذاتية، الروابط الاجتماعية، إلخ).
أيقونة الملف الشخصي
POST /api/settings/icon
DELETE /api/settings/icon
تحميل أو إزالة الصورة الشخصية للملف الشخصي.
التأهيل
POST /api/onboarding
إكمال عملية التسجيل (تعيين منطقة البيانات واسم المستخدم).
واجهة برمجة تطبيقات GDPR
نقاط نهاية الامتثال للائحة العامة لحماية البيانات (GDPR) لتصدير البيانات وحذفها.
احصل على حالة وظيفة GDPR
GET /api/gdpr
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
jobId | سلسلة نصية | رقم الوظيفة GDPR للتحقق |
يعرض حالة المهمة. بالنسبة لمهام التصدير المكتملة، تتضمن الاستجابة downloadUrl.
بدء التصدير أو حذف التدفق
POST /api/gdpr
الجسم:
{
"action": "export"
}
{
"action": "delete",
"confirmationWord": "DELETE"
}
اختياري لمساحات عمل الفريق:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}
إجراء لا رجعة فيه
حذف الحساب دائم ولا يمكن التراجع عنه. سيتم حذف جميع البيانات والنماذج وعمليات النشر.
رموز الأخطاء
| الرمز | حالة HTTP | الوصف |
|---|---|---|
UNAUTHORIZED | 401 | مفتاح API غير صالح أو مفقود |
FORBIDDEN | 403 | أذونات غير كافية |
NOT_FOUND | 404 | المورد غير موجود |
VALIDATION_ERROR | 400 | بيانات الطلب غير صالحة |
RATE_LIMITED | 429 | عدد كبير جداً من الطلبات |
INTERNAL_ERROR | 500 | خطأ في الخادم |
Python
لتسهيل عملية التكامل، استخدمPython Ultralytics Python التي تتولى المصادقة والتحميل وتدفق المقاييس في الوقت الفعلي تلقائيًا.
التثبيت والإعداد
pip install ultralytics
تحقق من التثبيت:
yolo check
متطلبات إصدار الحزمة
يتطلب تكامل المنصة ultralytics>=8.4.14. الإصدارات الأقدم لن تعمل مع المنصة.
المصادقة
yolo settings api_key=YOUR_API_KEY
export ULTRALYTICS_API_KEY=YOUR_API_KEY
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
استخدام مجموعات بيانات المنصة
مجموعات البيانات المرجعية مع ul:// URIs:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/your-dataset",
epochs=100,
imgsz=640,
)
تنسيق URI:
| النمط | الوصف |
|---|---|
ul://username/datasets/slug | مجموعة البيانات |
ul://username/project-name | المشروع |
ul://username/project/model-name | نموذج محدد |
ul://ultralytics/yolo26/yolo26n | النموذج الرسمي |
الدفع إلى المنصة
إرسال النتائج إلى مشروع منصة:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="ul://your-username/my-project",
name="experiment-1",
)
ما الذي يتزامن:
- مقاييس التدريب (في الوقت الفعلي)
- أوزان النموذج النهائي
- مخططات التحقق
- إخراج وحدة التحكم
- مقاييس النظام
أمثلة على واجهة برمجة التطبيقات
تحميل نموذج من المنصة:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")
تشغيل الاستدلال:
results = model("image.jpg")
# Access results
for r in results:
boxes = r.boxes # Detection boxes
masks = r.masks # Segmentation masks
keypoints = r.keypoints # Pose keypoints
probs = r.probs # Classification probabilities
نموذج التصدير:
# Export to ONNX
model.export(format="onnx", imgsz=640, half=True)
# Export to TensorRT
model.export(format="engine", imgsz=640, half=True)
# Export to CoreML
model.export(format="coreml", imgsz=640)
التحقق من الصحة:
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhooks
تقوم Webhooks بإخطار الخادم الخاص بك بأحداث المنصة عبر استدعاءات HTTP POST:
| الحدث | الوصف |
|---|---|
training.started | بدء مهمة التدريب |
training.epoch | اكتمل العصر |
training.completed | اكتمل التدريب |
training.failed | فشل التدريب |
export.completed | التصدير جاهز |
ميزة المؤسسة
نقاط نهاية webhook المخصصة متاحة في خطط Enterprise. تعمل webhooks التدريبية لـ Python تلقائيًا في جميع الخطط.
الأسئلة الشائعة
كيف يمكنني تقسيم النتائج الكبيرة إلى صفحات؟
تستخدم معظم نقاط النهاية limit المعلمة للتحكم في عدد النتائج التي يتم إرجاعها لكل طلب:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"
تدعم نقاط النهاية Activity و Trash أيضًا page معلمة للترقيم الصفحي القائم على الصفحات:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"
تستخدم نقطة نهاية البحث Explore Search offset بدلاً من page، مع حجم صفحة ثابت يبلغ 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"
هل يمكنني استخدام واجهة برمجة التطبيقات (API) بدون حزمة تطوير البرامج (SDK)؟
نعم، جميع الوظائف متاحة عبر REST. Python عبارة عن غلاف ملائم يضيف ميزات مثل البث المباشر للمقاييس وتحميل النماذج تلقائيًا.
هل توجد مكتبات عميل لواجهة برمجة التطبيقات (API)؟
حاليًا، استخدم حزمة Ultralytics python أو قم بإجراء طلبات HTTP مباشرة. يجري التخطيط لمكتبات عميل رسمية للغات أخرى.
كيف أتعامل مع قيود المعدل؟
استخدم Retry-After رأس من الاستجابة 429 للانتظار المدة المناسبة:
import time
import requests
def api_request_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code != 429:
return response
wait = int(response.headers.get("Retry-After", 2**attempt))
time.sleep(wait)
raise Exception("Rate limit exceeded")
كيف يمكنني العثور على معرف النموذج أو مجموعة البيانات الخاصة بي؟
يتم إرجاع معرفات الموارد عند إنشاء الموارد عبر واجهة برمجة التطبيقات. يمكنك أيضًا العثور عليها في عنوان URL الخاص بالمنصة:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project model
استخدم نقاط نهاية القائمة للبحث حسب الاسم أو التصفية حسب المشروع.