REST API
توفر Ultralytics REST API شاملة REST API صول البرمجي إلى مجموعات البيانات والنماذج والتدريب وعمليات النشر.
البدء السريع
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
المصادقة
تتطلب جميع طلبات API المصادقة عبر مفتاح API.
الحصول على مفتاح API
- انتقل إلى الإعدادات > مفاتيح API
- انقر فوق " إنشاء مفتاح"
- انسخ المفتاح الذي تم إنشاؤه
انظر مفاتيح API للحصول على إرشادات مفصلة.
رأس التفويض
أدرج مفتاح API الخاص بك في جميع الطلبات:
Authorization: Bearer ul_your_api_key_here
مثال
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
عنوان URL الأساسي
تستخدم جميع نقاط نهاية واجهة برمجة التطبيقات (API) ما يلي:
https://platform.ultralytics.com/api
حدود الأسعار
| خطة | الطلبات/الدقيقة | الطلبات/اليوم |
|---|---|---|
| مجاني | 60 | 1,000 |
| احترافي | 300 | 50,000 |
| المؤسسة | مخصص | مخصص |
يتم تضمين رؤوس حدود المعدل في الردود:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
نموذج الرد
جميع الردود هي JSON:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
استجابات الخطأ
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
واجهة برمجة التطبيقات لمجموعات البيانات
قائمة مجموعات البيانات
GET /api/datasets
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
page | int | رقم الصفحة (الافتراضي: 1) |
limit | int | عدد العناصر في الصفحة (الافتراضي: 20) |
task | سلسلة | تصفية حسب نوع المهمة |
الرد:
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
الحصول على مجموعة البيانات
GET /api/datasets/{datasetId}
إنشاء مجموعة بيانات
POST /api/datasets
النص:
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
حذف مجموعة البيانات
DELETE /api/datasets/{datasetId}
تصدير مجموعة البيانات
POST /api/datasets/{datasetId}/export
يعيد عنوان URL لتنزيل تنسيق NDJSON.
واجهة برمجة التطبيقات للمشاريع
قائمة المشاريع
GET /api/projects
احصل على المشروع
GET /api/projects/{projectId}
إنشاء مشروع
POST /api/projects
النص:
{
"name": "my-project",
"description": "Detection experiments"
}
حذف المشروع
DELETE /api/projects/{projectId}
نماذج API
قائمة النماذج
GET /api/models
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
projectId | سلسلة | تصفية حسب المشروع |
task | سلسلة | تصفية حسب نوع المهمة |
احصل على النموذج
GET /api/models/{modelId}
تحميل النموذج
POST /api/models
نموذج متعدد الأجزاء:
| الميدان | النوع | الوصف |
|---|---|---|
file | ملف | نموذج ملف .pt |
projectId | سلسلة | المشروع المستهدف |
name | سلسلة | اسم الطراز |
حذف النموذج
DELETE /api/models/{modelId}
تنزيل النموذج
GET /api/models/{modelId}/files
إرجاع عناوين URL للتنزيل الموقعة لملفات النماذج.
تشغيل الاستدلال
POST /api/models/{modelId}/predict
نموذج متعدد الأجزاء:
| الميدان | النوع | الوصف |
|---|---|---|
file | ملف | ملف صورة |
conf | عائم | عتبة الثقة |
iou | عائم | IoU |
الرد:
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
تدريب API
ابدأ التدريب
POST /api/training/start
النص:
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
احصل على حالة التدريب
GET /api/models/{modelId}/training
إلغاء التدريب
DELETE /api/models/{modelId}/training
واجهة برمجة التطبيقات للنشر
قائمة عمليات النشر
GET /api/deployments
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
modelId | سلسلة | تصفية حسب الطراز |
إنشاء النشر
POST /api/deployments
النص:
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
الحصول على النشر
GET /api/deployments/{deploymentId}
بدء النشر
POST /api/deployments/{deploymentId}/start
إيقاف النشر
POST /api/deployments/{deploymentId}/stop
حذف النشر
DELETE /api/deployments/{deploymentId}
احصل على المقاييس
GET /api/deployments/{deploymentId}/metrics
الحصول على السجلات
GET /api/deployments/{deploymentId}/logs
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
severity | سلسلة | معلومات، تحذير، خطأ |
limit | int | عدد المشاركات |
تصدير واجهة برمجة التطبيقات
قائمة الصادرات
GET /api/exports
إنشاء تصدير
POST /api/exports
النص:
{
"modelId": "model_abc123",
"format": "onnx"
}
التنسيقات المدعومة:
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
الحصول على حالة التصدير
GET /api/exports/{exportId}
واجهة برمجة التطبيقات للنشاط
تتبع وإدارة أحداث النشاط لحسابك.
قائمة الأنشطة
GET /api/activity
معلمات الاستعلام:
| المعلمة | النوع | الوصف |
|---|---|---|
startDate | سلسلة | تصفية حسب التاريخ (ISO) |
endDate | سلسلة | تصفية حتى تاريخ (ISO) |
search | سلسلة | البحث في رسائل الأحداث |
تمكين الأحداث المرئية
POST /api/activity/mark-seen
أرشيف الأحداث
POST /api/activity/archive
واجهة برمجة تطبيقات القمامة
إدارة الموارد المحذوفة مؤقتًا (الاحتفاظ بها لمدة 30 يومًا).
قائمة المهملات
GET /api/trash
استعادة العنصر
POST /api/trash
النص:
{
"itemId": "item_abc123",
"type": "dataset"
}
إفراغ سلة المهملات
POST /api/trash/empty
يحذف بشكل دائم جميع العناصر الموجودة في سلة المهملات.
واجهة برمجة التطبيقات للفوترة
إدارة الائتمانات والاشتراكات.
احصل على التوازن
GET /api/billing/balance
الرد:
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
ميكرو-دولار أمريكي
جميع المبالغ بالدولار الأمريكي الصغير (1,000,000 = 1.00 دولار) من أجل دقة المحاسبة.
الحصول على ملخص الاستخدام
GET /api/billing/usage-summary
يعرض تفاصيل الخطة والحدود ومقاييس الاستخدام.
إنشاء جلسة دفع
POST /api/billing/checkout-session
النص:
{
"amount": 25
}
ينشئ جلسة دفع Stripe لشراء بالائتمان (5 دولارات - 1000 دولار).
إنشاء عملية دفع الاشتراك
POST /api/billing/subscription-checkout
ينشئ جلسة دفع Stripe للاشتراك Pro.
إنشاء جلسة بوابة
POST /api/billing/portal-session
إرجاع عنوان URL إلى بوابة الفوترة Stripe لإدارة الاشتراكات.
الحصول على سجل الدفعات
GET /api/billing/payments
يعرض قائمة معاملات الدفع من Stripe.
واجهة برمجة تطبيقات التخزين
الحصول على معلومات التخزين
GET /api/storage
الرد:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
واجهة برمجة تطبيقات اللائحة العامة لحماية البيانات
نقاط نهاية الامتثال للائحة العامة لحماية البيانات (GDPR) لتصدير البيانات وحذفها.
تصدير/حذف بيانات الحساب
POST /api/gdpr
النص:
{
"action": "export"
}
| العمل | الوصف |
|---|---|
export | تنزيل جميع بيانات الحساب |
delete | حذف الحساب وجميع البيانات |
إجراء لا رجعة فيه
حذف الحساب نهائي ولا يمكن التراجع عنه. سيتم حذف جميع البيانات والنماذج وعمليات النشر.
مفاتيح API API
قائمة مفاتيح API
GET /api/api-keys
إنشاء مفتاح API
POST /api/api-keys
النص:
{
"name": "training-server",
"scopes": ["training", "models"]
}
حذف مفتاح API
DELETE /api/api-keys/{keyId}
رموز الأخطاء
| الرمز | الوصف |
|---|---|
UNAUTHORIZED | مفتاح API غير صالح أو مفقود |
FORBIDDEN | أذونات غير كافية |
NOT_FOUND | لم يتم العثور على المورد |
VALIDATION_ERROR | بيانات طلب غير صالحة |
RATE_LIMITED | طلبات كثيرة جدًا |
INTERNAL_ERROR | خطأ في الخادم |
دعم SDK
لتسهيل عملية التكامل، استخدمPython Ultralytics Python .
متطلبات إصدار الحزمة
يتطلب تكامل المنصة ultralytics>=8.4.0. الإصدارات الأقدم لن تعمل مع المنصة.
pip install "ultralytics>=8.4.0"
import os
from ultralytics import YOLO
# Set API key
os.environ["ULTRALYTICS_API_KEY"] = "ul_your_key"
# Train with Platform integration
model = YOLO("yolo11n.pt")
model.train(data="ul://username/datasets/my-dataset", project="username/my-project", name="experiment-1", epochs=100)
Webhooks
تقوم Webhooks بإخطار الخادم الخاص بك بأحداث المنصة:
| حدث | الوصف |
|---|---|
training.started | بدء التدريب الوظيفي |
training.epoch | تم الانتهاء من العصر |
training.completed | انتهى التدريب |
training.failed | فشل التدريب |
export.completed | جاهز للتصدير |
إعداد Webhook متاح في خطط Enterprise.
الأسئلة الشائعة
كيف أقوم بترقيم صفحات النتائج الكبيرة؟
استخدم page و limit المعلمات:
GET /api/datasets?page=2 &
limit=50
هل يمكنني استخدام واجهة برمجة التطبيقات (API) بدون SDK؟
نعم، جميع الوظائف متاحة عبر REST. SDK عبارة عن غلاف ملائم.
هل توجد مكتبات عملاء API؟
حالياً، استخدمPython Ultralytics Python أو قم بإرسال طلبات HTTP مباشرة. ومن المقرر توفير مكتبات عملاء رسمية للغات أخرى.
كيف أتعامل مع حدود الأسعار؟
تنفيذ التراجع الأسي:
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")