Tài liệu tham khảo REST API#
Ultralytics Platform cung cấp REST API để truy cập theo chương trình vào các dataset, image, project, model, hoạt động training, export và deployment.

# List the datasets owned by a workspace
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets/YOUR_USERNAMEMỗi endpoint bên dưới liệt kê lệnh client.<resource>.<method>(...) tương ứng từ SDK ultralytics-platform, được tạo từ cùng một contract như tài liệu tham khảo này.
Trang này hướng dẫn tổng quan về API. Tài liệu tham khảo được tạo tự động và luôn cập nhật nằm tại platform.ultralytics.com/api/docs, còn tài liệu OpenAPI 3.2 có thể đọc bằng máy, cung cấp nền tảng cho tài liệu đó, được công bố tại platform.ultralytics.com/openapi.json. Cả hai đều được tạo trực tiếp từ contract phía server, vì vậy chúng là nguồn chính thức khi nội dung trang này và schema không khớp.
Tổng quan về API#
API được tổ chức xoay quanh các resource cốt lõi của Platform:
graph LR
A[API Key]:::start --> B[Datasets]:::proc
A --> C[Projects]:::proc
B -->|images| G[Images]:::proc
C -->|contains| D[Models]:::proc
B -->|train on| D
D -->|deploy| E[Deployments]:::proc
D -->|export| F[Exports]:::proc
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff| Resource | Mô tả | Các thao tác chính |
|---|---|---|
| Dataset | Các collection image đã gán nhãn | CRUD, ingest, version, class, split, clone |
| Image | Image và label riêng lẻ | Đọc, annotate, di chuyển split, xóa, auto-annotate |
| Project | Workspace dành cho model | CRUD, clone |
| Models | Checkpoint đã training | CRUD, predict, download, clone, trạng thái training |
| Training | Job training trên cloud GPU | Tính khả dụng của GPU, khởi chạy, tiến trình, hủy |
| Export | Job chuyển đổi format | Tạo, liệt kê, trạng thái, hủy |
| Deployment | Endpoint inference chuyên dụng | Tạo, start/stop/replace, predict, metric, log |
| Thùng rác | Resource đã xóa mềm | Liệt kê, khôi phục, xóa vĩnh viễn |
| Storage | Tích hợp cloud storage | Kết nối, khám phá, duyệt, ngắt kết nối |
| Tài khoản | Gói, credit, storage, profile | Tóm tắt tài khoản, API key, mức sử dụng storage, tra cứu user |
| Billing | Mức sử dụng gói và sổ cái | Tóm tắt mức sử dụng, giao dịch |
| Khám phá | Tìm kiếm nội dung công khai | Tìm kiếm project và dataset |
Xác thực#
Hầu hết endpoint yêu cầu API key. Các endpoint cung cấp nội dung công khai — đọc dataset, project hoặc model công khai, liệt kê image của dataset công khai, chạy inference trên model công khai hoặc tìm kiếm trong Explore — cũng chấp nhận request ẩn danh và chỉ trả về nhiều dữ liệu hơn khi có key.
Lấy API Key#
- Truy cập
Settings>API Keys - Click
Create Key - Sao chép key đã tạo
Xem API Key để biết hướng dẫn chi tiết.
Header ủy quyền#
Gửi API key của bạn dưới dạng bearer token:
Authorization: Bearer YOUR_API_KEYAPI key là tiền tố cố định ul_ theo sau bởi 40 ký tự thập lục phân, tổng cộng 43 ký tự (ví dụ ul_a1b2c3d4e5f6789012345678901234567890abcd). Request có header bị thiếu, key sai định dạng hoặc key đã bị thu hồi sẽ trả về 401. Hãy giữ bí mật key của bạn -- không bao giờ commit key vào hệ thống quản lý version hoặc chia sẻ công khai.
Ví dụ#
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/account/summaryBase URL#
Tất cả endpoint API đều sử dụng:
https://platform.ultralytics.com/apiĐường dẫn resource#
Resource được định danh bằng cùng tên dễ đọc với tên xuất hiện trong URL của Platform, không phải bằng database ID:
| Resource | Path | Ví dụ |
|---|---|---|
| Dataset | /api/datasets/{owner}/{dataset} | /api/datasets/acme-vision/warehouse |
| Project | /api/projects/{owner}/{project} | /api/projects/acme-vision/inspection |
| Model | /api/models/{owner}/{project}/{model} | /api/models/acme-vision/inspection/v3 |
| Deployment | /api/deployments/{owner}/{deployment} | /api/deployments/acme-vision/edge-1 |
| Hình ảnh | /api/images/{imageId} | /api/images/65f1c0a2b3d4e5f601234567 |
{owner}là username cá nhân hoặc handle workspace của team: từ 4-32 ký tự, gồm chữ và số viết thường với dấu gạch nối đơn giữa các phân đoạn.{dataset},{project},{model}và{deployment}tuân theo cùng pattern chữ thường phân tách bằng dấu gạch nối, tối đa 128 ký tự.{imageId}và{exportId}là các ID thập lục phân dài 24 ký tự do API trả về.- Đổi tên resource thông qua
PATCHsẽ đồng thời thay đổinamehiển thị và tên URL; response trả về tên URL hiện tại để bạn có thể tiếp tục sử dụng tên đó.
Không có query parameter owner. Các path theo workspace chứa owner trong path, còn các endpoint theo tài khoản (/api/account/summary, /api/api-keys, /api/storage, /api/billing/*, /api/trash, /api/integrations/buckets) hoạt động trên workspace đã cấp API key. Để thao tác trên workspace của team, hãy sử dụng API key được tạo trong workspace đó.
Giới hạn tốc độ#
API áp dụng giới hạn theo cửa sổ trượt cho từng API key. Mỗi route thuộc một category và mỗi category có bộ đếm độc lập, vì vậy 20 request predict không tiêu hao hạn mức mặc định của bạn.
| Danh mục | Giới hạn | Áp dụng cho |
|---|---|---|
| Mặc định | 100 request/phút | Mọi route không được liệt kê bên dưới |
| Training | 10 request/phút | POST /api/training/start |
| Upload | 10 request/phút | URL upload đã ký, hoàn tất upload và ingest dataset |
| Predict | 20 request/phút | Inference model và deployment thông qua các route API của Platform |
| Export | 20 request/phút | Các tuyến xuất model và các tuyến xuất/phiên bản dataset, ngoại trừ việc đọc bản xuất dataset (GET), sử dụng giới hạn mặc định |
| Download | 30 request/phút | Download file model |
| Mutation | 10 request/phút | Liệt kê API key, kết nối hoặc khám phá cloud storage và các thao tác PATCH của deployment |
| Hydrate | 20 request/phút | POST /api/datasets/{owner}/{dataset}/images (lấy một tập hợp ảnh đã chọn) và GET /api/images/{imageId}/similar |
| Clustering | 10 request/phút | GET /api/datasets/{owner}/{dataset}/images/clustering và GET /api/models/{owner}/{project}/{model}/similar-images |
Các route Platform chỉ dành cho trình duyệt, chẳng hạn như thanh toán billing và quản lý team, có giới hạn riêng không áp dụng cho traffic sử dụng API key.
Khi bị throttling, API trả về 429 cùng với cả header và JSON body:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z{
"error": "Rate limit exceeded",
"retryAfter": 12,
"resetAt": "2026-02-21T12:34:56.000Z"
}Endpoint chuyên dụng (không giới hạn)#
Endpoint chuyên dụng không chịu giới hạn tốc độ API key của Platform khi bạn gọi trực tiếp serviceUrl riêng của deployment (ví dụ: https://predict-abc123.run.app/predict). Khi đó, throughput phụ thuộc vào cấu hình service đã deploy.
Khi nhận được 429, hãy chờ Retry-After giây (hoặc đến khi X-RateLimit-Reset) trước khi thử lại. Xem FAQ về giới hạn tốc độ để biết cách triển khai exponential backoff.
Định dạng Response#
Response thành công#
Response là các object JSON với những field dành riêng cho từng resource. Không có envelope tổng quát: endpoint list trả về một collection có tên cùng với các số đếm, còn mutation trả về các identifier đã thay đổi.
{
"datasets": [{ "id": "65f1c0a2b3d4e5f601234567", "owner": "acme-vision", "dataset": "warehouse" }],
"total": 1,
"region": "us"
}Các response chứa dữ liệu cũng bao gồm region (us, eu hoặc ap), tức region storage của workspace đó.
Response lỗi#
Mọi response lỗi đều là một object JSON với message error:
{
"error": "Dataset not found"
}| Trạng thái HTTP | Ý nghĩa |
|---|---|
200 | Thành công |
201 | Đã tạo |
202 | Đã chấp nhận, công việc tiếp tục bất đồng bộ |
400 | Path, query hoặc request body không hợp lệ |
401 | Thiếu hoặc xác thực không hợp lệ |
402 | Không đủ credit (training) |
403 | Không đủ quyền, gói hoặc quota |
404 | Không tìm thấy tài nguyên |
409 | Xung đột với trạng thái hiện tại (tên trùng lặp, tác vụ đang thực thi) |
413 | Dữ liệu đầu vào cho prediction quá lớn |
422 | Các class của model không khớp với dataset (tự động gán nhãn) |
429 | Đã vượt quá giới hạn request |
500 | Lỗi máy chủ |
502 | Provider upstream hoặc lệnh gọi service không thành công |
503 | Service phụ thuộc tạm thời không khả dụng |
Phân trang#
Kiểu phân trang phụ thuộc vào collection:
| Kiểu | Endpoint | Số tham số |
|---|---|---|
| Chỉ limit | Danh sách dataset, project, model, export, deployment | limit |
| Offset và limit | Ảnh dataset, phân cụm ảnh, tìm kiếm Explore | offset, limit, cùng với hasMore trong response |
| Cursor | Ảnh dataset (dataset lớn) | cursor, includeTotal, cùng với nextCursor |
| Số trang | Thùng rác | page, limit, cùng với totalPages |
| Token trang opaque | Log deployment | pageToken, cùng với nextPageToken |
Datasets API#
Tạo, duyệt và quản lý các dataset ảnh đã gán nhãn để training model YOLO. Xem tài liệu Datasets.
Liệt kê Datasets#
GET /api/datasets/{owner}Python SDK: client.datasets.list(owner)
Trả về các dataset công khai của chủ sở hữu, cùng với các dataset riêng tư khi key của bạn có quyền xem workspace đó.
Tham số Query:
| Parameter | Kiểu | Mô tả |
|---|---|---|
limit | int | Số dataset tối đa được trả về (mặc định: 1000, tối đa: 1000) |
includeSamples | boolean | Bao gồm bản preview ảnh mẫu (mặc định: true) |
includeImageUrls | boolean | Bao gồm URL dự phòng của ảnh mẫu kích thước đầy đủ (mặc định: false) |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets/acme-vision?limit=10&includeSamples=false"Response:
{
"datasets": [
{
"id": "65f1c0a2b3d4e5f601234567",
"owner": "acme-vision",
"dataset": "warehouse",
"name": "Warehouse",
"task": "detect",
"visibility": "private",
"imageCount": 1000,
"classCount": 2,
"classNames": ["person", "forklift"],
"splits": { "train": 800, "val": 200, "test": 0, "labeled": 1000 },
"annotationCount": 5400,
"starCount": 3,
"isStarred": false,
"status": "ready",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-16T08:30:00Z"
}
],
"total": 1,
"region": "us"
}Lấy Dataset#
GET /api/datasets/{owner}/{dataset}Python SDK: client.datasets.retrieve(owner, dataset)
Trả về toàn bộ object dataset dưới key dataset, bao gồm classNames, splits, versions, source và object do người dùng định nghĩa metadata.
Tạo Dataset#
POST /api/datasetsPython SDK: client.datasets.create(dataset=..., name=...)
Body:
{
"dataset": "warehouse",
"name": "Warehouse",
"task": "detect",
"description": "Forklift and pedestrian safety dataset",
"classNames": ["person", "forklift"],
"visibility": "private",
"metadata": { "location": "factory-1", "reviewed": true },
"owner": "acme-vision"
}| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
dataset | string | Có | Tên dataset được sử dụng trong URL Platform (chữ thường, phân tách bằng dấu gạch ngang, tối đa 128 ký tự) |
name | string | Có | Tên hiển thị (tối đa 100 ký tự) |
description | string | Không | Mô tả (tối đa 1000 ký tự) |
task | string | Không | Loại task (mặc định: detect) |
classNames | mảng | Không | Tên class theo thứ tự index (tối đa 25.000) |
format | string | Không | Định dạng annotation: yolo (mặc định), coco, raw, ndjson |
visibility | string | Không | public hoặc private |
tags | mảng | Không | Tối đa 50 tag, mỗi tag dài 50 ký tự |
license | string | Không | Identifier của license dataset |
metadata | đối tượng | Không | Metadata JSON tùy chỉnh |
owner | string | Không | Handle của team workspace; mặc định là workspace cá nhân của bạn |
requireExactSlug | boolean | Không | Trả về 409 khi dataset đã bị chiếm dụng thay vì tạo một tên có hậu tố như warehouse-2 (mặc định là false) |
Phản hồi trả về chuỗi định danh dataset thực sự được tạo, vì vậy hãy đọc lại trước khi tải lên trừ khi bạn thiết lập requireExactSlug.
Các giá trị task hợp lệ khi tạo hoặc cập nhật dataset: detect, segment, semantic, depth, classify,
pose và obb. Dataset depth không có class.
Response (201):
{
"id": "65f1c0a2b3d4e5f601234567",
"owner": "acme-vision",
"dataset": "warehouse",
"region": "us"
}Cập nhật Dataset#
PATCH /api/datasets/{owner}/{dataset}Python SDK: client.datasets.update(owner, dataset)
Body (partial update):
{
"name": "Warehouse Safety",
"description": "New description",
"visibility": "public",
"metadata": { "location": "factory-2", "reviewed": true }
}Các field được chấp nhận: name, description, visibility, metadata, tags, classNames, classColors, format, task,
license, iconColor, iconLetter và starred. Gửi một object metadata rỗng ({}) để xóa metadata tùy chỉnh.
Key metadata bị giới hạn ở 128 ký tự và object được serialize ở 500.000 ký tự.
Response:
{
"success": true,
"dataset": "warehouse-safety"
}Việc đổi tên sẽ thay đổi tên URL, vì vậy hãy sử dụng giá trị dataset được trả về cho các request tiếp theo.
Xóa Dataset#
DELETE /api/datasets/{owner}/{dataset}Python SDK: client.datasets.delete(owner, dataset)
Chuyển dataset vào thùng rác, nơi có thể khôi phục trong 30 ngày.
Clone Dataset#
POST /api/datasets/{owner}/{dataset}/clonePython SDK: client.datasets.clone(owner, dataset)
Sao chép một dataset có quyền truy cập, cùng với ảnh và label của dataset đó, vào workspace cá nhân hoặc team workspace của bạn.
Body tùy chọn (tất cả field đều không bắt buộc):
{
"dataset": "warehouse-copy",
"name": "Warehouse Copy",
"description": "Cloned for experimentation",
"visibility": "private",
"license": "CC-BY-4.0",
"owner": "acme-vision"
}Response (201): id, owner, dataset, name, imageCount, classCount và region. Các dataset được hỗ trợ bởi nguồn storage đã kết nối trả về 409 vì các file của chúng không được sao chép.
Tải xuống Export của Dataset#
GET /api/datasets/{owner}/{dataset}/exportPython SDK: client.datasets.export(owner, dataset)
Trả về URL tải xuống NDJSON có chữ ký. Bỏ qua v để export trạng thái hiện tại của dataset, sử dụng lại export đã cache khi
không có thay đổi nào kể từ lúc export được tạo.
Tham số Query:
| Parameter | Kiểu | Mô tả |
|---|---|---|
v | integer | Số phiên bản đã lưu (đánh số từ 1). Bỏ qua để sử dụng dataset hiện tại. |
Response:
{
"downloadUrl": "https://storage.googleapis.com/...&signature=...",
"cached": true
}Yêu cầu một phiên bản cụ thể sẽ trả về downloadUrl và version thay vì cached.
Tạo Version của Dataset#
POST /api/datasets/{owner}/{dataset}/exportPython SDK: client.datasets.create_export(owner, dataset)
Tạo snapshot bất biến được đánh số của dataset và lưu export NDJSON của dataset. Yêu cầu quyền editor.
Body (tùy chọn):
{
"description": "Added 500 training images"
}Response:
{
"version": 3,
"downloadUrl": "https://storage.googleapis.com/...&signature=...",
"reused": false
}reused là true khi dataset không thay đổi kể từ version trước đó và snapshot đó được trả về thay thế.