تخطي إلى المحتوى

مرجع 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

  1. انتقل إلى الإعدادات > مفاتيح API
  2. انقر على إنشاء مفتاح
  3. انسخ المفتاح الذي تم إنشاؤه

راجع مفاتيح 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

حدود المعدل

الخطةالطلبات/الدقيقةالطلبات/اليوم
مجاني601,000
احترافي30050,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")


📅 تم الإنشاء قبل 20 أيام ✏️ تم التحديث قبل 14 أيام
glenn-jocherLaughing-q

تعليقات