مرجع REST API
منصة Ultralytics توفر واجهة 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 | عدد صحيح | رقم الصفحة (افتراضي: 1) |
limit | عدد صحيح | العناصر في كل صفحة (افتراضي: 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/datasets/{datasetId}/models
يعرض قائمة بالنماذج التي تم تدريبها باستخدام هذه المجموعة من البيانات، ويوضح العلاقة بين مجموعات البيانات والنماذج التي أنتجتها.
الاستجابة:
{
"success": true,
"data": [
{
"id": "model_abc123",
"name": "experiment-1",
"projectId": "project_xyz",
"trainedAt": "2024-01-15T10:00:00Z",
"metrics": {
"mAP50": 0.85,
"mAP50-95": 0.72
}
}
]
}
واجهة برمجة تطبيقات المشاريع
سرد المشاريع
GET /api/projects
الحصول على مشروع
GET /api/projects/{projectId}
إنشاء مشروع
POST /api/projects
الجسم:
{
"name": "my-project",
"description": "Detection experiments"
}
حذف المشروع
DELETE /api/projects/{projectId}
واجهة برمجة تطبيقات النماذج
سرد النماذج
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 }
}
]
}
واجهة برمجة تطبيقات التدريب
ابدأ التدريب
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 | عدد صحيح | عدد الإدخالات |
واجهة برمجة تطبيقات التصدير
سرد عمليات التصدير
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}
واجهة برمجة تطبيقات النشاط
track وإدارة أحداث النشاط لحسابك.
سرد النشاط
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 للاشتراك الاحترافي.
إنشاء جلسة بوابة
POST /api/billing/portal-session
يعرض رابط بوابة فوترة Stripe لإدارة الاشتراكات.
الحصول على سجل الدفع
GET /api/billing/payments
يعرض قائمة بمعاملات الدفع من Stripe.
واجهة برمجة تطبيقات التخزين
الحصول على معلومات التخزين
GET /api/storage
الاستجابة:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
واجهة برمجة تطبيقات GDPR
نقاط نهاية الامتثال للائحة العامة لحماية البيانات (GDPR) لتصدير البيانات وحذفها.
تصدير/حذف بيانات الحساب
POST /api/gdpr
الجسم:
{
"action": "export"
}
| الإجراء | الوصف |
|---|---|
export | تنزيل جميع بيانات الحساب |
delete | حذف الحساب وجميع البيانات |
إجراء لا رجعة فيه
حذف الحساب دائم ولا يمكن التراجع عنه. سيتم حذف جميع البيانات والنماذج وعمليات النشر.
واجهة برمجة تطبيقات مفاتيح 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 | خطأ في الخادم |
Python
لتسهيل التكامل، استخدم حزمة Ultralytics python.
التثبيت والإعداد
pip install ultralytics
تحقق من التثبيت:
yolo check
متطلبات إصدار الحزمة
يتطلب دمج المنصة ultralytics>=8.4.0. الإصدارات الأقدم لن تعمل مع المنصة.
المصادقة
الطريقة 1: CLI (موصى به)
yolo settings api_key=YOUR_API_KEY
الطريقة 2: متغير البيئة
export ULTRALYTICS_API_KEY=YOUR_API_KEY
الطريقة 3: في الكود
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}/{resource-type}/{name}
Examples:
ul://john/datasets/coco-custom # Dataset
ul://john/my-project # Project
ul://john/my-project/exp-1 # Specific model
ul://ultralytics/yolo26/yolo26n # Official model
الدفع إلى المنصة
إرسال النتائج إلى مشروع منصة:
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 خادمك بأحداث المنصة:
| الحدث | الوصف |
|---|---|
training.started | بدء مهمة التدريب |
training.epoch | اكتمل العصر |
training.completed | اكتمل التدريب |
training.failed | فشل التدريب |
export.completed | التصدير جاهز |
إعداد Webhook متاح في خطط المؤسسات.
الأسئلة الشائعة
كيف يمكنني تقسيم النتائج الكبيرة إلى صفحات؟
استخدم page و limit المعلمات:
GET /api/datasets?page=2 &
limit=50
هل يمكنني استخدام واجهة برمجة التطبيقات (API) بدون حزمة تطوير البرامج (SDK)؟
نعم، جميع الوظائف متاحة عبر REST. الـ SDK هو غلاف تسهيلي.
هل توجد مكتبات عميل لواجهة برمجة التطبيقات (API)؟
حاليًا، استخدم حزمة 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")