Tài liệu tham khảo REST API
Nền tảng Ultralytics cung cấp một REST API toàn diện để truy cập theo chương 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.
Bắt đầu nhanh
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
Xác thực
Tất cả các yêu cầu API đều yêu cầu xác thực bằng khóa API.
Lấy Khóa API
- Truy cập Cài đặt > Khóa API
- Nhấp vào Tạo Khóa
- Sao chép khóa đã tạo
Xem Khóa API để biết hướng dẫn chi tiết.
Tiêu đề ủy quyền
Bao gồm khóa API của bạn trong tất cả các yêu cầu:
Authorization: Bearer ul_your_api_key_here
Ví dụ
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
URL cơ sở
Tất cả các điểm cuối API sử dụng:
https://platform.ultralytics.com/api
Giới hạn tốc độ
| Gói | Yêu cầu/Phút | Yêu cầu/Ngày |
|---|---|---|
| Miễn phí | 60 | 1,000 |
| Pro | 300 | 50,000 |
| Doanh nghiệp | Tùy chỉnh | Tùy chỉnh |
Các tiêu đề giới hạn tốc độ yêu cầu được bao gồm trong phản hồi:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
Định dạng phản hồi
Tất cả các phản hồi đều là JSON:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
Phản hồi lỗi
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
API Tập dữ liệu
Liệt kê bộ dữ liệu
GET /api/datasets
Tham số truy vấn:
| Tham số | Loại | Mô tả |
|---|---|---|
page | int | Số trang (mặc định: 1) |
limit | int | Số mục trên mỗi trang (mặc định: 20) |
task | chuỗi | Lọc theo loại tác vụ |
Phản hồi:
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
Lấy Tập dữ liệu
GET /api/datasets/{datasetId}
Tạo Tập dữ liệu
POST /api/datasets
Nội dung:
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
Xóa bộ dữ liệu
DELETE /api/datasets/{datasetId}
Xuất Tập dữ liệu
POST /api/datasets/{datasetId}/export
Trả về URL tải xuống định dạng NDJSON.
Huấn luyện mô hình trên tập dữ liệu
GET /api/datasets/{datasetId}/models
Trả về danh sách các mô hình được huấn luyện bằng tập dữ liệu này, thể hiện mối quan hệ giữa các tập dữ liệu và các mô hình mà chúng tạo ra.
Phản hồi:
{
"success": true,
"data": [
{
"id": "model_abc123",
"name": "experiment-1",
"projectId": "project_xyz",
"trainedAt": "2024-01-15T10:00:00Z",
"metrics": {
"mAP50": 0.85,
"mAP50-95": 0.72
}
}
]
}
API Dự án
Liệt kê Dự án
GET /api/projects
Lấy Dự án
GET /api/projects/{projectId}
Tạo dự án
POST /api/projects
Nội dung:
{
"name": "my-project",
"description": "Detection experiments"
}
Xóa Dự án
DELETE /api/projects/{projectId}
API Mô hình
Liệt kê Mô hình
GET /api/models
Tham số truy vấn:
| Tham số | Loại | Mô tả |
|---|---|---|
projectId | chuỗi | Lọc theo dự án |
task | chuỗi | Lọc theo loại tác vụ |
Lấy Mô hình
GET /api/models/{modelId}
Tải lên mô hình
POST /api/models
Biểu mẫu đa phần:
| Trường | Loại | Mô tả |
|---|---|---|
file | tệp | Tệp .pt của mô hình |
projectId | chuỗi | Dự án đích |
name | chuỗi | Tên mô hình |
Xóa mô hình
DELETE /api/models/{modelId}
Tải xuống Mô hình
GET /api/models/{modelId}/files
Trả về các URL tải xuống đã ký cho các tệp mô hình.
Chạy suy luận
POST /api/models/{modelId}/predict
Biểu mẫu đa phần:
| Trường | Loại | Mô tả |
|---|---|---|
file | tệp | Tệp hình ảnh |
conf | số thực | Ngưỡng tin cậy |
iou | số thực | Ngưỡng IoU |
Phản hồi:
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
API Huấn luyện
Bắt Đầu Huấn Luyện
POST /api/training/start
Nội dung:
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
Lấy Trạng thái Huấn luyện
GET /api/models/{modelId}/training
Hủy Huấn luyện
DELETE /api/models/{modelId}/training
AP Triển khai
Liệt kê Triển khai
GET /api/deployments
Tham số truy vấn:
| Tham số | Loại | Mô tả |
|---|---|---|
modelId | chuỗi | Lọc theo mô hình |
Tạo Triển khai
POST /api/deployments
Nội dung:
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
Lấy Triển khai
GET /api/deployments/{deploymentId}
Bắt đầu Triển khai
POST /api/deployments/{deploymentId}/start
Dừng Triển khai
POST /api/deployments/{deploymentId}/stop
Xóa Triển khai
DELETE /api/deployments/{deploymentId}
Lấy Chỉ số
GET /api/deployments/{deploymentId}/metrics
Lấy Nhật ký
GET /api/deployments/{deploymentId}/logs
Tham số truy vấn:
| Tham số | Loại | Mô tả |
|---|---|---|
severity | chuỗi | THÔNG TIN, CẢNH BÁO, LỖI |
limit | int | Số lượng mục nhập |
AP Xuất
Liệt kê Xuất
GET /api/exports
Tạo Xuất
POST /api/exports
Nội dung:
{
"modelId": "model_abc123",
"format": "onnx"
}
Các định dạng được hỗ trợ:
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
Lấy Trạng thái Xuất
GET /api/exports/{exportId}
AP Hoạt động
track và quản lý các sự kiện hoạt động cho tài khoản của bạn.
Liệt kê Hoạt động
GET /api/activity
Tham số truy vấn:
| Tham số | Loại | Mô tả |
|---|---|---|
startDate | chuỗi | Lọc từ ngày (ISO) |
endDate | chuỗi | Lọc đến ngày (ISO) |
search | chuỗi | Tìm kiếm trong thông báo sự kiện |
Đánh dấu Sự kiện đã xem
POST /api/activity/mark-seen
Lưu trữ Sự kiện
POST /api/activity/archive
AP Thùng rác
Quản lý các tài nguyên đã xóa mềm (lưu giữ 30 ngày).
Liệt kê Thùng rác
GET /api/trash
Khôi phục Mục
POST /api/trash
Nội dung:
{
"itemId": "item_abc123",
"type": "dataset"
}
Làm rỗng Thùng rác
POST /api/trash/empty
Xóa vĩnh viễn tất cả các mục trong thùng rác.
API Thanh toán
Quản lý tín dụng và gói đăng ký.
Lấy Số dư
GET /api/billing/balance
Phản hồi:
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
Micro-USD
Tất cả các khoản tiền được tính bằng micro-USD (1.000.000 = 1,00 USD) để đảm bảo tính toán chính xác.
Lấy Tóm tắt Sử dụng
GET /api/billing/usage-summary
Trả về chi tiết gói, giới hạn và các chỉ số sử dụng.
Tạo Phiên thanh toán
POST /api/billing/checkout-session
Nội dung:
{
"amount": 25
}
Tạo phiên thanh toán Stripe để mua tín dụng (5-1000 USD).
Tạo Thanh toán Đăng ký
POST /api/billing/subscription-checkout
Tạo phiên thanh toán Stripe cho gói đăng ký Pro.
Tạo Phiên Cổng thông tin
POST /api/billing/portal-session
Trả về URL đến cổng thanh toán Stripe để quản lý gói đăng ký.
Lấy Lịch sử Thanh toán
GET /api/billing/payments
Trả về danh sách các giao dịch thanh toán từ Stripe.
API Lưu trữ
Lấy thông tin lưu trữ
GET /api/storage
Phản hồi:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
API GDPR
Các điểm cuối tuân thủ GDPR để xuất và xóa dữ liệu.
Xuất/Xóa dữ liệu tài khoản
POST /api/gdpr
Nội dung:
{
"action": "export"
}
| Hành động | Mô tả |
|---|---|
export | Tải xuống tất cả dữ liệu tài khoản |
delete | Xóa tài khoản và tất cả dữ liệu |
Hành động không thể đảo ngược
Việc xóa tài khoản là vĩnh viễn và không thể hoàn tác. Tất cả dữ liệu, mô hình và triển khai sẽ bị xóa.
API Khóa API
Liệt kê khóa API
GET /api/api-keys
Tạo khóa API
POST /api/api-keys
Nội dung:
{
"name": "training-server",
"scopes": ["training", "models"]
}
Xóa khóa API
DELETE /api/api-keys/{keyId}
Mã lỗi
| Mã | Mô tả |
|---|---|
UNAUTHORIZED | Khóa API không hợp lệ hoặc bị thiếu |
FORBIDDEN | Không đủ quyền |
NOT_FOUND | Không tìm thấy tài nguyên |
VALIDATION_ERROR | Dữ liệu yêu cầu không hợp lệ |
RATE_LIMITED | Quá nhiều yêu cầu |
INTERNAL_ERROR | Lỗi máy chủ |
Python Tích hợp
Để tích hợp dễ dàng hơn, hãy sử dụng gói Ultralytics python.
Cài đặt & Thiết lập
pip install ultralytics
Xác minh cài đặt:
yolo check
Yêu cầu phiên bản gói
Tích hợp Nền tảng yêu cầu ultralytics>=8.4.0. Các phiên bản thấp hơn sẽ KHÔNG hoạt động với Nền tảng.
Xác thực
Phương pháp 1: CLI Cấu hình (Khuyến nghị)
yolo settings api_key=YOUR_API_KEY
Phương pháp 2: Biến môi trường
export ULTRALYTICS_API_KEY=YOUR_API_KEY
Phương pháp 3: Trong mã lập trình
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
Sử dụng tập dữ liệu nền tảng
Bộ dữ liệu tham chiếu với ul:// URI:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Train on your Platform dataset
model.train(
data="ul://your-username/your-dataset",
epochs=100,
imgsz=640,
)
Định dạng URI:
ul://{username}/{resource-type}/{name}
Examples:
ul://john/datasets/coco-custom # Dataset
ul://john/my-project # Project
ul://john/my-project/exp-1 # Specific model
ul://ultralytics/yolo26/yolo26n # Official model
Đẩy lên nền tảng
Gửi kết quả đến dự án Nền tảng:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
# Results automatically sync to Platform
model.train(
data="coco8.yaml",
epochs=100,
project="ul://your-username/my-project",
name="experiment-1",
)
Những gì được đồng bộ hóa:
- Số liệu huấn luyện (thời gian thực)
- Trọng lượng mô hình cuối cùng
- Biểu đồ xác thực
- Đầu ra bảng điều khiển
- Số liệu hệ thống
Ví dụ về API
Tải mô hình từ Nền tảng:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")
Chạy suy luận:
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
Mô hình xuất khẩu:
# 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)
Validation (Kiểm định):
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhooks
Webhook thông báo cho máy chủ của bạn về các sự kiện của Nền tảng:
| Sự kiện | Mô tả |
|---|---|
training.started | Công việc huấn luyện đã bắt đầu |
training.epoch | Epoch đã hoàn thành |
training.completed | Huấn luyện đã hoàn tất |
training.failed | Huấn luyện thất bại |
export.completed | Xuất đã sẵn sàng |
Thiết lập Webhook có sẵn trong các gói Enterprise.
Câu hỏi thường gặp
Làm thế nào để phân trang kết quả lớn?
Sử dụng page và limit tham số:
GET /api/datasets?page=2 &
limit=50
Tôi có thể sử dụng API mà không cần SDK không?
Có, tất cả chức năng đều có sẵn thông qua REST. SDK là một trình bao bọc tiện lợi.
Có thư viện client API nào không?
Hiện tại, hãy sử dụng gói Ultralytics python hoặc thực hiện các yêu cầu HTTP trực tiếp. Các thư viện client chính thức cho các ngôn ngữ khác đang được lên kế hoạch.
Làm thế nào để xử lý giới hạn tốc độ yêu cầu?
Triển khai exponential backoff:
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")