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

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

  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

معلمات الاستعلام:

المعلمةالنوعالوصف
pageintرقم الصفحة (الافتراضي: 1)
limitintعدد العناصر في الصفحة (الافتراضي: 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سلسلةمعلومات، تحذير، خطأ
limitintعدد المشاركات

تصدير واجهة برمجة التطبيقات

قائمة الصادرات

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")


📅 تم إنشاؤه منذ 0 أيام ✏️ تم التحديث منذ 0 أيام
glenn-jocher

تعليقات