Tham chiếu REST API#
Ultralytics Platform cung cấp REST API toàn diện để truy cập lập trình vào các tập dữ liệu, mô hình, quá trình huấn luyện và triển khai.

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsKhám phá tài liệu tham khảo API tương tác đầy đủ trong tài liệu API Ultralytics Platform.
Tổng quan về API#
API được tổ chức xung quanh các tài nguyên nền tảng cốt lõi:
graph LR
A[API Key]:::start --> B[Datasets]:::proc
A --> C[Projects]:::proc
A --> D[Models]:::proc
A --> E[Deployments]:::proc
B -->|train on| D
C -->|contains| D
D -->|deploy to| E
D -->|export| F[Exports]:::proc
B -->|auto-annotate| B
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff| Tài nguyên | Mô tả | Các thao tác chính |
|---|---|---|
| Tập dữ liệu | Các bộ sưu tập hình ảnh được gán nhãn | CRUD, hình ảnh, nhãn, xuất, phiên bản, sao chép (clone) |
| Dự án | Không gian làm việc huấn luyện | CRUD, sao chép (clone), biểu tượng |
| Models | Các checkpoint đã huấn luyện | CRUD, dự đoán (predict), tải xuống, sao chép (clone), xuất |
| Triển khai | Các endpoint suy luận chuyên dụng | CRUD, bắt đầu/dừng, số liệu, nhật ký (logs), trạng thái (health) |
| Xuất bản | Các tác vụ chuyển đổi định dạng | Tạo, trạng thái, tải xuống |
| Huấn luyện | Các tác vụ huấn luyện trên GPU đám mây | Bắt đầu, trạng thái, hủy |
| Thanh toán | Tín dụng và cách sử dụng | Số dư, mức sử dụng, các giao dịch |
| Nhóm | Cộng tác trong không gian làm việc | Không gian làm việc (Workspaces), thành viên, vai trò |
Xác thực#
Các Resource API sử dụng xác thực API-key, bao gồm quản lý lớp (class) tập dữ liệu và phân chia (split), nhân bản, huấn luyện, xuất dữ liệu, triển khai và các truy vấn tài khoản được hỗ trợ. Các endpoint công khai hỗ trợ truy cập ẩn danh nếu có lưu ý. Các lộ trình ứng dụng chỉ dành cho trình duyệt sẽ bị loại trừ.
Lấy API Key#
- Chuyển đến
Settings>API Keys - Nhấp
Create Key - Sao chép key đã tạo
Xem API Keys để biết hướng dẫn chi tiết.
Tiêu đề ủy quyền (Authorization Header)#
Bao gồm API key của bạn trong tất cả các yêu cầu:
Authorization: Bearer YOUR_API_KEYAPI key sử dụng định dạng ul_ theo sau là 40 ký tự hex. Hãy giữ bí mật khóa của bạn -- không bao giờ commit nó lên hệ thống quản lý mã nguồn hoặc chia sẻ công khai.
Ví dụ#
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsBase URL#
Tất cả các API endpoint sử dụng:
https://platform.ultralytics.com/apiGiới hạn tốc độ (Rate Limits)#
API áp dụng giới hạn cửa sổ trượt (sliding-window) được hỗ trợ bởi Upstash Redis cho mỗi API key. Mỗi tuyến đường (route) sử dụng danh mục tương ứng dưới đây.
Khi bị giới hạn tốc độ, API trả về 429 kèm theo siêu dữ liệu thử lại:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000ZGiới hạn theo API Key#
Các giới hạn tốc độ được áp dụng tự động dựa trên endpoint đang được gọi. Các tác vụ tốn kém có giới hạn nghiêm ngặt hơn để ngăn chặn lạm dụng, trong khi các tác vụ CRUD tiêu chuẩn chia sẻ một hạn mức mặc định hào phóng:
| Danh mục | Giới hạn | Áp dụng cho |
|---|---|---|
| Mặc định | 100 yêu cầu/phút | Các tuyến đường không được gán vào danh mục nào bên dưới |
| Training | 10 yêu cầu/phút | Bắt đầu huấn luyện trên đám mây |
| Tải lên (Upload) | 10 yêu cầu/phút | URL tải lên có chữ ký, hoàn tất tải lên và nạp tập dữ liệu |
| Predict | 20 yêu cầu/phút | Inference mô hình và triển khai thông qua các tuyến đường Platform API |
| Xuất | 20 yêu cầu/phút | Các tuyến đường xuất mô hình và xuất/phiên bản tập dữ liệu |
| Tải xuống (Download) | 30 yêu cầu/phút | Tải xuống tệp mô hình |
| Mutation | 10 yêu cầu/phút | Tạo nhóm, thay đổi tích hợp lưu trữ, API key, thành viên, lời mời và khởi động/dừng triển khai |
| Thanh toán | 5 yêu cầu/phút | Các tuyến đường tự động nạp tiền và thanh toán gói đăng ký |
| Hydrate | 20 yêu cầu/phút | Hydrate một tập hợp hình ảnh tập dữ liệu đã chọn |
| Clustering | 10 yêu cầu/phút | Phân cụm hình ảnh tập dữ liệu |
Mỗi danh mục có một bộ đếm độc lập theo mỗi API key. Ví dụ, thực hiện 20 yêu cầu dự đoán không ảnh hưởng đến hạn mức mặc định 100 yêu cầu/phút của bạn.
Endpoint chuyên dụng (Không giới hạn)#
Các endpoint chuyên dụng không chịu giới hạn tốc độ Platform API-key khi bạn gọi trực tiếp URL của endpoint (ví dụ: https://predict-abc123.run.app/predict). Thông lượng khi đó phụ thuộc vào cấu hình dịch vụ đã triển khai.
Khi bạn nhận được mã trạng thái 429, hãy đợi Retry-After (hoặc cho đến X-RateLimit-Reset) trước khi thử lại. Xem FAQ giới hạn tốc độ để biết cách triển khai độ trễ mũ (exponential backoff).
Định dạng phản hồi#
Phản hồi thành công#
Các phản hồi trả về JSON với các trường cụ thể cho từng tài nguyên:
{
"datasets": [...],
"total": 100
}Phản hồi lỗi#
{
"error": "Dataset not found"
}| Mã trạng thái HTTP | Ý nghĩa |
|---|---|
200 | Thành công |
201 | Đã tạo |
400 | Yêu cầu không hợp lệ |
401 | Yêu cầu xác thực |
403 | Không đủ quyền hạn |
404 | Không tìm thấy tài nguyên |
409 | Xung đột (trùng lặp) |
429 | Đã vượt quá giới hạn tốc độ (rate limit) |
500 | Lỗi máy chủ |
Datasets API#
Tạo, duyệt và quản lý các tập dữ liệu hình ảnh được gán nhãn để huấn luyện các mô hình YOLO. Xem Tài liệu tập dữ liệu.
Liệt kê Datasets#
GET /api/datasetsTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
username | string | Lọc theo username |
limit | int | Số lượng mục mỗi trang (mặc định: 1000, tối đa: 1000) |
owner | string | Username của chủ sở hữu không gian làm việc (workspace owner) |
includeImageUrls | boolean | Bao gồm các URL hình ảnh mẫu kích thước đầy đủ có chữ ký (mặc định: false) |
includeSamples | boolean | Đặt false để bỏ qua các hình ảnh mẫu và giảm kích thước phản hồi. |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"Phản hồi (Response):
{
"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"
}Lấy Dataset#
GET /api/datasets/{datasetId}Trả về thông tin chi tiết về dataset bao gồm tên lớp, số lượng phân chia và các thuộc tính khác do Platform quản lý. Metadata tùy chỉnh được tải riêng từ endpoint metadata bên dưới.
Truyền username khi {datasetId} là một slug tập dữ liệu thay vì một ID.
Tạo Dataset#
POST /api/datasetsBody:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"metadata": { "location": "factory-1", "reviewed": true },
"visibility": "private",
"classNames": ["person", "car"]
}Giá trị task hợp lệ: detect, segment, semantic, classify, pose, và obb.
Phản hồi (Response):
{
"datasetId": "dataset_abc123",
"slug": "my-dataset",
"region": "us"
}Cập nhật Dataset#
PATCH /api/datasets/{datasetId}Body (cập nhật một phần):
{
"name": "Updated Name",
"description": "New description",
"metadata": { "location": "factory-2", "reviewed": true },
"visibility": "public"
}Gửi một đối tượng metadata trống ({}) để xóa metadata tùy chỉnh. Đối tượng metadata đã tuần tự hóa bị giới hạn ở 500.000 ký tự và mỗi khóa cấp cao nhất bị giới hạn ở 128 ký tự.
Lấy Metadata của Dataset#
GET /api/datasets/{datasetId}/metadataTrả về đối tượng metadata tùy chỉnh và tập hợp các cặp trường/giá trị do Ultralytics quản lý ở chế độ chỉ đọc đã được tuyển chọn. Metadata tùy chỉnh bị chủ đích bỏ qua khỏi các payload dataset thông thường. Cần phải xác thực và có quyền truy cập workspace của dataset.
Biểu tượng tập dữ liệu#
POST /api/datasets/{datasetId}/icon
DELETE /api/datasets/{datasetId}/iconTải lên một biểu tượng WebP có kích thước tối đa 5 MB dưới dạng trường form multipart image, hoặc xóa biểu tượng hiện tại.
Xóa Dataset#
DELETE /api/datasets/{datasetId}Xóa mềm tập dữ liệu (chuyển vào thùng rác, có thể khôi phục trong vòng 30 ngày).
Sao chép (Clone) Dataset#
POST /api/datasets/{datasetId}/cloneTạo một bản sao của tập dữ liệu công khai, do bạn sở hữu hoặc tập dữ liệu không gian làm việc có thể chỉnh sửa, cùng với tất cả hình ảnh và nhãn.
Phần thân tùy chọn (tất cả các trường đều là tùy chọn):
{
"name": "cloned-dataset",
"slug": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"license": "AGPL-3.0",
"owner": "team-username"
}Xuất Dataset#
GET /api/datasets/{datasetId}/exportTrả về phản hồi JSON với một URL tải xuống được ký (signed download URL) cho bản xuất dataset mới nhất.
Tham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
v | integer | Số phiên bản (bắt đầu từ 1). Nếu bỏ qua, trả về bản xuất có thể thay đổi mới nhất, tái sử dụng bản đó khi tập dữ liệu không thay đổi. |
Phản hồi (Response):
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}Tạo Phiên bản Dataset#
POST /api/datasets/{datasetId}/exportTạo một bản chụp phiên bản được đánh số mới của tập dữ liệu. Thao tác này yêu cầu quyền Editor trở lên. Phiên bản này ghi lại số lượng hình ảnh, số lượng lớp, số lượng chú thích và phân phối tập chia hiện tại, sau đó tạo và lưu trữ một bản xuất NDJSON bất biến.
Request Body:
{
"description": "Added 500 training images"
}Tất cả các trường đều là tùy chọn. Trường description là nhãn do người dùng cung cấp cho phiên bản.
Phản hồi (Response):
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}Cập nhật Mô tả Phiên bản#
PATCH /api/datasets/{datasetId}/exportCập nhật mô tả của một phiên bản hiện có. Thao tác này yêu cầu quyền Editor trở lên.
Request Body:
{
"version": 2,
"description": "Fixed mislabeled classes"
}Phản hồi (Response):
{
"ok": true
}Khôi phục phiên bản tập dữ liệu#
POST /api/datasets/{datasetId}/restoreXây dựng lại hình ảnh, chú thích và các lớp của tập dữ liệu từ một phiên bản đã lưu mà không cần sao chép byte hình ảnh.
{
"version": 2
}Lấy Thống kê Lớp (Class Statistics)#
GET /api/datasets/{datasetId}/class-statsTrả về phân bổ lớp, bản đồ nhiệt vị trí (location heatmap) và thống kê kích thước. Kết quả được lưu cache tối đa 5 phút.
Phản hồi (Response):
{
"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
}Quản lý Lớp (Classes)#
Hợp nhất các lớp (gán lại các annotation từ các lớp nguồn sang một lớp đích, sau đó xóa các lớp nguồn):
POST /api/datasets/{datasetId}/classes/merge{
"sourceClassIds": [2, 4],
"targetClassId": 1
}ID lớp là theo vị trí, do đó việc hợp nhất không phải là lũy đẳng (idempotent). Hãy tìm nạp lại tập dữ liệu trước khi thử lại.
Xóa các lớp:
POST /api/datasets/{datasetId}/classes/delete{
"classIds": [2, 4]
}Phân bổ lại Tập dữ liệu (Splits)#
POST /api/datasets/{datasetId}/splits/redistributePhân bổ lại ngẫu nhiên hình ảnh giữa các phân vùng train, validation và test. Tổng phần trăm phải bằng 100.
{
"train": 80,
"val": 20,
"test": 0
}Embeddings tập dữ liệu#
GET /api/datasets/{datasetId}/embeddings
POST /api/datasets/{datasetId}/embeddings
DELETE /api/datasets/{datasetId}/embeddingsGET trả về tóm tắt phân tích UMAP hiện tại và trạng thái công việc đang hoạt động; POST đưa công việc phân tích embeddings vào hàng đợi; DELETE hủy công việc đang hoạt động.
Phân cụm hình ảnh#
GET /api/datasets/{datasetId}/images/clusteringTrả về bố cục UMAP 2D và metadata cho mỗi hình ảnh trong chế độ xem phân tán (paged và rate-limited).
Lấy các Model đã huấn luyện trên Dataset#
GET /api/datasets/{datasetId}/modelsTrả về các model đã được huấn luyện sử dụng dataset này.
Phản hồi (Response):
{
"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
}Tự động gán nhãn Dataset (Auto-Annotate)#
POST /api/datasets/{datasetId}/predictChạy inference YOLO trên các hình ảnh của dataset để tự động tạo chú thích. Sử dụng một model đã chọn để dự đoán nhãn cho các hình ảnh chưa được gán nhãn.
Body:
| Trường (Field) | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
imageHash | string | Có | Hash của hình ảnh cần gán nhãn |
modelId | string | Không | Mô hình dùng để suy luận, dưới dạng URI ul:// (ví dụ: ul://username/project/model). Nếu bỏ qua, mô hình mặc định theo tác vụ của tập dữ liệu sẽ được sử dụng. |
confidence | float | Không | Ngưỡng tin cậy (default: 0.25) |
iou | float | Không | Ngưỡng IoU (default: 0.7) |
Nhập liệu Dataset (Ingest)#
POST /api/datasets/ingestTạo một tác vụ nạp (ingest) dữ liệu cho một tập dữ liệu hiện có. Tập dữ liệu đích luôn được truyền dưới dạng datasetId trong phần thân JSON, không phải trong đường dẫn URL.
Phần thân yêu cầu datasetId cộng với chính xác một trong hai sessionId (phiên bản tải lên của kho lưu trữ đã tải lên) hoặc sourceUrl (URL ZIP, TAR, TAR.GZ, TGZ, hoặc NDJSON từ xa). Thêm targetSplit (train, val, hoặc test) tùy chọn để ghi đè cấu trúc chia tách của kho lưu trữ. Để đính kèm siêu dữ liệu tùy chỉnh, hãy sử dụng imageMetadata, được khóa theo đường dẫn tương đối trong kho lưu trữ chính xác của từng hình ảnh hoặc giá trị NDJSON file.
Đối với các kho lưu trữ đã tải lên, phiên bản tải lên đã được liên kết với tập dữ liệu bằng assetId được truyền tới POST /api/upload/signed-url; quá trình nạp xác thực rằng assetId khớp với datasetId trong phần thân. Các mục classMapping tùy chọn ánh xạ từng tên lớp đến một chỉ mục lớp bắt đầu từ 0 hiện có, một tên lớp để tái sử dụng hoặc tạo mới, hoặc null để bỏ qua lớp đó. Đối với các tệp nhập từ xa sourceUrl, hãy tạo tập dữ liệu trước, sau đó truyền datasetId của nó để nạp.
Phần thân (tệp lưu trữ đã tải lên):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"targetSplit": "train"
}Phần thân (một hoặc nhiều hình ảnh kèm theo siêu dữ liệu):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"imageMetadata": {
"airbus-wing.jpg": { "aircraft": { "family": "A350" }, "inspectionStatus": "reviewed" },
"images/tail.jpg": { "aircraft": { "family": "A320" }, "inspectionSeverity": 2 }
}
}Hình ảnh cục bộ sử dụng luồng tải lên kho lưu trữ hiện có, cho dù kho lưu trữ chứa một hay nhiều hình ảnh. Khóa phải khớp với đường dẫn đã chuẩn hóa bên trong kho lưu trữ, bao gồm cả các thư mục. Đối với các tệp nhập NDJSON, mỗi bản ghi hình ảnh có thể chứa đối tượng metadata của riêng nó. metadata cục bộ của bản ghi được ưu tiên hơn mục imageMetadata khớp.
Siêu dữ liệu ở định dạng JSON và hỗ trợ các giá trị lồng nhau. Đường dẫn kho lưu trữ bị giới hạn ở 1.024 ký tự, khóa siêu dữ liệu cấp cao nhất ở 128 ký tự và mỗi đối tượng siêu dữ liệu ở 500.000 ký tự được tuần tự hóa. Bản đồ imageMetadata hoàn chỉnh, hoặc siêu dữ liệu hiệu quả kết hợp qua một lần nhập NDJSON, cũng bị giới hạn ở 500.000 ký tự được tuần tự hóa. Các ràng buộc này được bao gồm trong lược đồ OpenAPI tương tác.
Tải lên một hình ảnh kèm theo siêu dữ liệu sử dụng Python
Đoạn mã tương tự xử lý một nhóm hình ảnh: thêm nhiều tệp hơn vào tệp ZIP và các mục tương ứng vào imageMetadata.
import io
import zipfile
from pathlib import Path
import requests
api = "https://platform.ultralytics.com/api"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
dataset_id = "dataset_abc123"
image_path = Path("airbus-wing.jpg")
archive = io.BytesIO()
with zipfile.ZipFile(archive, "w", zipfile.ZIP_DEFLATED) as zf:
zf.write(image_path, image_path.name)
data = archive.getvalue()
signed = requests.post(
f"{api}/upload/signed-url",
headers=headers,
json={
"assetType": "datasets",
"assetId": dataset_id,
"filename": "images.zip",
"contentType": "application/zip",
"totalBytes": len(data),
},
)
signed.raise_for_status()
upload = signed.json()
requests.put(upload["uploadUrl"], headers={"Content-Type": "application/zip"}, data=data).raise_for_status()
requests.post(
f"{api}/upload/complete",
headers=headers,
json={"sessionId": upload["sessionId"]},
).raise_for_status()
ingest = requests.post(
f"{api}/datasets/ingest",
headers=headers,
json={
"datasetId": dataset_id,
"sessionId": upload["sessionId"],
"imageMetadata": {
"airbus-wing.jpg": {
"aircraft": {"family": "A350", "section": "wing"},
"inspectionStatus": "reviewed",
}
},
},
)
ingest.raise_for_status()
print(ingest.json())Phần thân (tệp lưu trữ từ xa hoặc NDJSON):
{
"datasetId": "dataset_abc123",
"sourceUrl": "https://example.com/my-dataset.zip"
}Phần thân (ingest sau, nhập nhãn):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"classMapping": { "person": 0, "automobile": "car", "background": null }
}Lần nạp đầu tiên tự động tạo các lớp từ kho lưu trữ. Trong các lần nạp sau, các lớp kho lưu trữ bị bỏ qua khỏi classMapping trước tiên sẽ chuyển về việc khớp không phân biệt chữ hoa chữ thường với các lớp tập dữ liệu hiện có. Các nhãn bị bỏ qua chỉ đối với các lớp được ánh xạ rõ ràng tới null hoặc không có lớp hiện có nào khớp.
Phản hồi (Response):
{
"jobId": "job_abc123",
"datasetId": "dataset_abc123",
"status": "queued"
}graph LR
A[POST /api/datasets]:::start --> B[POST /api/upload/signed-url]:::proc
B --> C[Upload archive to signed URL]:::proc
C --> D[POST /api/upload/complete]:::proc
D --> E[POST /api/datasets/ingest]:::proc
E --> F[Process archive]:::proc
F --> G[Dataset ready]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffHình ảnh Dataset#
Liệt kê hình ảnh#
GET /api/datasets/{datasetId}/imagesTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
split | string | Lọc theo phân chia: train, val, test |
offset | int | Offset phân trang (default: 0) |
limit | int | Số lượng mục mỗi trang (default: 50, max: 5000) |
sort | string | Thứ tự sắp xếp: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (một số bị vô hiệu hóa đối với các tập dữ liệu >100k hình ảnh) |
hasLabel | string | Lọc theo trạng thái nhãn (true hoặc false) |
hasError | string | Lọc theo trạng thái lỗi (true hoặc false) |
search | string | Khớp chuỗi con trên tên tệp và khóa metadata tùy chỉnh, giá trị vô hướng và mục mảng (các giá trị nằm lồng trong đối tượng con sẽ không khớp); một chuỗi hex 32 ký tự là lệnh tra cứu mã băm ảnh chính xác |
classIds | string | Các ID lớp được phân tách bằng dấu phẩy; trả về các hình ảnh chứa bất kỳ lớp nào được chỉ định |
includeThumbnails | string | Bao gồm các URL hình thu nhỏ có chữ ký (mặc định: true) |
includeImageUrls | string | Bao gồm các URL hình ảnh đầy đủ có chữ ký (mặc định: false) |
Lấy hình ảnh đã chọn#
POST /api/datasets/{datasetId}/imagesTrả về cùng hình dạng hình ảnh cho tối đa 1.000 ID hình ảnh được cung cấp. Nó chấp nhận các điều khiển truy vấn URL và nhãn tương tự như thao tác liệt kê.
{
"imageIds": ["IMAGE_OBJECT_ID"]
}Lấy URL Hình ảnh Đã ký#
POST /api/datasets/{datasetId}/images/urlsLấy các URL đã ký cho một loạt các hash hình ảnh (để hiển thị trong trình duyệt).
Xóa hình ảnh#
DELETE /api/datasets/{datasetId}/images/{hash}Lấy Nhãn hình ảnh#
GET /api/datasets/{datasetId}/images/{hash}/labelsTrả về các chú thích và tên lớp cho một hình ảnh cụ thể.
Cập nhật Nhãn hình ảnh#
PUT /api/datasets/{datasetId}/images/{hash}/labelsBody:
{
"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] }
]
}Tọa độ nhãn sử dụng các giá trị đã chuẩn hóa của YOLO nằm trong khoảng từ 0 đến 1. Các hộp giới hạn sử dụng [x_center, y_center, width, height].
Nhãn phân đoạn sử dụng segments, một danh sách phẳng các đỉnh đa giác [x1, y1, x2, y2, ...].
Thao tác hình ảnh hàng loạt#
Di chuyển hình ảnh giữa các split (train/val/test) trong một dataset:
PATCH /api/datasets/{datasetId}/images/bulkXóa hình ảnh hàng loạt:
DELETE /api/datasets/{datasetId}/images/bulkProjects API#
Tổ chức các mô hình của bạn thành các dự án. Mỗi mô hình thuộc về một dự án. Xem Tài liệu dự án.
Liệt kê Project#
GET /api/projectsTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
username | string | Lọc theo username |
limit | int | Số lượng mục mỗi trang |
owner | string | Username của chủ sở hữu không gian làm việc (workspace owner) |
Lấy Project#
GET /api/projects/{projectId}Tạo Project#
POST /api/projectscurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "my-project",
"slug": "my-project",
"description": "Detection experiments",
"metadata": {"department": "manufacturing", "cost_center": "cv-01"}
}' \
https://platform.ultralytics.com/api/projectsCập nhật Project#
PATCH /api/projects/{projectId}Body (cập nhật một phần):
{
"metadata": { "department": "research", "program": "inspection" }
}Gửi một đối tượng metadata trống ({}) để xóa nó. Metadata của project sử dụng cùng các giới hạn 128 ký tự cho khóa cấp cao nhất và 500.000 ký tự cho đối tượng được tuần tự hóa giống như metadata của dataset.
Lấy Metadata của Project#
GET /api/projects/{projectId}/metadataTrả về đối tượng metadata tùy chỉnh và các cặp trường/giá trị do Ultralytics quản lý ở chế độ chỉ đọc. Cần phải xác thực và có quyền truy cập workspace của project.
Xóa Project#
DELETE /api/projects/{projectId}Xóa mềm dự án (được chuyển vào thùng rác).
Clone Dự án#
POST /api/projects/{projectId}/cloneSao chép một dự án không gian làm việc công cộng, sở hữu hoặc có thể chỉnh sửa cùng với các mô hình của nó vào tài khoản hoặc không gian làm việc của bạn. Phần thân JSON tùy chọn chấp nhận name, slug, description, visibility, license, và ghi đè đích owner.
Biểu tượng Project#
POST /api/projects/{projectId}/icon
DELETE /api/projects/{projectId}/iconTải lên một biểu tượng WebP có kích thước tối đa 5 MB dưới dạng trường form multipart image, hoặc xóa biểu tượng hiện tại.
API Models#
Quản lý các mô hình YOLO đã huấn luyện — xem các số liệu, tải xuống trọng số, chạy suy luận và xuất sang các định dạng khác. Xem Tài liệu mô hình.
Liệt kê Models#
GET /api/modelsTham số truy vấn (Query Parameters):
| Tham số | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
projectId | string | Có | ID dự án (bắt buộc) |
fields | string | Không | Tập hợp trường: summary, charts |
ids | string | Không | Các ID model được phân tách bằng dấu phẩy |
limit | int | Không | Số kết quả tối đa (mặc định 20, tối đa 100) |
Liệt kê các Model đã hoàn tất#
GET /api/models/completedTrả về tối đa 1.000 mô hình có trọng số khả dụng trên tất cả các dự án để huấn luyện và triển khai. Truyền owner cho một không gian làm việc.
Lấy Model#
GET /api/models/{modelId}Tạo Model#
POST /api/modelsJSON Body:
| Trường (Field) | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
projectId | string | Có | ID dự án đích |
slug | string | Không | URL slug (chữ cái thường, chữ số/dấu gạch ngang) |
name | string | Không | Tên hiển thị (tối đa 100 ký tự) |
description | string | Không | Mô tả model (tối đa 1000 ký tự) |
metadata | đối tượng | Không | Metadata JSON tùy chỉnh |
task | string | Không | Loại tác vụ (detect, segment, semantic, depth, pose, obb, classify) |
Để đính kèm trọng số .pt, hãy yêu cầu một URL tải lên có chữ ký với assetType: models và ID của mô hình này dưới dạng assetId, tải tệp lên, sau đó gọi POST /api/upload/complete với sessionId được trả về.
Cập nhật Model#
PATCH /api/models/{modelId}Body (cập nhật một phần):
{
"metadata": { "release": "candidate-3", "reviewed": true }
}Gửi một đối tượng metadata trống ({}) để xóa nó. Metadata tùy chỉnh của model tách biệt với thông tin model do quá trình huấn luyện sở hữu, thông tin chi tiết về môi trường và các đối số huấn luyện, đồng thời sử dụng các giới hạn về đối tượng được tuần tự hóa và khóa cấp cao nhất giống như metadata của dataset.
Lấy Metadata của Model#
GET /api/models/{modelId}/metadataTrả về đối tượng metadata tùy chỉnh và các cặp trường/giá trị do Ultralytics quản lý ở chế độ chỉ đọc. Cần phải xác thực và có quyền truy cập workspace của model.
Xóa Model#
DELETE /api/models/{modelId}Tải xuống các tệp Model#
GET /api/models/{modelId}/filesTrả về các URL tải xuống đã được ký cho các tệp model.
Sao chép (Clone) Model#
POST /api/models/{modelId}/cloneNhân bản một model công khai, do bạn sở hữu hoặc model không gian làm việc có thể chỉnh sửa sang một trong các dự án của bạn.
Body:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| Trường (Field) | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
targetProjectSlug | string | Có | Slug của dự án đích |
modelName | string | Không | Tên cho model đã sao chép |
description | string | Không | Mô tả model |
owner | string | Không | Tên người dùng nhóm (để sao chép trong workspace) |
Theo dõi lượt tải xuống#
POST /api/models/{modelId}/track-downloadTheo dõi phân tích lượt tải xuống model.
Chạy Inference#
POST /api/models/{modelId}/predictCác model công khai có thể được dự đoán mà không cần xác thực. Các model riêng tư và được chia sẻ yêu cầu một API key có quyền truy cập vào dự án gốc.
Multipart Form:
| Tham số | Loại | Mặc định | Phạm vi | Mô tả |
|---|---|---|---|---|
file | tệp | - | - | Tệp hình ảnh hoặc video (bắt buộc trừ khi source được thiết lập) |
conf | float | 0.25 | 0.01 – 1.0 | Ngưỡng độ tin cậy tối thiểu |
iou | float | 0.7 | 0.0 – 0.95 | Ngưỡng NMS IoU |
imgsz | int | 640 | 32 – 1280 | Kích thước hình ảnh đầu vào tính bằng pixel |
normalize | bool | false | - | Trả về tọa độ BBox dưới dạng 0 – 1 |
decimals | int | 5 | 0 – 10 | Độ chính xác thập phân cho các giá trị tọa độ |
source | string | - | - | URL hình ảnh hoặc chuỗi base64 (thay thế cho file) |
Cung cấp file hoặc source. Kích thước tải lên tối đa là 100 MB.
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/predictPhản hồi (Response):
Các phản hồi chứa shape, speed, results trên mỗi ảnh và dữ liệu bản đồ pixel dày đặc tùy chọn (bản đồ lớp ngữ nghĩa, hoặc bản đồ độ sâu trong đó depth = pixel × max / divisor — hệ số chia 255 cho bản đồ 8-bit mặc định, 65535 với bits=12|16), cộng với metadata chứa số lượng ảnh, thời gian thực thi hàm, tác vụ và các phiên bản dịch vụ. Các đường dẫn model nội bộ không bao giờ được trả về.
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}API Training#
Khởi chạy quá trình huấn luyện YOLO trên GPU đám mây (26 loại GPU từ RTX 2000 Ada đến B300) và theo dõi tiến trình theo thời gian thực. Xem Tài liệu huấn luyện trên đám mây.
graph LR
A[POST /training/start]:::start --> B[Job Created]:::proc
B --> C{Training}:::decide
C -->|progress| D[GET /models/id/training]:::proc
C -->|cancel| E[DELETE /models/id/training]:::error
C -->|complete| F[Model Ready]:::out
F --> G[Deploy or Export]:::proc
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef decide fill:#FF9800,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fffBắt đầu huấn luyện#
POST /api/training/startcurl -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/startCác loại GPU khả dụng bao gồm rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300, và các loại khác. Xem Huấn luyện trên đám mây để xem danh sách đầy đủ kèm theo giá cả.
Lấy trạng thái khả dụng của GPU#
GET /api/training/gpu-availabilityTrả về trạng thái kho GPU hiện tại (High, Medium, Low, hoặc null) được khóa theo ID loại GPU. Công khai, không cần xác thực; được bộ nhớ đệm trong 5 phút.
Lấy trạng thái huấn luyện#
GET /api/models/{modelId}/trainingTrả về trạng thái công việc huấn luyện hiện tại, số liệu, tiến trình, thời gian, thông tin GPU và các lỗi. Các dự án công khai có thể truy cập mà không cần xác thực; các dự án riêng tư và được chia sẻ yêu cầu một API key có quyền truy cập.
Hủy huấn luyện#
DELETE /api/models/{modelId}/trainingChấm dứt phiên bản tính toán đang chạy và đánh dấu công việc là đã hủy.
API Deployments#
Triển khai các mô hình tới các endpoint suy luận chuyên dụng kèm theo các kiểm tra trạng thái và tính năng giám sát. Các bản triển khai mới sử dụng tính năng thu nhỏ về 0 (scale-to-zero) theo mặc định và API chấp nhận một đối tượng resources tùy chọn. Xem Tài liệu endpoint.
Tất cả các tuyến triển khai bên dưới đều chấp nhận xác thực bằng API key. Đối với suy luận thông lượng cao, hãy gọi trực tiếp URL endpoint của bản triển khai (ví dụ: https://predict-abc123.run.app/predict) bằng API key của bạn. Các endpoint chuyên dụng không bị giới hạn tốc độ.
graph LR
A[Create]:::start --> B[Deploying]:::proc
B --> C[Ready]:::out
C -->|stop| D[Stopped]:::extern
D -->|start| C
C -->|delete| E[Deleted]:::error
D -->|delete| E
C -->|predict| F[Inference Results]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fff
classDef extern fill:#607D8B,color:#fffLiệt kê các bản triển khai#
GET /api/deploymentsTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
modelId | string | Lọc theo model |
status | string | Lọc theo trạng thái |
limit | int | Số kết quả tối đa (mặc định: 20, tối đa: 100) |
owner | string | Username của chủ sở hữu không gian làm việc (workspace owner) |
Tạo bản triển khai#
POST /api/deploymentsBody:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}| Trường (Field) | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
modelId | string | Có | ID model cần triển khai |
name | string | Có | Tên bản triển khai |
region | string | Có | Khu vực triển khai |
resources | đối tượng | Không | Cấu hình tài nguyên (cpu, memoryGi, minInstances, maxInstances) |
Tạo một endpoint inference chuyên dụng trong khu vực được chỉ định. Endpoint có thể truy cập toàn cầu thông qua một URL duy nhất.
Hộp thoại triển khai hiện tại gửi các giá trị mặc định cố định gồm cpu=1, memoryGi=2, minInstances=0, và maxInstances=1. Tuyến API chấp nhận đối tượng resources, nhưng giới hạn của gói cước giới hạn minInstances ở mức 0 và maxInstances ở mức 1.
Hãy chọn một khu vực gần người dùng của bạn để có độ trễ thấp nhất. Giao diện người dùng của nền tảng hiển thị các ước tính độ trễ cho tất cả 42 khu vực khả dụng.
Lấy bản triển khai#
GET /api/deployments/{deploymentId}Xóa bản triển khai#
DELETE /api/deployments/{deploymentId}Bắt đầu bản triển khai#
POST /api/deployments/{deploymentId}/startTiếp tục một bản triển khai đã dừng.
Dừng bản triển khai#
POST /api/deployments/{deploymentId}/stopNgừng phục vụ các yêu cầu bằng cách đặt số lượng instance tối thiểu và tối đa của dịch vụ về không.
Kiểm tra tình trạng#
GET /api/deployments/{deploymentId}/healthTrả về trạng thái tình trạng của endpoint triển khai.
Chạy Inference trên bản triển khai#
POST /api/deployments/{deploymentId}/predictGửi hình ảnh trực tiếp đến một endpoint triển khai để thực hiện inference. Về mặt chức năng tương đương với dự đoán model, nhưng được định tuyến qua endpoint chuyên dụng để có độ trễ thấp hơn.
Multipart Form:
| Tham số | Loại | Mặc định | Phạm vi | Mô tả |
|---|---|---|---|---|
file | tệp | - | - | Tệp hình ảnh hoặc video (bắt buộc trừ khi source được thiết lập) |
conf | float | 0.25 | 0.01 – 1.0 | Ngưỡng độ tin cậy tối thiểu |
iou | float | 0.7 | 0.0 – 0.95 | Ngưỡng NMS IoU |
imgsz | int | 640 | 32 – 1280 | Kích thước hình ảnh đầu vào tính bằng pixel |
normalize | bool | false | - | Trả về tọa độ BBox dưới dạng 0 – 1 |
decimals | int | 5 | 0 – 10 | Độ chính xác thập phân cho các giá trị tọa độ |
source | string | - | - | URL hình ảnh hoặc chuỗi base64 (thay thế cho file) |
Cung cấp file hoặc source. Phản hồi sử dụng cùng một hợp đồng hình ảnh và siêu dữ liệu như tính năng dự đoán mô hình và không bao giờ trả về đường dẫn mô hình nội bộ.
Lấy số liệu#
GET /api/deployments/{deploymentId}/metricsTrả về số lượng yêu cầu, độ trễ và số liệu tỷ lệ lỗi cùng với dữ liệu biểu đồ sparkline.
Tham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
range | string | Khoảng thời gian: 1h, 6h, 24h (mặc định), 7d, 30d |
sparkline | string | Đặt thành true để có dữ liệu biểu đồ thu nhỏ (sparkline) được tối ưu hóa cho chế độ xem bảng điều khiển |
Lấy nhật ký (logs)#
GET /api/deployments/{deploymentId}/logsTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
severity | string | Bộ lọc phân tách bằng dấu phẩy: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Số lượng mục nhập (mặc định: 50, tối đa: 200) |
pageToken | string | Token phân trang từ phản hồi trước đó |
API Xuất#
Chuyển đổi các mô hình sang các định dạng được tối ưu hóa như ONNX, TensorRT, CoreML, và LiteRT để triển khai trên biên. Xem Tài liệu triển khai.
Danh sách Xuất#
GET /api/exportsTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
modelId | string | Model ID (bắt buộc) |
status | string | Lọc theo trạng thái |
limit | int | Số kết quả tối đa (mặc định: 20, tối đa: 100) |
Tạo Xuất#
POST /api/exportsBody:
| Trường (Field) | Loại | Bắt buộc | Mô tả |
|---|---|---|---|
modelId | string | Có | ID model nguồn |
format | string | Có | Định dạng xuất (xem bảng bên dưới) |
gpuType | string | Có điều kiện | Bắt buộc khi format là engine; hãy sử dụng GPU hoặc mục tiêu Jetson được hỗ trợ |
args | đối tượng | Không | Các tham số xuất (imgsz, quantize, dynamic, v.v.) |
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/exportsCác định dạng được hỗ trợ:
Sử dụng tham số format từ bảng xuất chung bên dưới. PyTorch là định dạng nguồn và không phải là mục tiêu xuất API.
| Định dạng | Đối số format | Mô hình | Metadata | Tham số |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
Lấy trạng thái xuất#
GET /api/exports/{exportId}Hủy xuất#
DELETE /api/exports/{exportId}Theo dõi tải xuống bản xuất#
POST /api/exports/{exportId}/track-downloadAPI Hoạt động#
Xem nguồn cấp dữ liệu về các hoạt động gần đây trên tài khoản của bạn — các lần chạy huấn luyện, tệp tải lên và nhiều thứ khác. Xem Tài liệu hoạt động.
Tất cả các lộ trình hoạt động dưới đây chấp nhận xác thực bằng API-key.
Liệt kê hoạt động#
GET /api/activityTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
limit | int | Kích thước trang (mặc định: 20, tối đa: 100) |
page | int | Số trang (mặc định: 1) |
archived | boolean | true cho tab Lưu trữ, false cho Hộp thư đến |
search | string | Tìm kiếm không phân biệt hoa thường trong các trường sự kiện |
start | ngày | Bao gồm các sự kiện vào hoặc sau ngày này |
end | ngày | Bao gồm các sự kiện vào hoặc trước ngày này |
export | boolean | Trả về tất cả các sự kiện khớp dưới dạng JSON |
owner | string | Tên người dùng không gian làm việc |
Đánh dấu sự kiện đã xem#
POST /api/activity/mark-seenBody:
{
"all": true
}Hoặc chuyển các ID cụ thể:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}Truyền tham số truy vấn tùy chọn owner để đánh dấu các sự kiện trong một không gian làm việc.
Lưu trữ sự kiện#
POST /api/activity/archiveBody:
{
"all": true,
"archive": true
}Hoặc chuyển các ID cụ thể:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}Truyền tham số truy vấn tùy chọn owner để lưu trữ hoặc khôi phục các sự kiện trong không gian làm việc.
API Thùng rác#
Xem và khôi phục các mục đã xóa. Các mục bị xóa vĩnh viễn sau 30 ngày. Xem Tài liệu thùng rác.
Liệt kê thùng rác#
GET /api/trashTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
type | string | Bộ lọc: all, project, dataset, model |
page | int | Số trang (mặc định: 1) |
limit | int | Các mục trên mỗi trang (mặc định: 50, tối đa: 200) |
owner | string | Username của chủ sở hữu không gian làm việc (workspace owner) |
Khôi phục mục#
POST /api/trashBody:
{
"id": "item_abc123",
"type": "dataset"
}Xóa mục vĩnh viễn#
DELETE /api/trashBody:
{
"id": "item_abc123",
"type": "dataset"
}Việc xóa vĩnh viễn không thể hoàn tác. Tài nguyên và tất cả dữ liệu liên quan sẽ bị xóa.
Làm trống thùng rác#
DELETE /api/trash/emptyXóa vĩnh viễn tất cả các mục trong thùng rác.
DELETE /api/trash/empty chấp nhận xác thực bằng API key và xóa vĩnh viễn mọi mục trong thùng rác của tài khoản hoặc không gian làm việc được chọn.
API Thanh toán#
Kiểm tra số dư tín dụng, mức sử dụng gói cước và lịch sử giao dịch của bạn. Xem Tài liệu thanh toán.
Các endpoint số dư và giao dịch chấp nhận tham số truy vấn tùy chọn owner với tên người dùng của chủ sở hữu không gian làm việc.
Số tiền thanh toán sử dụng đơn vị xu (creditsCents) trong đó 100 = $1.00.
Lấy số dư#
GET /api/billing/balancePhản hồi (Response):
{
"creditsCents": 2500,
"plan": "free"
}Lấy tóm tắt sử dụng#
GET /api/billing/usage-summaryTrả về chi tiết gói, giới hạn và số liệu sử dụng.
Lấy giao dịch#
GET /api/billing/transactionsTrả về lịch sử giao dịch (gần nhất trước tiên).
Các giao dịch bao gồm các trường sổ cái hướng tới khách hàng như số tiền, số dư kết quả, ngày tháng, bối cảnh model tùy chọn và URL biên lai. Ghi chú nội bộ, ID thanh toán/hoàn tiền Stripe và khóa lũy đẳng không được trả về.
API Lưu trữ#
Kiểm tra phân tích mức sử dụng lưu trữ của bạn theo danh mục (tập dữ liệu, model, xuất file) và xem các mục lớn nhất.
GET /api/storage chấp nhận xác thực bằng API key. Sử dụng trang Cài đặt > Hồ sơ để có bảng phân tích tương tác tương tự.
Lấy Thông tin Lưu trữ#
GET /api/storageTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
details | boolean | Đặt thành true để bao gồm topItems (các tập dữ liệu, mô hình, tệp xuất lớn nhất). |
owner | string | Tên người dùng không gian làm việc. |
Phản hồi (Response):
{
"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"
}
]
}
}Tích hợp lưu trữ đám mây#
Kết nối và duyệt các tích hợp lưu trữ GCS, S3 hoặc Azure Blob chỉ đọc:
GET /api/integrations/buckets
POST /api/integrations/buckets
POST /api/integrations/buckets/discover
GET /api/integrations/buckets/{id}/objectsCả bốn thao tác đều chấp nhận tham số truy vấn tùy chọn owner cho một không gian làm việc. Việc duyệt đối tượng cũng chấp nhận target bắt buộc cộng với các tham số truy vấn prefix tùy chọn và cursor của nhà cung cấp. Phần thân yêu cầu kết nối và khám phá sử dụng các lược đồ thông tin xác thực của nhà cung cấp trong tài liệu tham khảo OpenAPI tương tác; thông tin xác thực không bao giờ được trả về.
API Tải lên#
Tải tệp trực tiếp lên bộ nhớ đám mây bằng các URL có chữ ký để truyền dữ liệu nhanh chóng và đáng tin cậy. Việc hoàn thành việc tải lên mô hình sẽ đính kèm trọng số của nó. Việc hoàn thành việc tải lên kho lưu trữ tập dữ liệu sẽ ghi lại phiên làm việc; hãy truyền sessionId đó đến POST /api/datasets/ingest để bắt đầu xử lý. Xem Tài liệu dữ liệu.
Lấy Signed URL Tải lên#
POST /api/upload/signed-urlYêu cầu một signed URL để tải tệp trực tiếp lên bộ nhớ đám mây. Signed URL sẽ bỏ qua máy chủ API để thực hiện truyền tệp dung lượng lớn.
Body:
{
"assetType": "datasets",
"assetId": "dataset_abc123",
"filename": "my-dataset.zip",
"contentType": "application/zip",
"totalBytes": 52428800
}| Trường (Field) | Loại | Mô tả |
|---|---|---|
assetType | string | Loại tài sản: models, datasets, images, videos |
assetId | string | ID của tài sản mục tiêu |
filename | string | Tên tệp gốc |
contentType | string | Loại MIME |
totalBytes | int | Kích thước tệp tính bằng byte |
Phản hồi (Response):
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.example.com/...",
"expiresAt": "2026-02-22T12:00:00Z"
}Hoàn tất Tải lên#
POST /api/upload/completeThông báo cho nền tảng rằng việc tải tệp lên đã hoàn tất. Đối với các mô hình, thao tác này đính kèm các trọng số đã tải lên. Đối với các kho lưu trữ tập dữ liệu, thao tác này xác minh và ghi lại phiên tải lên; hãy gọi POST /api/datasets/ingest sau đó để bắt đầu xử lý tập dữ liệu.
Body:
{
"sessionId": "session_abc123",
"checksum": "<optional sha-256 hex>"
}API Tích hợp#
Nhập các tập dữ liệu từ các dịch vụ của bên thứ ba. Xem Tài liệu tích hợp.
Xem trước Nhập từ Roboflow#
POST /api/integrations/roboflow/previewGiải mã API key Roboflow sang một gói nhập hàng loạt: thông tin workspace, những dự án nào sẽ được nhập mới, số lượng phiên bản đã nhập (bị bỏ qua) và các loại dự án không được hỗ trợ. API key Roboflow được truyền trong phần thân yêu cầu và không được lưu lại.
Nhập từ Roboflow#
POST /api/integrations/roboflow/importXếp hàng các công việc nạp dữ liệu để nhập các dự án Roboflow đã chọn vào workspace của bạn. Yêu cầu dung lượng lưu trữ, và mỗi tập dữ liệu phải phù hợp với giới hạn kích thước mỗi lần nhập trong gói của bạn.
API API Keys#
Quản lý các API key của bạn để truy cập lập trình. Xem Tài liệu API Keys.
Liệt kê các API Keys#
GET /api/api-keysCác client được xác thực bằng API key nhận được siêu dữ liệu của khóa, không bao giờ nhận được giá trị khóa hiện có đã giải mã. Một khóa mới được tạo chỉ được trả về một lần bởi POST /api/api-keys.
Truyền tham số truy vấn tùy chọn owner để quản lý các khóa cho một không gian làm việc nơi bạn có quyền chỉnh sửa.
Tạo API Key#
POST /api/api-keysBody:
{
"name": "training-server"
}Xóa API Key#
DELETE /api/api-keysTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
keyId | string | ID API key cần thu hồi |
owner | string | Tên người dùng không gian làm việc tùy chọn. |
Ví dụ:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"API Nhóm & Thành viên#
Tạo không gian làm việc nhóm, mời thành viên và quản lý các vai trò để cộng tác. Xem Tài liệu nhóm.
Liệt kê các Nhóm#
GET /api/teamsTạo Nhóm#
POST /api/teams/createBody:
{
"username": "my-team",
"fullName": "My Team"
}Liệt kê các Thành viên#
GET /api/membersTrả về các thành viên của không gian làm việc hiện tại.
Mời Thành viên#
POST /api/membersBody:
{
"email": "user@example.com",
"role": "editor"
}| Vai trò | Quyền |
|---|---|
viewer | Quyền truy cập chỉ đọc vào tài nguyên của không gian làm việc |
editor | Tạo, chỉnh sửa và xóa tài nguyên |
admin | Quản lý thành viên, thanh toán và tất cả các tài nguyên (chỉ chủ sở hữu nhóm mới có thể gán quyền này) |
Thành viên nhóm owner là người tạo và không thể được mời. Quyền sở hữu được chuyển riêng biệt thông qua POST /api/members/transfer-ownership. Xem Nhóm để biết chi tiết đầy đủ về vai trò.
Cập nhật Vai trò Thành viên#
PATCH /api/members/{userId}Xóa Thành viên#
DELETE /api/members/{userId}Chuyển nhượng Quyền sở hữu#
POST /api/members/transfer-ownershipAPI Khám phá (Explore)#
Tìm kiếm và duyệt qua các tập dữ liệu công khai và các dự án được chia sẻ bởi cộng đồng. Xem Tài liệu khám phá.
Tìm kiếm Nội dung Công khai#
GET /api/explore/searchTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
q | string | Truy vấn tìm kiếm |
type | string | Loại tài nguyên: all (mặc định), projects, datasets |
sort | string | Thứ tự sắp xếp: newest (mặc định), stars, oldest, name-asc, name-desc, count-desc, count-asc |
offset | int | Offset phân trang (mặc định: 0). Kết quả trả về 20 mục mỗi trang. |
task | string | Tùy chọn: các loại tác vụ YOLO phân tách bằng dấu phẩy để lọc các tập dữ liệu (detect, segment, semantic, classify, pose, obb) |
author | string | Bộ lọc tên người dùng chủ sở hữu tùy chọn. |
starred | boolean | Đặt true để trả về nội dung được đánh dấu sao của người gọi đã xác thực; yêu cầu một API key. |
Dữ liệu Thanh bên#
GET /api/explore/sidebarTrả về nội dung được chọn lọc cho thanh bên Khám phá.
API Người dùng & Cài đặt#
Quản lý hồ sơ, các API key, mức sử dụng lưu trữ và không gian làm việc nhóm của bạn. Xem Tài liệu cài đặt.
Tóm tắt tài khoản#
GET /api/account/summaryTrả về gói, số dư tín dụng, số lượng tài nguyên và các không gian làm việc nhóm của tài khoản đã xác thực.
Lấy Người dùng theo Tên người dùng#
GET /api/usersTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
username | string | Tên người dùng cần tìm |
Theo dõi hoặc Bỏ theo dõi Người dùng#
PATCH /api/usersBody:
{
"username": "target-user",
"followed": true
}Kiểm tra tính sẵn sàng của Tên người dùng#
GET /api/username/checkTham số truy vấn (Query Parameters):
| Tham số | Loại | Mô tả |
|---|---|---|
username | string | Tên người dùng cần kiểm tra |
suggest | bool | Tùy chọn: true để bao gồm gợi ý nếu đã bị chiếm dụng |
Cài đặt#
GET /api/settings
POST /api/settingsLấy hoặc cập nhật cài đặt hồ sơ người dùng (tên hiển thị, tiểu sử, liên kết mạng xã hội, v.v.).
Biểu tượng không gian làm việc#
POST /api/settings/icon
DELETE /api/settings/iconTải lên một biểu tượng hồ sơ/không gian làm việc WebP kích thước tối đa 5 MB dưới dạng trường form multipart image, hoặc xóa nó. Truyền owner tùy chọn cho một không gian làm việc nhóm.
Tích hợp Python#
Để tích hợp dễ dàng hơn, hãy sử dụng gói Python của Ultralytics, gói này tự động xử lý việc xác thực, tải lên và phát trực tuyến các chỉ số theo thời gian thực.
Cài đặt & Thiết lập#
pip install "ultralytics>=8.4.104"Xác minh cài đặt:
yolo checkXác thực#
yolo login YOUR_API_KEYSử dụng tập dữ liệu (dataset) của Platform#
Tham chiếu các tập dữ liệu với các URI ul://:
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,
)Định dạng URI:
| Mẫu | Mô tả |
|---|---|
ul://username/datasets/slug | Tập dữ liệu (Dataset) |
ul://username/project-name | Dự án |
ul://username/project/model-name | Model cụ thể |
ul://ultralytics/yolo26/yolo26n | Model chính thức |
Đẩy dữ liệu lên Platform#
Gửi kết quả đến một dự án trên Platform:
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",
)Những gì được đồng bộ:
- Chỉ số huấn luyện (thời gian thực)
- Trọng số model cuối cùng
- Biểu đồ xác thực (validation)
- Đầu ra console
- Chỉ số hệ thống
Ví dụ về API#
Tải model từ Platform:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")Chạy suy luận (inference):
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 probabilitiesXuất model:
# Export to ONNX
model.export(format="onnx", imgsz=640, quantize=16)
# Export to TensorRT
model.export(format="engine", imgsz=640, quantize=16)
# Export to CoreML
model.export(format="coreml", imgsz=640) # use imgsz=224 for classificationXác thực (Validation):
metrics = model.val(data="ul://username/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")Câu hỏi thường gặp#
Làm cách nào để phân trang (paginate) các kết quả lớn?#
Hầu hết các endpoint đều sử dụng tham số limit để kiểm soát số lượng kết quả được trả về trong mỗi yêu cầu:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"Các endpoint Hoạt động và Thùng rác cũng hỗ trợ tham số page để phân trang dựa trên trang:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"Endpoint Explore Search sử dụng offset thay vì page, với kích thước trang cố định là 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"Tôi có thể sử dụng API mà không cần SDK không?#
Các thao tác REST công khai được tài liệu hóa ở trên có sẵn mà không cần Python SDK. SDK là một trình bao bọc tiện lợi bổ sung các tính năng như truyền trực tuyến metric thời gian thực và tự động tải mô hình lên. Bạn có thể khám phá hợp đồng có thể đọc bằng máy một cách tương tác tại platform.ultralytics.com/api/docs; các luồng tài khoản chỉ dành cho phiên trình duyệt vẫn nằm trong Platform UI.
Có thư viện client API nào không?#
Sử dụng gói Ultralytics Python hoặc thực hiện các yêu cầu HTTP trực tiếp từ bất kỳ ngôn ngữ nào.
Làm cách nào để xử lý giới hạn tốc độ (rate limit)?#
Sử dụng header Retry-After từ phản hồi 429 để chờ khoảng thời gian phù hợp:
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 RuntimeError("Rate limit exceeded")Làm cách nào để tìm ID của model hoặc tập dữ liệu?#
ID tài nguyên được trả về bởi các phản hồi API tạo, liệt kê và lấy. Các URL trang Platform sử dụng slug dễ đọc đối với con người, không phải ID cơ sở dữ liệu:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelSử dụng các endpoint danh sách để tìm _id tương ứng cho một model, dataset, project, deployment hoặc tài nguyên khác.