REST API
Ultralytics 데이터셋, 모델, 훈련 및 배포에 대한 프로그래매틱 접근을 REST API 포괄적인 REST API 제공합니다.
빠른 시작
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
인증
모든 API 요청은 API 키를 통한 인증이 필요합니다.
API 키 받기
- 설정 > API 키로 이동하세요
- 키 생성
- 생성된 키를 복사하세요
자세한 지침은 API 키를 참조하십시오.
인증 헤더
모든 요청에 API 키를 포함하십시오:
Authorization: Bearer ul_your_api_key_here
예시
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
기본 URL
모든 API 엔드포인트는 다음을 사용합니다:
https://platform.ultralytics.com/api
속도 제한
| 계획 | 분당 요청 수 | 요청/일 |
|---|---|---|
| 무료 | 60 | 1,000 |
| Pro | 300 | 50,000 |
| 기업 | 사용자 정의 | 사용자 정의 |
응답에 속도 제한 헤더가 포함됩니다:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
응답 형식
모든 응답은 JSON 형식입니다:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
오류 응답
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
데이터셋 API
데이터 세트 목록
GET /api/datasets
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
page | int | 페이지 번호 (기본값: 1) |
limit | int | 페이지당 항목 수 (기본값: 20) |
task | 문자열 | 작업 유형별로 필터링 |
응답:
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
데이터셋 가져오기
GET /api/datasets/{datasetId}
데이터셋 생성
POST /api/datasets
본문:
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
데이터세트 삭제
DELETE /api/datasets/{datasetId}
데이터셋 내보내기
POST /api/datasets/{datasetId}/export
NDJSON 형식의 다운로드 URL을 반환합니다.
프로젝트 API
프로젝트 목록
GET /api/projects
프로젝트 받기
GET /api/projects/{projectId}
프로젝트 생성
POST /api/projects
본문:
{
"name": "my-project",
"description": "Detection experiments"
}
프로젝트 삭제
DELETE /api/projects/{projectId}
모델 API
목록 모델
GET /api/models
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
projectId | 문자열 | 프로젝트별로 필터링 |
task | 문자열 | 작업 유형별로 필터링 |
모델 가져오기
GET /api/models/{modelId}
모델 업로드
POST /api/models
다중 부분 양식:
| 필드 | 유형 | 설명 |
|---|---|---|
file | 파일 | 모델 .pt 파일 |
projectId | 문자열 | 대상 프로젝트 |
name | 문자열 | 모델명 |
모델 삭제
DELETE /api/models/{modelId}
모델 다운로드
GET /api/models/{modelId}/files
모델 파일의 서명된 다운로드 URL을 반환합니다.
추론 실행
POST /api/models/{modelId}/predict
다중 부분 양식:
| 필드 | 유형 | 설명 |
|---|---|---|
file | 파일 | 이미지 파일 |
conf | 부동 소수점 | 신뢰 임계값 |
iou | 부동 소수점 | IoU |
응답:
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
훈련 API
학습 시작
POST /api/training/start
본문:
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
훈련 상태 확인
GET /api/models/{modelId}/training
훈련 취소
DELETE /api/models/{modelId}/training
배포 API
배포 목록
GET /api/deployments
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
modelId | 문자열 | 모델별로 필터링 |
배포 생성
POST /api/deployments
본문:
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
배포 받기
GET /api/deployments/{deploymentId}
배포 시작
POST /api/deployments/{deploymentId}/start
배포 중지
POST /api/deployments/{deploymentId}/stop
배포 삭제
DELETE /api/deployments/{deploymentId}
메트릭스 확인하기
GET /api/deployments/{deploymentId}/metrics
로그 가져오기
GET /api/deployments/{deploymentId}/logs
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
severity | 문자열 | 정보, 경고, 오류 |
limit | int | 항목 수 |
수출 API
목록 내보내기
GET /api/exports
내보내기 생성
POST /api/exports
본문:
{
"modelId": "model_abc123",
"format": "onnx"
}
지원되는 형식:
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
수출 현황 조회
GET /api/exports/{exportId}
액티비티 API
계정의 활동 이벤트를 추적하고 관리하세요.
활동 목록
GET /api/activity
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
startDate | 문자열 | 날짜(ISO)로 필터링 |
endDate | 문자열 | 날짜별 필터 (ISO) |
search | 문자열 | 이벤트 메시지 검색 |
본 이벤트 표시
POST /api/activity/mark-seen
아카이브 이벤트
POST /api/activity/archive
쓰레기 API
소프트 삭제된 리소스 관리(30일 보존 기간).
목록 휴지통
GET /api/trash
아이템 복원
POST /api/trash
본문:
{
"itemId": "item_abc123",
"type": "dataset"
}
휴지통 비우기
POST /api/trash/empty
휴지통에 있는 모든 항목을 영구적으로 삭제합니다.
청구 API
크레딧 및 구독 관리
균형을 잡으세요
GET /api/billing/balance
응답:
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
마이크로-USD
정확한 회계 처리를 위해 모든 금액은 마이크로 달러(1,000,000 = $1.00)로 표시됩니다.
사용 요약 보기
GET /api/billing/usage-summary
리턴스 플랜 세부 정보, 한도 및 사용량 지표를 반환합니다.
결제 세션 생성
POST /api/billing/checkout-session
본문:
{
"amount": 25
}
신용 구매(5~1000달러)를 위한 Stripe 결제 세션을 생성합니다.
구독 결제 생성
POST /api/billing/subscription-checkout
Pro 구독을 위한 Stripe 결제 세션을 생성합니다.
포털 세션 생성
POST /api/billing/portal-session
구독 관리를 위해 Stripe 결제 포털의 URL을 반환합니다.
결제 내역 확인
GET /api/billing/payments
Stripe에서 결제 거래 목록을 반환합니다.
저장소 API
저장소 정보 가져오기
GET /api/storage
응답:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
GDPR API
데이터 내보내기 및 삭제를 위한 GDPR 준수 엔드포인트.
계정 데이터 내보내기/삭제
POST /api/gdpr
본문:
{
"action": "export"
}
| 액션 | 설명 |
|---|---|
export | 모든 계정 데이터 다운로드 |
delete | 계정 및 모든 데이터 삭제 |
불가역적 행동
계정 삭제는 영구적이며 되돌릴 수 없습니다. 모든 데이터, 모델 및 배포가 삭제됩니다.
API 키 API
API 키 목록
GET /api/api-keys
API 키 생성
POST /api/api-keys
본문:
{
"name": "training-server",
"scopes": ["training", "models"]
}
API 키 삭제
DELETE /api/api-keys/{keyId}
오류 코드
| 코드 | 설명 |
|---|---|
UNAUTHORIZED | 잘못되었거나 누락된 API 키 |
FORBIDDEN | 권한이 부족합니다 |
NOT_FOUND | 자원을 찾을 수 없습니다 |
VALIDATION_ERROR | 유효하지 않은 요청 데이터 |
RATE_LIMITED | 요청이 너무 많습니다 |
INTERNAL_ERROR | 서버 오류 |
SDK 지원
통합을 용이하게 하려면 Ultralytics Python 사용하십시오.
패키지 버전 요구 사항
플랫폼 통합에는 ultralytics>= 8.4.0 버전이 필요합니다. 하위 버전은 플랫폼과 호환되지 않습니다.
pip install "ultralytics>=8.4.0"
import os
from ultralytics import YOLO
# Set API key
os.environ["ULTRALYTICS_API_KEY"] = "ul_your_key"
# Train with Platform integration
model = YOLO("yolo11n.pt")
model.train(data="ul://username/datasets/my-dataset", project="username/my-project", name="experiment-1", epochs=100)
웹훅
웹훅은 플랫폼 이벤트를 서버에 알립니다:
| 이벤트 | 설명 |
|---|---|
training.started | 훈련 작업 시작 |
training.epoch | 에포크 완료 |
training.completed | 훈련이 끝났습니다 |
training.failed | 훈련이 실패했습니다 |
export.completed | 수출 준비 완료 |
웹훅 설정은 엔터프라이즈 플랜에서 이용 가능합니다.
FAQ
대량의 결과를 어떻게 페이지 나누나요?
다음을 사용합니다. page 및 limit 파라미터:
GET /api/datasets?page=2 &
limit=50
SDK 없이 API를 사용할 수 있나요?
예, 모든 기능은 REST를 통해 사용할 수 있습니다. SDK는 편의성을 위한 래퍼입니다.
API 클라이언트 라이브러리가 있나요?
현재는 Ultralytics Python 사용하거나 직접 HTTP 요청을 수행하십시오. 다른 언어용 공식 클라이언트 라이브러리는 계획 중입니다.
속도 제한은 어떻게 처리하나요?
지수적 백오프 구현:
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")