مرجع REST API

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

نظرة عامة على واجهة برمجة تطبيقات Ultralytics Platform

بداية سريعة
# 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

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

راجع API Keys للحصول على تعليمات مفصلة.

ترويسة التفويض (Authorization Header)

قم بتضمين API key الخاص بك في جميع الطلبات:

Authorization: Bearer YOUR_API_KEY
تنسيق مفتاح API

تستخدم 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)
limitintعدد العناصر في كل صفحة (الافتراضي: 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)لامعرف النموذج لاستخدامه في الاستنتاج
confidencefloatلاعتبة الثقة (الافتراضي: 0.25)
ioufloatلاعتبة 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
offsetintإزاحة الترقيم الصفحي (الافتراضي: 0)
limitintعدد العناصر في كل صفحة (الافتراضي: 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)التصفية حسب اسم المستخدم
limitintعدد العناصر في كل صفحة
ownerسلسلة نصية (string)اسم مستخدم مالك مساحة العمل

الحصول على مشروع

GET /api/projects/{projectId}

إنشاء مشروع

POST /api/projects
curl -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)لامعرفات النماذج مفصولة بفواصل
limitintلاالحد الأقصى للنتائج (الافتراضي 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)
conffloatعتبة الثقة (الافتراضي: 0.25)
ioufloatحد IoU (الافتراضي: 0.7)
imgszintحجم الصورة بالبكسل (الافتراضي: 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/start
curl -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 اختياري. راجع وثائق نقاط النهاية.

دعم مفتاح API حسب المسار

فقط 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)تصفية حسب الحالة
limitintالحد الأقصى للنتائج (الافتراضي: 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)
conffloatعتبة الثقة (الافتراضي: 0.25)
ioufloatحد IoU (الافتراضي: 0.7)
imgszintحجم الصورة بالبكسل (الافتراضي: 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
limitintعدد الإدخالات (الافتراضي: 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)تصفية حسب الحالة
limitintالحد الأقصى للنتائج (الافتراضي: 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)القيمةحالة الاستخدام
ONNXonnxالاستدلال عبر المنصات
TorchScripttorchscriptنشر PyTorch
OpenVINOopenvinoأجهزة Intel
TensorRTengineتحسين NVIDIA GPU
CoreMLcoremlأجهزة Apple
TFLitetfliteالهواتف المحمولة والأنظمة المدمجة
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbTensorFlow frozen graph
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnالشبكات العصبية للمحمول
Edge TPUedgetpuأجهزة Google Coral
TF.jstfjsالاستدلال في المتصفح
MNNmnnالاستدلال للمحمول من Alibaba
RKNNrknnوحدة NPU من نوع Rockchip
IMXimxمستشعر Sony IMX500
Axeleraaxeleraمسرعات Axelera AI
ExecuTorchexecutorchبيئة تشغيل Meta ExecuTorch

الحصول على حالة التصدير

GET /api/exports/{exportId}

إلغاء التصدير

DELETE /api/exports/{exportId}

تتبع تحميل التصدير

POST /api/exports/{exportId}/track-download

API النشاط

عرض موجز للإجراءات الأخيرة على حسابك — عمليات التدريب، والتحميلات، والمزيد. انظر توثيق النشاط.

جلسة متصفح فقط

مسارات النشاط مدعومة بطلبات مصادق عليها عبر متصفح من واجهة المستخدم الخاصة بالمنصة. هذه المسارات غير مكشوفة كـ API عام، ولا تقبل المصادقة عبر API-key، وأشكال المسارات أدناه موثقة كمرجع فقط. استخدم موجز النشاط في واجهة المستخدم لعرض الأحداث أو تمييزها أو أرشفتها.

قائمة النشاط

GET /api/activity

معاملات الاستعلام (Query Parameters):

المعاملالنوع (Type)الوصف (Description)
limitintحجم الصفحة (الافتراضي: 20، الحد الأقصى: 100)
pageintرقم الصفحة (الافتراضي: 1)
archivedbooleantrue لعلامة تبويب الأرشيف، 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
pageintرقم الصفحة (الافتراضي: 1)
limitintالعناصر لكل صفحة (الافتراضي: 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)
amountnumberنعمالمبلغ بالدولار ($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
totalBytesintحجم الملف بالبايت

الاستجابة:

{
    "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
offsetintإزاحة الترقيم (الافتراضي: 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)اسم المستخدم للتحقق
suggestboolاختياري: 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)
UNAUTHORIZED401مفتاح API غير صالح أو مفقود
FORBIDDEN403أذونات غير كافية
NOT_FOUND404المورد غير موجود
VALIDATION_ERROR400بيانات طلب غير صالحة
RATE_LIMITED429عدد كبير جداً من الطلبات
INTERNAL_ERROR500خطأ في الخادم

تكامل 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) للبحث بالاسم أو التصفية حسب المشروع.

التعليقات