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

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsاستكشف مرجع واجهة برمجة التطبيقات التفاعلي الكامل في وثائق Ultralytics Platform 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| المورد | الوصف (Description) | العمليات الرئيسية |
|---|---|---|
| مجموعات البيانات | مجموعات الصور المصنفة | CRUD، الصور، التصنيفات، التصدير، الإصدارات، النسخ |
| المشاريع | مساحات عمل التدريب | CRUD، النسخ، الأيقونة |
| النماذج | نقاط التحقق المدربة | CRUD، التنبؤ، التنزيل، النسخ، التصدير |
| عمليات النشر | نقاط نهاية الاستدلال المخصصة | CRUD، البدء/الإيقاف، المقاييس، السجلات، الصحة |
| التصديرات | وظائف تحويل التنسيق | الإنشاء، الحالة، التنزيل |
| التدريب | وظائف التدريب السحابي GPU | البدء، الحالة، الإلغاء |
| الفواتير | الأرصدة والاشتراكات | الرصيد، الشحن، طرق الدفع |
| الفرق | التعاون في مساحة العمل | الأعضاء، الدعوات، الأدوار |
المصادقة
تستخدم واجهات برمجة تطبيقات الموارد مثل مجموعات البيانات، والمشاريع، والنماذج، والتدريب، والتصديرات، والتنبؤات مصادقة API-key. تدعم نقاط النهاية العامة (سرد مجموعات البيانات، والمشاريع، والنماذج العامة) وصول القراءة المجهول بدون مفتاح. المسارات الموجهة للحساب - بما في ذلك النشاط، والإعدادات، والفرق، والفواتير، وتدفقات GDPR - تتطلب حالياً جلسة متصفح مصادق عليها وليست متاحة عبر API key.
الحصول على API Key
- انتقل إلى
Settings>API Keys - انقر على
Create Key - انسخ المفتاح الذي تم إنشاؤه
راجع API Keys للحصول على تعليمات مفصلة.
ترويسة التفويض (Authorization Header)
قم بتضمين API key الخاص بك في جميع الطلبات:
Authorization: Bearer YOUR_API_KEYتستخدم API keys التنسيق ul_ متبوعاً بـ 40 حرفاً سداسياً عشرياً. حافظ على سرية مفتاحك -- لا تقم أبداً بإيداعه في نظام التحكم في الإصدار أو مشاركته علناً.
مثال
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsعنوان URL الأساسي
تستخدم جميع نقاط نهاية واجهة برمجة التطبيقات:
https://platform.ultralytics.com/api
حدود المعدل (Rate Limits)
تفرض واجهة برمجة التطبيقات حدود معدل لكل API key (نافذة منزلقة، مدعومة بـ Upstash Redis) للحماية من إساءة الاستخدام مع الحفاظ على الاستخدام المشروع غير مقيد. كما تخضع حركة المرور المجهولة للحماية بواسطة عناصر التحكم في إساءة الاستخدام على مستوى منصة Vercel.
عند تقييد السرعة، تُرجع واجهة برمجة التطبيقات 429 مع بيانات تعريف إعادة المحاولة:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Zحدود لكل API Key
يتم تطبيق حدود المعدل تلقائياً بناءً على نقطة النهاية التي يتم استدعاؤها. العمليات المكلفة لها حدود أكثر صرامة لمنع إساءة الاستخدام، بينما تتشارك عمليات CRUD القياسية في حد افتراضي سخي:
| نقطة النهاية | الحد | ينطبق على |
|---|---|---|
| الافتراضي | 100 طلب/دقيقة | جميع نقاط النهاية غير المدرجة أدناه (سرد، جلب، إنشاء، تحديث، حذف) |
| التدريب | 10 طلبات/دقيقة | بدء وظائف التدريب السحابي (POST /api/training/start) |
| تحميل | 10 طلبات/دقيقة | تحميل الملفات، روابط التوقيع، واستيعاب مجموعات البيانات |
| التنبؤ (Predict) | 20 طلباً/دقيقة | استدلال النموذج المشترك (POST /api/models/{id}/predict) |
| تصدير | 20 طلباً/دقيقة | تصديرات تنسيق النموذج (POST /api/exports)، تصديرات NDJSON لمجموعة البيانات، وإنشاء الإصدار |
| التنزيل | 30 طلباً/دقيقة | تنزيلات ملف أوزان النموذج (GET /api/models/{id}/download) |
| مخصص | غير محدود | نقاط النهاية المخصصة — خدمتك الخاصة، لا توجد حدود لواجهة برمجة التطبيقات |
لكل فئة عداد مستقل لكل API key. على سبيل المثال، إجراء 20 طلب تنبؤ لا يؤثر على مخصصك الافتراضي البالغ 100 طلب/دقيقة.
نقاط النهاية المخصصة (غير محدودة)
نقاط النهاية المخصصة لا تخضع لحدود معدل API key. عند نشر نموذج على نقطة نهاية مخصصة، تذهب الطلبات إلى عنوان URL لنقطة النهاية ذلك (على سبيل المثال، https://predict-abc123.run.app/predict) مباشرة إلى خدمتك المخصصة دون تقييد للسرعة من المنصة. أنت تدفع مقابل الحوسبة، لذا تحصل على الإنتاجية من تكوين خدمتك المخصصة بدلاً من حدود واجهة برمجة التطبيقات المشتركة.
عند تلقي رمز الحالة 429، انتظر Retry-After (أو حتى X-RateLimit-Reset) قبل إعادة المحاولة. راجع الأسئلة الشائعة حول حدود المعدل لتنفيذ التراجع الأسي.
تنسيق الاستجابة
استجابات النجاح
تُرجع الاستجابات JSON مع حقول خاصة بالمورد:
{
"datasets": [...],
"total": 100
}استجابات الخطأ
{
"error": "Dataset not found"
}| حالة HTTP | المعنى |
|---|---|
200 | نجاح |
201 | تم الإنشاء |
400 | طلب غير صالح |
401 | المصادقة مطلوبة |
403 | أذونات غير كافية |
404 | المورد غير موجود |
409 | تعارض (مكرر) |
429 | تم تجاوز حد المعدل |
500 | خطأ في الخادم |
Datasets API
إنشاء وتصفح وإدارة مجموعات بيانات الصور المصنفة لتدريب نماذج YOLO. راجع وثائق مجموعات البيانات.
سرد مجموعات البيانات
GET /api/datasetsمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
username | سلسلة نصية (string) | التصفية حسب اسم المستخدم |
slug | سلسلة نصية (string) | جلب مجموعة بيانات واحدة حسب الرمز المختصر (slug) |
limit | int | عدد العناصر في كل صفحة (الافتراضي: 20، الحد الأقصى: 500) |
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"الاستجابة:
{
"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هيكل الطلب (Body):
{
"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تنشئ نسخة من مجموعة البيانات مع جميع الصور والتسميات. يمكن استنساخ مجموعات البيانات العامة فقط. يتطلب جلسة متصفح نشطة للمنصة - غير متاح عبر مفتاح API.
هيكل الطلب (جميع الحقول اختيارية):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}تصدير مجموعة البيانات
GET /api/datasets/{datasetId}/exportتُرجع استجابة JSON مع رابط تحميل موقّع لأحدث إصدار تم تصديره من مجموعة البيانات.
معاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
v | عدد صحيح | رقم الإصدار (يبدأ من 1). إذا تم حذفه، تُرجع أحدث تصدير (غير مخزن مؤقتاً). |
الاستجابة:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}إنشاء إصدار لمجموعة البيانات
POST /api/datasets/{datasetId}/exportإنشاء لقطة إصدار مرقمة جديدة لمجموعة البيانات. للمالك فقط. يلتقط الإصدار عدد الصور الحالي، وعدد الفئات، وعدد التسميات التوضيحية، وتوزيع التقسيمات، ثم ينشئ ويخزن تصدير NDJSON غير قابل للتغيير.
هيكل طلب الإرسال (Request Body):
{
"description": "Added 500 training images"
}جميع الحقول اختيارية. حقل description هو تسمية توضيحية يوفرها المستخدم للإصدار.
الاستجابة:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}تحديث وصف الإصدار
PATCH /api/datasets/{datasetId}/exportتحديث وصف إصدار موجود. للمالك فقط.
هيكل طلب الإرسال (Request Body):
{
"version": 2,
"description": "Fixed mislabeled classes"
}الاستجابة:
{
"ok": 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 على صور مجموعة البيانات لإنشاء تسميات توضيحية تلقائياً. يستخدم نموذجاً محدداً للتنبؤ بالتسميات للصور غير المعلق عليها.
هيكل الطلب (Body):
| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
imageHash | سلسلة نصية (string) | نعم | بصمة (Hash) الصورة المراد التعليق عليها |
modelId | سلسلة نصية (string) | لا | معرف النموذج لاستخدامه في الاستنتاج |
confidence | float | لا | عتبة الثقة (الافتراضي: 0.25) |
iou | float | لا | عتبة IoU (الافتراضي: 0.45) |
استيعاب مجموعة البيانات
POST /api/datasets/ingestإنشاء وظيفة استيعاب مجموعة بيانات لمعالجة ملفات ZIP أو TAR المرفوعة، بما في ذلك ملفات .tar.gz و .tgz، التي تحتوي على صور وتسميات.
graph LR
A[Upload Archive] --> B[POST /api/datasets/ingest]
B --> C[Process Archive]
C --> D[Extract images]
C --> E[Parse labels]
C --> F[Generate thumbnails]
D & E & F --> G[Dataset ready]صور مجموعة البيانات
سرد الصور
GET /api/datasets/{datasetId}/imagesمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
split | سلسلة نصية (string) | التصفية حسب التقسيم: train، val، test |
offset | int | إزاحة الترقيم الصفحي (الافتراضي: 0) |
limit | int | عدد العناصر في كل صفحة (الافتراضي: 50، الحد الأقصى: 5000) |
sort | سلسلة نصية (string) | ترتيب الفرز: newest، oldest، name-asc، name-desc، height-asc، height-desc، width-asc، width-desc، size-asc، size-desc، labels-asc، labels-desc (بعضها معطل لمجموعات بيانات أكبر من 100 ألف صورة) |
hasLabel | سلسلة نصية (string) | التصفية حسب حالة التسمية (true أو false) |
hasError | سلسلة نصية (string) | التصفية حسب حالة الخطأ (true أو false) |
search | سلسلة نصية (string) | البحث حسب اسم الملف أو بصمة الصورة |
includeThumbnails | سلسلة نصية (string) | تضمين روابط الصور المصغرة الموقعة (الافتراضي: true) |
includeImageUrls | سلسلة نصية (string) | تضمين روابط الصور الكاملة الموقعة (الافتراضي: false) |
الحصول على روابط الصور الموقعة
POST /api/datasets/{datasetId}/images/urlsالحصول على روابط موقعة لمجموعة من بصمات الصور (للعرض في المتصفح).
حذف صورة
DELETE /api/datasets/{datasetId}/images/{hash}الحصول على تسميات الصورة
GET /api/datasets/{datasetId}/images/{hash}/labelsتُرجع التسميات التوضيحية وأسماء الفئات لصورة محددة.
تحديث تسميات الصورة
PUT /api/datasets/{datasetId}/images/{hash}/labelsهيكل الطلب (Body):
{
"labels": [
{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] },
{ "classId": 1, "segments": [0.1, 0.2, 0.3, 0.2, 0.2, 0.4] }
]
}تستخدم إحداثيات التسميات قيم YOLO الطبيعية بين 0 و 1. تستخدم صناديق الإحاطة (Bounding boxes) [x_center, y_center, width, height]. تستخدم تسميات التجزئة (Segmentation labels) segments، وهي قائمة مسطحة لرؤوس المضلع [x1, y1, x2, y2, ...].
عمليات الصور المجمعة
نقل الصور بين التقسيمات (train/val/test) داخل مجموعة البيانات:
PATCH /api/datasets/{datasetId}/images/bulkحذف الصور بشكل مجمع:
DELETE /api/datasets/{datasetId}/images/bulkواجهة برمجة تطبيقات المشاريع (Projects API)
نظم نماذجك في مشاريع. كل نموذج ينتمي إلى مشروع واحد. راجع وثائق المشاريع.
سرد المشاريع
GET /api/projectsمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
username | سلسلة نصية (string) | التصفية حسب اسم المستخدم |
limit | int | عدد العناصر في كل صفحة |
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
الحصول على مشروع
GET /api/projects/{projectId}إنشاء مشروع
POST /api/projectscurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
https://platform.ultralytics.com/api/projectsتحديث مشروع
PATCH /api/projects/{projectId}حذف مشروع
DELETE /api/projects/{projectId}حذف مؤقت للمشروع (يُنقل إلى سلة المهملات).
استنساخ مشروع
POST /api/projects/{projectId}/cloneيستنسخ مشروعاً عاماً (مع جميع نماذجه) إلى مساحة عملك. يتطلب جلسة متصفح نشطة للمنصة - غير متاح عبر مفتاح API.
أيقونة المشروع
تحميل أيقونة المشروع (نموذج متعدد الأجزاء مع ملف صورة):
POST /api/projects/{projectId}/iconإزالة أيقونة المشروع:
DELETE /api/projects/{projectId}/iconكلاهما يتطلب جلسة متصفح نشطة للمنصة - غير متاح عبر مفتاح API.
واجهة برمجة تطبيقات النماذج
إدارة نماذج YOLO المدربة — عرض المقاييس، وتنزيل الأوزان، وتشغيل الاستدلال، والتصدير إلى تنسيقات أخرى. راجع وثائق النماذج.
سرد النماذج
GET /api/modelsمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
projectId | سلسلة نصية (string) | نعم | معرف المشروع (مطلوب) |
fields | سلسلة نصية (string) | لا | مجموعة الحقول: summary، charts |
ids | سلسلة نصية (string) | لا | معرفات النماذج مفصولة بفواصل |
limit | int | لا | الحد الأقصى للنتائج (الافتراضي 20، الحد الأقصى 100) |
سرد النماذج المكتملة
GET /api/models/completedإرجاع النماذج التي انتهت من التدريب (للاستخدام في محددات النماذج والنشر).
الحصول على نموذج
GET /api/models/{modelId}إنشاء نموذج
POST /api/modelsهيكل JSON:
| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
projectId | سلسلة نصية (string) | نعم | معرف المشروع المستهدف |
slug | سلسلة نصية (string) | لا | رابط URL مختصر (أحرف أبجدية رقمية صغيرة/واصلات) |
name | سلسلة نصية (string) | لا | اسم العرض (الحد الأقصى 100 حرف) |
description | سلسلة نصية (string) | لا | وصف النموذج (الحد الأقصى 1000 حرف) |
task | سلسلة نصية (string) | لا | نوع المهمة (detect، segment، pose، obb، classify) |
تتم معالجة تحميلات ملفات النموذج .pt بشكل منفصل. استخدم واجهة النظام الأساسي لسحب وإفلات ملفات النموذج إلى مشروع ما.
تحديث النموذج
PATCH /api/models/{modelId}حذف النموذج
DELETE /api/models/{modelId}تنزيل ملفات النموذج
GET /api/models/{modelId}/filesإرجاع روابط تنزيل موقعة لملفات النموذج.
استنساخ النموذج
POST /api/models/{modelId}/cloneاستنساخ نموذج عام إلى أحد مشاريعك. يتطلب جلسة متصفح نشطة على النظام الأساسي — غير متاح عبر مفتاح API.
هيكل الطلب (Body):
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
targetProjectSlug | سلسلة نصية (string) | نعم | الرابط المختصر لمشروع الوجهة |
modelName | سلسلة نصية (string) | لا | اسم النموذج المستنسخ |
description | سلسلة نصية (string) | لا | وصف النموذج |
owner | سلسلة نصية (string) | لا | اسم مستخدم الفريق (لاستنساخ مساحة العمل) |
تتبع التنزيل
POST /api/models/{modelId}/track-downloadتتبع تحليلات تنزيل النموذج.
تشغيل الاستدلال
POST /api/models/{modelId}/predictنموذج متعدد الأجزاء:
| الحقل | النوع (Type) | الوصف (Description) |
|---|---|---|
file | ملف | ملف صورة (JPEG، PNG، WebP) |
conf | float | عتبة الثقة (الافتراضي: 0.25) |
iou | float | حد IoU (الافتراضي: 0.7) |
imgsz | int | حجم الصورة بالبكسل (الافتراضي: 640) |
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/MODEL_ID/predictالاستجابة:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}الحصول على رمز التنبؤ
POST /api/models/{modelId}/predict/tokenيتم استخدام هذا المسار من قبل علامة التبويب Predict داخل التطبيق لإصدار رموز استدلال قصيرة الأجل لاتصالات المتصفح المباشرة بخدمة التنبؤ (زمن انتقال أقل، بدون وكيل API). يتطلب جلسة متصفح نشطة على النظام الأساسي وغير متاح عبر مفتاح API. للاستدلال البرمجي، اتصل بـ POST /api/models/{modelId}/predict باستخدام مفتاح API الخاص بك.
تسخين النموذج
POST /api/models/{modelId}/predict/warmupيتم استخدام مسار التسخين من قبل علامة التبويب Predict لتحميل أوزان النموذج مسبقاً على خدمة التنبؤ قبل أول استدلال للمستخدم. يتطلب جلسة متصفح نشطة على النظام الأساسي وغير متاح عبر مفتاح API.
واجهة برمجة تطبيقات التدريب
بدء تدريب YOLO على وحدات معالجة الرسوميات السحابية (24 نوعاً من وحدات معالجة الرسوميات من RTX 2000 Ada إلى B300) ومراقبة التقدم في الوقت الفعلي. راجع وثائق التدريب السحابي.
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/startcurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo26n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16
}
}' \
https://platform.ultralytics.com/api/training/startتشمل أنواع وحدات معالجة الرسوميات المتاحة rtx-4090 و a100-80gb-pcie و a100-80gb-sxm و h100-sxm و rtx-pro-6000 و b300 وغيرها. راجع التدريب السحابي للحصول على القائمة الكاملة مع الأسعار.
الحصول على حالة التدريب
GET /api/models/{modelId}/trainingإرجاع حالة وظيفة التدريب الحالية والمقاييس والتقدم لنموذج ما. المشاريع العامة يمكن الوصول إليها بشكل مجهول؛ تتطلب المشاريع الخاصة جلسة متصفح نشطة على النظام الأساسي (لا يقبل هذا المسار المصادقة بمفتاح API).
إلغاء التدريب
DELETE /api/models/{modelId}/trainingإنهاء مثيل الحوسبة قيد التشغيل ووضع علامة على الوظيفة كملغاة. يتطلب جلسة متصفح نشطة على النظام الأساسي — غير متاح عبر مفتاح API.
واجهة برمجة تطبيقات عمليات النشر
نشر النماذج إلى نقاط نهاية استدلال مخصصة مع فحوصات الصحة والمراقبة. تستخدم عمليات النشر الجديدة ميزة التوسع إلى الصفر افتراضياً، وتقبل واجهة برمجة التطبيقات كائن resources اختياري. راجع وثائق نقاط النهاية.
فقط GET /api/deployments و POST /api/deployments و GET /api/deployments/{deploymentId} و DELETE /api/deployments/{deploymentId} تدعم المصادقة بمفتاح API. تتطلب المسارات الفرعية predict و health و logs و metrics و start و stop جلسة متصفح نشطة على النظام الأساسي — وهي وكلاء مريحون لواجهة المستخدم داخل التطبيق. للاستدلال البرمجي، اتصل بعنوان URL الخاص بنقطة نهاية النشر (على سبيل المثال، https://predict-abc123.run.app/predict) مباشرة باستخدام مفتاح API الخاص بك. نقاط النهاية المخصصة ليست مقيدة بالمعدل.
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معاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
modelId | سلسلة نصية (string) | تصفية حسب النموذج |
status | سلسلة نصية (string) | تصفية حسب الحالة |
limit | int | الحد الأقصى للنتائج (الافتراضي: 20، الحد الأقصى: 100) |
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
إنشاء عملية نشر
POST /api/deploymentsهيكل الطلب (Body):
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
modelId | سلسلة نصية (string) | نعم | معرف النموذج المراد نشره |
name | سلسلة نصية (string) | نعم | اسم عملية النشر |
region | سلسلة نصية (string) | نعم | منطقة النشر |
resources | كائن | لا | تكوين الموارد (cpu، memoryGi، minInstances، maxInstances) |
إنشاء نقطة نهاية استدلال مخصصة في المنطقة المحددة. يمكن الوصول إلى نقطة النهاية عالمياً عبر رابط URL فريد.
يرسل مربع حوار النشر حالياً قيم افتراضية ثابتة هي cpu=1 و memoryGi=2 و minInstances=0 و maxInstances=1. يقبل مسار API كائن resources، لكن حدود الخطة تحدد minInstances عند 0 و maxInstances عند 1.
اختر منطقة قريبة من المستخدمين للحصول على أقل زمن انتقال. تعرض واجهة مستخدم النظام الأساسي تقديرات زمن الانتقال لجميع المناطق الـ 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إرسال صورة مباشرة إلى نقطة نهاية النشر للاستدلال. مكافئ وظيفياً لتنبؤ النموذج، ولكنه موجه عبر نقطة النهاية المخصصة للحصول على زمن انتقال أقل.
نموذج متعدد الأجزاء:
| الحقل | النوع (Type) | الوصف (Description) |
|---|---|---|
file | ملف | ملف صورة (JPEG، PNG، WebP) |
conf | float | عتبة الثقة (الافتراضي: 0.25) |
iou | float | حد IoU (الافتراضي: 0.7) |
imgsz | int | حجم الصورة بالبكسل (الافتراضي: 640) |
الحصول على المقاييس
GET /api/deployments/{deploymentId}/metricsإرجاع عدد الطلبات، وزمن الانتقال، ومقاييس معدل الخطأ مع بيانات المخطط الصغير (sparkline).
معاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
range | سلسلة نصية (string) | النطاق الزمني: 1h، 6h، 24h (افتراضي)، 7d، 30d |
sparkline | سلسلة نصية (string) | اضبط على true للحصول على بيانات مخطط صغير محسنة لعرض لوحة المعلومات |
الحصول على السجلات
GET /api/deployments/{deploymentId}/logsمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
severity | سلسلة نصية (string) | عامل تصفية مفصول بفواصل: DEBUG، INFO، WARNING، ERROR، CRITICAL |
limit | int | عدد الإدخالات (الافتراضي: 50، الحد الأقصى: 200) |
pageToken | سلسلة نصية (string) | رمز الترقيم من الاستجابة السابقة |
API المراقبة
GET /api/monitoring هو مسار خاص بواجهة المستخدم فقط ويتطلب جلسة متصفح نشطة على المنصة. لا يقبل هذا المسار المصادقة عبر API-key. يمكنك الاستعلام عن مقاييس النشر الفردية عبر مسارات النشر المخصصة (والتي تتطلب أيضاً جلسة متصفح) أو استخدام Cloud Monitoring exports على خدمة Cloud Run المنشورة للوصول البرمجي.
المقاييس المجمعة
GET /api/monitoringيعيد مقاييس مجمعة عبر جميع عمليات نشر المستخدم: إجمالي الطلبات، عمليات النشر النشطة، معدل الخطأ، ومتوسط زمن الاستجابة.
API التصدير
تحويل النماذج إلى تنسيقات محسّنة مثل ONNX وTensorRT وCoreML وTFLite للنشر على الحافة (Edge). انظر توثيق النشر.
قائمة التصديرات
GET /api/exportsمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
modelId | سلسلة نصية (string) | معرف النموذج (مطلوب) |
status | سلسلة نصية (string) | تصفية حسب الحالة |
limit | int | الحد الأقصى للنتائج (الافتراضي: 20، الحد الأقصى: 100) |
إنشاء تصدير
POST /api/exportsهيكل الطلب (Body):
| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
modelId | سلسلة نصية (string) | نعم | معرف النموذج المصدر |
format | سلسلة نصية (string) | نعم | تنسيق التصدير (انظر الجدول أدناه) |
gpuType | سلسلة نصية (string) | شرطي | مطلوب عندما يكون format هو engine (TensorRT) |
args | كائن | لا | وسائط التصدير (imgsz وhalf وdynamic إلخ) |
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"modelId": "MODEL_ID", "format": "onnx"}' \
https://platform.ultralytics.com/api/exportsالتنسيقات المدعومة:
| التنسيق (Format) | القيمة | حالة الاستخدام |
|---|---|---|
| ONNX | onnx | الاستدلال عبر المنصات |
| TorchScript | torchscript | نشر PyTorch |
| OpenVINO | openvino | أجهزة Intel |
| TensorRT | engine | تحسين NVIDIA GPU |
| CoreML | coreml | أجهزة Apple |
| TFLite | tflite | الهواتف المحمولة والأنظمة المدمجة |
| TF SavedModel | saved_model | TensorFlow Serving |
| TF GraphDef | pb | TensorFlow frozen graph |
| PaddlePaddle | paddle | Baidu PaddlePaddle |
| NCNN | ncnn | الشبكات العصبية للمحمول |
| Edge TPU | edgetpu | أجهزة Google Coral |
| TF.js | tfjs | الاستدلال في المتصفح |
| MNN | mnn | الاستدلال للمحمول من Alibaba |
| RKNN | rknn | وحدة NPU من نوع 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-downloadAPI النشاط
عرض موجز للإجراءات الأخيرة على حسابك — عمليات التدريب، والتحميلات، والمزيد. انظر توثيق النشاط.
مسارات النشاط مدعومة بطلبات مصادق عليها عبر متصفح من واجهة المستخدم الخاصة بالمنصة. هذه المسارات غير مكشوفة كـ API عام، ولا تقبل المصادقة عبر API-key، وأشكال المسارات أدناه موثقة كمرجع فقط. استخدم موجز النشاط في واجهة المستخدم لعرض الأحداث أو تمييزها أو أرشفتها.
قائمة النشاط
GET /api/activityمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
limit | int | حجم الصفحة (الافتراضي: 20، الحد الأقصى: 100) |
page | int | رقم الصفحة (الافتراضي: 1) |
archived | boolean | true لعلامة تبويب الأرشيف، false للبريد الوارد |
search | سلسلة نصية (string) | بحث غير حساس لحالة الأحرف في حقول الحدث |
تمييز الأحداث كمقروءة
POST /api/activity/mark-seenهيكل الطلب (Body):
{
"all": true
}أو مرر معرفات محددة:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}أرشفة الأحداث
POST /api/activity/archiveهيكل الطلب (Body):
{
"all": true,
"archive": true
}أو مرر معرفات محددة:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}API سلة المهملات
عرض العناصر المحذوفة واستعادتها. يتم حذف العناصر نهائياً بعد 30 يوماً. انظر توثيق سلة المهملات.
قائمة سلة المهملات
GET /api/trashمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
type | سلسلة نصية (string) | عامل تصفية: all، project، dataset، model |
page | int | رقم الصفحة (الافتراضي: 1) |
limit | int | العناصر لكل صفحة (الافتراضي: 50، الحد الأقصى: 200) |
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
استعادة العنصر
POST /api/trashهيكل الطلب (Body):
{
"id": "item_abc123",
"type": "dataset"
}حذف العنصر نهائياً
DELETE /api/trashهيكل الطلب (Body):
{
"id": "item_abc123",
"type": "dataset"
}لا يمكن التراجع عن الحذف النهائي. سيتم إزالة المورد وجميع البيانات المرتبطة به.
إفراغ سلة المهملات
DELETE /api/trash/emptyيحذف جميع العناصر في سلة المهملات نهائياً.
DELETE /api/trash/empty يتطلب جلسة متصفح مصادق عليها ولا يتوفر عبر API key. استخدم زر إفراغ سلة المهملات في واجهة المستخدم بدلاً من ذلك.
API الفوترة
تحقق من رصيدك، واشترِ أرصدة، واعرض سجل المعاملات، وقم بتهيئة إعادة التعبئة التلقائية. انظر توثيق الفوترة.
تستخدم مبالغ الفوترة السنتات (creditsCents) حيث 100 = $1.00.
الحصول على الرصيد
GET /api/billing/balanceمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
الاستجابة:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}الحصول على ملخص الاستخدام
GET /api/billing/usage-summaryيعيد تفاصيل الخطة، والحدود، ومقاييس الاستخدام.
الحصول على المعاملات
GET /api/billing/transactionsيعيد سجل المعاملات (الأحدث أولاً).
معاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
إنشاء جلسة دفع
POST /api/billing/checkout-sessionهيكل الطلب (Body):
{
"amount": 25,
"owner": "team-username"
}| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
amount | number | نعم | المبلغ بالدولار ($5-$1000) |
owner | سلسلة نصية (string) | لا | اسم مستخدم الفريق لإعادة تعبئة مساحة العمل (يتطلب دور المسؤول) |
ينشئ جلسة دفع لشراء الأرصدة.
إنشاء دفع اشتراك
POST /api/billing/subscription-checkoutينشئ جلسة دفع للترقية إلى اشتراك Pro.
هيكل الطلب (Body):
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}| الحقل | النوع (Type) | مطلوب | الوصف (Description) |
|---|---|---|---|
planId | سلسلة نصية (string) | نعم | الخطة المراد الاشتراك فيها (pro) |
billingCycle | سلسلة نصية (string) | لا | دورة الفوترة: monthly (افتراضي) أو yearly |
owner | سلسلة نصية (string) | لا | اسم المستخدم للفريق لترقيات مساحة العمل (يتطلب دور المسؤول) |
إلغاء أو استئناف الاشتراك
DELETE /api/billing/subscription-checkoutيلغي اشتراك Pro في نهاية الفترة بشكل افتراضي. أرسل {"resume": true} لاستئناف إلغاء مجدول مسبقاً قبل نهاية فترة الفوترة.
هيكل الطلب (Body):
{
"resume": true
}الشحن التلقائي
إضافة أرصدة تلقائياً عندما ينخفض الرصيد عن حد معين.
الحصول على إعدادات التعبئة التلقائية للرصيد
GET /api/billing/auto-topupمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
owner | سلسلة نصية (string) | اسم مستخدم مالك مساحة العمل |
تحديث إعدادات التعبئة التلقائية للرصيد
PATCH /api/billing/auto-topupهيكل الطلب (Body):
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}طرق الدفع
سرد طرق الدفع
GET /api/billing/payment-methodsإنشاء طلب إعداد (Setup Intent)
POST /api/billing/payment-methods/setupيعيد سراً للعميل لإضافة طريقة دفع جديدة.
تعيين طريقة الدفع الافتراضية
POST /api/billing/payment-methods/defaultهيكل الطلب (Body):
{
"paymentMethodId": "pm_123"
}تحديث معلومات الفوترة
PATCH /api/billing/payment-methodsهيكل الطلب (Body):
{
"name": "Jane Doe",
"address": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}حذف طريقة الدفع
DELETE /api/billing/payment-methods/{id}واجهة برمجة تطبيقات التخزين
تحقق من تفاصيل استخدام التخزين الخاص بك حسب الفئة (مجموعات البيانات، النماذج، الصادرات) واطلع على أكبر العناصر لديك.
تتطلب مسارات التخزين جلسة متصفح نشطة للمنصة ولا يمكن الوصول إليها عبر مفتاح API. استخدم صفحة Settings > Profile في واجهة المستخدم للحصول على تفاصيل تفاعلية.
الحصول على معلومات التخزين
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"
}
]
}
}واجهة برمجة تطبيقات الرفع
ارفع الملفات مباشرة إلى التخزين السحابي باستخدام روابط موقعة لعمليات نقل سريعة وموثوقة. يستخدم تدفقاً من خطوتين: الحصول على رابط موقع، ثم رفع الملف. راجع Data documentation.
الحصول على رابط رفع موقع
POST /api/upload/signed-urlاطلب رابطاً موقعاً لرفع ملف مباشرة إلى التخزين السحابي. يتجاوز الرابط الموقع خادم API لنقل الملفات الكبيرة.
هيكل الطلب (Body):
{
"assetType": "images",
"assetId": "abc123",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"totalBytes": 5242880
}| الحقل | النوع (Type) | الوصف (Description) |
|---|---|---|
assetType | سلسلة نصية (string) | نوع الأصل: models، datasets، images، videos |
assetId | سلسلة نصية (string) | معرف الأصل المستهدف |
filename | سلسلة نصية (string) | اسم الملف الأصلي |
contentType | سلسلة نصية (string) | نوع MIME |
totalBytes | int | حجم الملف بالبايت |
الاستجابة:
{
"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أبلغ المنصة بأن رفع الملف قد اكتمل لكي تبدأ في معالجته.
هيكل الطلب (Body):
{
"datasetId": "abc123",
"objectPath": "datasets/abc123/images/my-image.jpg",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"size": 5242880
}واجهة برمجة تطبيقات مفاتيح API
أدر مفاتيح API الخاصة بك للوصول البرمجي. راجع API Keys documentation.
سرد مفاتيح API
GET /api/api-keysإنشاء مفتاح API
POST /api/api-keysهيكل الطلب (Body):
{
"name": "training-server"
}حذف مفتاح API
DELETE /api/api-keysمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
keyId | سلسلة نصية (string) | معرف مفتاح API المراد إلغاؤه |
مثال:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"واجهة برمجة تطبيقات الفرق والأعضاء
أنشئ مساحات عمل للفريق، وادعُ الأعضاء، وأدر الأدوار للتعاون. راجع Teams documentation.
سرد الفرق
GET /api/teamsإنشاء فريق
POST /api/teams/createهيكل الطلب (Body):
{
"username": "my-team",
"fullName": "My Team"
}سرد الأعضاء
GET /api/membersيعيد أعضاء مساحة العمل الحالية.
دعوة عضو
POST /api/membersهيكل الطلب (Body):
{
"email": "user@example.com",
"role": "editor"
}| الدور | الأذونات |
|---|---|
viewer | وصول للقراءة فقط لموارد مساحة العمل |
editor | إنشاء الموارد وتعديلها وحذفها |
admin | إدارة الأعضاء، والفوترة، وجميع الموارد (لا يمكن تعيينه إلا من قبل مالك الفريق) |
مالك الفريق owner هو المنشئ ولا يمكن دعوته. يتم نقل الملكية بشكل منفصل عبر POST /api/members/transfer-ownership. راجع Teams للحصول على تفاصيل كاملة حول الأدوار.
تحديث دور العضو
PATCH /api/members/{userId}إزالة عضو
DELETE /api/members/{userId}نقل الملكية
POST /api/members/transfer-ownershipالدعوات
قبول الدعوة
POST /api/invites/acceptالحصول على معلومات الدعوة
GET /api/invites/infoمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
token | سلسلة نصية (string) | رمز الدعوة |
إلغاء الدعوة
DELETE /api/invites/{inviteId}إعادة إرسال الدعوة
POST /api/invites/{inviteId}/resendواجهة برمجة تطبيقات الاستكشاف
ابحث واستعرض مجموعات البيانات والمشاريع العامة التي يشاركها المجتمع. راجع Explore documentation.
البحث في المحتوى العام
GET /api/explore/searchمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
q | سلسلة نصية (string) | استعلام البحث |
type | سلسلة نصية (string) | نوع المورد: all (افتراضي)، projects، datasets |
sort | سلسلة نصية (string) | ترتيب الفرز: stars (افتراضي)، newest، oldest، name-asc، name-desc، count-desc، count-asc |
offset | int | إزاحة الترقيم (الافتراضي: 0). تعيد النتائج 20 عنصراً في الصفحة. |
بيانات الشريط الجانبي
GET /api/explore/sidebarيعيد محتوى منسقاً للشريط الجانبي للاستكشاف.
واجهات برمجة تطبيقات المستخدم والإعدادات
أدر ملفك الشخصي، ومفاتيح API، واستخدام التخزين، وإعدادات خصوصية البيانات. راجع Settings documentation.
الحصول على مستخدم حسب اسم المستخدم
GET /api/usersمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
username | سلسلة نصية (string) | اسم المستخدم للبحث |
متابعة أو إلغاء متابعة مستخدم
PATCH /api/usersهيكل الطلب (Body):
{
"username": "target-user",
"followed": true
}التحقق من توفر اسم المستخدم
GET /api/username/checkمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
username | سلسلة نصية (string) | اسم المستخدم للتحقق |
suggest | bool | اختياري: true لتضمين اقتراح إذا كان الاسم محجوزاً |
إعدادات
GET /api/settings
POST /api/settingsالحصول على إعدادات ملف تعريف المستخدم أو تحديثها (اسم العرض، النبذة، روابط التواصل الاجتماعي، إلخ).
أيقونة الملف الشخصي
POST /api/settings/icon
DELETE /api/settings/iconرفع أو إزالة صورة الملف الشخصي.
الإعداد الأولي
POST /api/onboardingأكمل تدفق الإعداد الأولي (تعيين منطقة البيانات، اسم المستخدم).
واجهة برمجة تطبيقات GDPR
اطلب تصديراً لجميع بياناتك أو احذف حسابك نهائياً. راجع Settings documentation.
الحصول على حالة مهمة GDPR
GET /api/gdprمعاملات الاستعلام (Query Parameters):
| المعامل | النوع (Type) | الوصف (Description) |
|---|---|---|
jobId | سلسلة نصية (string) | معرف مهمة GDPR للتحقق منها |
يعيد حالة المهمة. بالنسبة لمهام التصدير المكتملة، تتضمن الاستجابة downloadUrl.
بدء تدفق التصدير أو الحذف
POST /api/gdprهيكل الطلب (Body):
{
"action": "export"
}{
"action": "delete",
"confirmationWord": "DELETE"
}اختياري لمساحات عمل الفريق:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}حذف الحساب نهائي ولا يمكن التراجع عنه. سيتم حذف جميع البيانات والنماذج وعمليات النشر.
رموز الخطأ
| الرمز | حالة HTTP | الوصف (Description) |
|---|---|---|
UNAUTHORIZED | 401 | مفتاح API غير صالح أو مفقود |
FORBIDDEN | 403 | أذونات غير كافية |
NOT_FOUND | 404 | المورد غير موجود |
VALIDATION_ERROR | 400 | بيانات طلب غير صالحة |
RATE_LIMITED | 429 | عدد كبير جداً من الطلبات |
INTERNAL_ERROR | 500 | خطأ في الخادم |
تكامل Python
لتحقيق تكامل أسهل، استخدم حزمة Ultralytics لـ Python التي تتعامل تلقائياً مع المصادقة والتحميل وبث المقاييس في الوقت الفعلي.
التثبيت والإعداد
pip install ultralyticsالتحقق من التثبيت:
yolo checkتتطلب عملية التكامل مع المنصة استخدام ultralytics>=8.4.35. الإصدارات الأقدم لن تعمل مع المنصة.
المصادقة
yolo settings api_key=YOUR_API_KEYاستخدام مجموعات بيانات المنصة
الإشارة إلى مجموعات البيانات باستخدام معرفات ul:// URIs:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/datasets/your-dataset",
epochs=100,
imgsz=640,
)تنسيق URI:
| النمط | الوصف (Description) |
|---|---|
ul://username/datasets/slug | مجموعة البيانات |
ul://username/project-name | المشروع |
ul://username/project/model-name | نموذج محدد |
ul://ultralytics/yolo26/yolo26n | نموذج رسمي |
الدفع إلى المنصة
إرسال النتائج إلى مشروع على المنصة:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="your-username/my-project",
name="experiment-1",
)ما تتم مزامنته:
- مقاييس التدريب (في الوقت الفعلي)
- أوزان النموذج النهائية
- مخططات التحقق
- مخرجات وحدة التحكم
- مقاييس النظام
أمثلة API
تحميل نموذج من المنصة:
# 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/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")خطافات الويب (Webhooks)
تستخدم المنصة خطافات ويب داخلية لبث مقاييس التدريب في الوقت الفعلي من ultralytics Python SDK (التي تعمل على وحدات معالجة الرسومات السحابية أو الأجهزة البعيدة/المحلية) إلى المنصة — بما في ذلك الخسارة لكل حقبة (epoch-by-epoch loss)، وmAP، وإحصائيات النظام، وحالة الإكمال. يتم مصادقة خطافات الويب هذه عبر HMAC webhookSecret الذي يتم توفيره لكل مهمة تدريب، وهي غير مخصصة للاستهلاك من قبل تطبيقات المستخدم.
جميع الخطط: يعمل تقدم التدريب عبر ultralytics SDK (المقاييس في الوقت الفعلي، إشعارات الإكمال) تلقائياً في كل خطة — فقط قم بتعيين project=username/my-project name=my-run عند التدريب وسيقوم SDK ببث الأحداث إلى المنصة. لا يلزم تسجيل خطاف ويب من جانب المستخدم.
اشتراكات خطاف الويب الموجهة للمستخدم (عمليات رد اتصال POST إلى عنوان URL تتحكم فيه) موجودة على خارطة طريق Enterprise وهي غير متاحة حالياً. في غضون ذلك، قم باستقصاء GET /api/models/{modelId}/training للحصول على الحالة أو استخدم خلاصة النشاط في واجهة المستخدم.
الأسئلة الشائعة
كيف يمكنني ترقيم نتائج كبيرة؟
تستخدم معظم نقاط النهاية معلمة limit للتحكم في عدد النتائج التي يتم إرجاعها لكل طلب:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"تدعم نقاط نهاية النشاط (Activity) وسلة المهملات (Trash) أيضاً معلمة page للترقيم القائم على الصفحات:
curl -H "Authorization: Bearer YOUR_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؟
Yes, all functionality is available via REST. The Python SDK is a convenience wrapper that adds features like real-time metric streaming and automatic model uploads. You can also explore all endpoints interactively at platform.ultralytics.com/api/docs.
هل توجد مكتبات عميل API؟
حالياً، استخدم حزمة Ultralytics لـ Python أو قم بإجراء طلبات HTTP مباشرة. من المخطط توفير مكتبات عميل رسمية للغات أخرى.
كيف أتعامل مع حدود المعدل (Rate Limits)؟
استخدم رأس 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")كيف أجد معرف النموذج أو مجموعة البيانات الخاص بي؟
يتم إرجاع معرفات الموارد عند إنشاء الموارد عبر API. يمكنك أيضاً العثور عليها في URL المنصة:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelاستخدم نقاط نهاية القائمة (list endpoints) للبحث بالاسم أو التصفية حسب المشروع.