REST API 레퍼런스#
Ultralytics Platform은(는) 데이터셋, 모델, 학습 및 배포에 프로그래밍 방식으로 접근할 수 있는 포괄적인 REST API를 제공합니다.

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsUltralytics Platform API docs에서 전체 대화형 API 레퍼런스를 살펴보세요.
API 개요#
본 API는 핵심 플랫폼 리소스를 중심으로 구성되어 있습니다:
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| 리소스 | 설명 | 주요 작업 |
|---|---|---|
| Datasets | 레이블이 지정된 이미지 컬렉션 | CRUD, 이미지, 레이블, 내보내기, 버전, 복제 |
| Projects | 학습 워크스페이스 | CRUD, 복제, 아이콘 |
| Models | 학습된 체크포인트 | CRUD, 예측, 다운로드, 복제, 내보내기 |
| Deployments | 전용 추론 엔드포인트 | CRUD, 시작/중지, 메트릭, 로그, 상태 |
| Exports | 형식 변환 작업 | 생성, 상태, 다운로드 |
| Training | 클라우드 GPU 학습 작업 | 시작, 상태, 취소 |
| Billing | 크레딧 및 사용량 | 잔액, 사용량, 거래 내역 |
| Teams | 워크스페이스 협업 | 워크스페이스, 멤버, 역할 |
인증#
리소스 API는 데이터셋 클래스 및 분할 관리, 복제, 학습, 내보내기, 배포, 지원되는 계정 읽기 등을 포함하여 API 키 인증을 사용합니다. 공용 엔드포인트는 명시된 경우 익명 액세스를 지원합니다. 브라우저 전용 애플리케이션 경로는 제외됩니다.
API 키 가져오기#
Settings>API Keys(으)로 이동합니다.Create Key클릭- 생성된 키를 복사합니다.
자세한 지침은 API Keys를 참조하세요.
인증 헤더#
모든 요청에 API 키를 포함하십시오:
Authorization: Bearer YOUR_API_KEYAPI 키는 ul_ 형식 뒤에 40자의 1진수 문자가 붙는 형태를 사용합니다. 키를 비밀로 유지하고 -- 버전 제어 시스템에 커밋하거나 공개적으로 공유하지 마세요.
예시#
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets기본 URL#
모든 API 엔드포인트는 다음을 사용합니다:
https://platform.ultralytics.com/api속도 제한(Rate Limits)#
API는 API 키당 Upstash Redis 기반의 슬라이딩 윈도우 제한을 적용합니다. 각 라우트는 아래의 해당 카테고리를 사용합니다.
요청 제한(throttled)에 도달하면 API는 재시도 메타데이터와 함께 429을(를) 반환합니다:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000ZAPI 키별 제한#
속도 제한은 호출되는 엔드포인트에 따라 자동으로 적용됩니다. 비용이 많이 드는 작업은 남용 방지를 위해 더 엄격한 제한이 적용되며, 표준 CRUD 작업은 다음과 같은 관대한 기본값을 공유합니다:
| 카테고리 | 제한 | 적용 대상 |
|---|---|---|
| 기본값 | 분당 100회 요청 | 아래 카테고리에 할당되지 않은 라우트 |
| 학습 | 분당 10회 요청 | 클라우드 학습 시작 |
| 업로드 | 분당 10회 요청 | 서명된 업로드 URL, 업로드 완료 및 데이터셋 인게스트 |
| 예측 | 분당 20회 요청 | Platform API 라우트를 통한 모델 및 배포 추론 |
| 내보내기 | 분당 20회 요청 | 모델 내보내기 라우트 및 데이터셋 내보내기/버전 라우트 |
| 다운로드 | 분당 30회 요청 | 모델 파일 다운로드 |
| Mutation (변경) | 분당 10회 요청 | 팀 생성, 스토리지 통합 변경, API 키, 멤버, 초대, 배포 시작/중지 |
| 결제 | 5 requests/min (분당 5회 요청) | 자동 충전 및 구독 결제 라우트 |
| Hydrate (하이드레이트) | 분당 20회 요청 | 선택한 데이터셋 이미지 세트 하이드레이션 |
| Clustering (클러스터링) | 분당 10회 요청 | 데이터셋 이미지 클러스터링 |
각 범주는 API 키당 독립적인 카운터를 가집니다. 예를 들어, 20회의 예측 요청을 수행해도 분당 100회 요청인 기본 허용량에는 영향을 주지 않습니다.
전용 엔드포인트 (무제한)#
Dedicated endpoints는 엔드포인트 URL을 직접 호출할 때 Platform API-key rate limits의 적용을 받지 않습니다 (예: https://predict-abc123.run.app/predict). 처리량은 배포된 서비스 구성에 따라 달라집니다.
429 상태 코드를 수신한 경우, 재시도하기 전에 Retry-After(또는 X-RateLimit-Reset까지) 동안 기다리세요. 지수 백오프 구현에 대해서는 rate limit FAQ를 참조하세요.
응답 형식#
성공 응답#
응답은 리소스별 필드를 포함하는 JSON을 반환합니다:
{
"datasets": [...],
"total": 100
}오류 응답#
{
"error": "Dataset not found"
}| HTTP 상태 | 의미 |
|---|---|
200 | 성공 |
201 | 생성됨 |
400 | 잘못된 요청 |
401 | 인증 필요 |
403 | 권한 부족 |
404 | 리소스 찾을 수 없음 |
409 | 충돌 (중복) |
429 | 요청 한도 초과 |
500 | 서버 오류 |
데이터셋 API#
YOLO 모델 학습을 위한 라벨이 지정된 이미지 데이터셋을 생성, 탐색 및 관리합니다. Datasets documentation을(를) 참조하세요.
데이터셋 목록 조회#
GET /api/datasets쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
username | 문자열(string) | 사용자 이름으로 필터링 |
limit | 정수(int) | 페이지당 항목 수 (기본값: 1000, 최대값: 1000) |
owner | 문자열(string) | 워크스페이스 소유자 사용자 이름 |
includeImageUrls | 부울(boolean) | 서명된 전체 크기 샘플 이미지 URL 포함(기본값: false) |
includeSamples | 부울(boolean) | 샘플 이미지를 생략하고 응답 크기를 줄이려면 false을(를) 설정하세요. |
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}클래스 이름, 분할 수 및 기타 플랫폼 관리 속성을 포함한 데이터셋 세부 정보를 반환합니다. 사용자 정의 메타데이터는 아래의 메타데이터 엔드포인트에서 별도로 로드됩니다.
{datasetId}이 ID가 아닌 데이터셋 슬러그인 경우 username을 전달합니다.
데이터셋 생성#
POST /api/datasets본문:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"metadata": { "location": "factory-1", "reviewed": true },
"visibility": "private",
"classNames": ["person", "car"]
}유효한 task 값: detect, segment, semantic, classify, pose, obb.
응답:
{
"datasetId": "dataset_abc123",
"slug": "my-dataset",
"region": "us"
}데이터셋 업데이트#
PATCH /api/datasets/{datasetId}본문 (부분 업데이트):
{
"name": "Updated Name",
"description": "New description",
"metadata": { "location": "factory-2", "reviewed": true },
"visibility": "public"
}사용자 정의 메타데이터를 지우려면 빈 metadata 객체({})를 전송하세요. 직렬화된 메타데이터 객체는 500,000자로 제한되며, 각 최상위 키는 128자로 제한됩니다.
데이터셋 메타데이터 가져오기#
GET /api/datasets/{datasetId}/metadata사용자 정의 메타데이터 객체와 Ultralytics가 관리하는 읽기 전용 필드/값 쌍의 선별된 세트를 반환합니다. 사용자 정의 메타데이터는 일반 데이터셋 페이로드에서 의도적으로 생략됩니다. 인증 및 데이터셋 워크스페이스 액세스 권한이 필요합니다.
데이터셋 아이콘#
POST /api/datasets/{datasetId}/icon
DELETE /api/datasets/{datasetId}/icon최대 5 MB 크기의 WebP 아이콘을 멀티파트 폼 필드 image(으)로 업로드하거나 현재 아이콘을 제거합니다.
데이터셋 삭제#
DELETE /api/datasets/{datasetId}데이터셋을 소프트 삭제합니다(trash(으)로 이동되며, 30일 동안 복구 가능).
데이터셋 복제#
POST /api/datasets/{datasetId}/clone모든 이미지와 라벨을 포함하여 공개, 소유 또는 편집 가능한 워크스페이스 데이터셋의 복사본을 생성합니다.
선택적 본문 (모든 필드는 선택 사항):
{
"name": "cloned-dataset",
"slug": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"license": "AGPL-3.0",
"owner": "team-username"
}데이터셋 내보내기#
GET /api/datasets/{datasetId}/export최신 데이터셋 내보내기에 대한 서명된 다운로드 URL이 포함된 JSON 응답을 반환합니다.
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
v | 정수 | 버전 번호 (1부터 시작하는 인덱스). 생략 시 가장 최근의 수정 가능한 내보내기를 반환하며, 데이터셋에 변경 사항이 없는 경우 이를 재사용합니다. |
응답:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}데이터셋 버전 생성#
POST /api/datasets/{datasetId}/export데이터셋의 새로운 번호가 매겨진 버전 스냅샷을 생성합니다. 이는 Editor 권한 이상이 필요합니다. 버전은 현재 이미지 수, 클래스 수, 주석 수, 분할 분포를 캡처한 다음 변경 불가능한 NDJSON 내보내기를 생성하고 저장합니다.
요청 본문:
{
"description": "Added 500 training images"
}모든 필드는 선택 사항입니다. description 필드는 사용자가 지정한 버전 레이블입니다.
응답:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}버전 설명 업데이트#
PATCH /api/datasets/{datasetId}/export기존 버전의 설명을 업데이트합니다. 이는 Editor 권한 이상이 필요합니다.
요청 본문:
{
"version": 2,
"description": "Fixed mislabeled classes"
}응답:
{
"ok": true
}데이터셋 버전 복원#
POST /api/datasets/{datasetId}/restore이미지 바이트를 복사하지 않고 저장된 버전에서 데이터셋의 이미지, 주석 및 클래스를 재구성합니다.
{
"version": 2
}클래스 통계 가져오기#
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
}클래스 관리#
클래스 병합(소스 클래스에서 대상 클래스로 어노테이션을 재할당한 후 소스 클래스 삭제):
POST /api/datasets/{datasetId}/classes/merge{
"sourceClassIds": [2, 4],
"targetClassId": 1
}클래스 ID는 위치 기반이므로 병합은 멱등하지 않습니다. 재시도하기 전에 데이터셋을 다시 가져오십시오.
클래스 삭제:
POST /api/datasets/{datasetId}/classes/delete{
"classIds": [2, 4]
}데이터 분할 재배포#
POST /api/datasets/{datasetId}/splits/redistribute학습, 검증 및 테스트 분할 전반에 걸쳐 이미지를 무작위로 재할당합니다. 백분율의 합은 100이 되어야 합니다.
{
"train": 80,
"val": 20,
"test": 0
}데이터셋 임베딩#
GET /api/datasets/{datasetId}/embeddings
POST /api/datasets/{datasetId}/embeddings
DELETE /api/datasets/{datasetId}/embeddingsGET은 현재 UMAP 분석 요약 및 활성 작업 상태를 반환합니다. POST는 임베딩 분석 작업을 대기열에 추가하며, DELETE는 활성 작업을 취소합니다.
이미지 클러스터링#
GET /api/datasets/{datasetId}/images/clustering클러스터링 산점도 뷰를 위한 UMAP 2D 레이아웃 및 이미지별 메타데이터를 반환합니다(페이징 및 속도 제한 적용).
데이터셋으로 학습된 모델 가져오기#
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 추론을 실행하여 어노테이션을 자동 생성합니다. 선택한 모델을 사용하여 라벨이 지정되지 않은 이미지의 라벨을 예측합니다.
본문:
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
imageHash | 문자열(string) | 예 | 어노테이션할 이미지의 해시 |
modelId | 문자열(string) | 아니요 | ul:// URI(예: ul://username/project/model) 형식으로 추론에 사용할 모델을 지정합니다. 생략할 경우 데이터셋의 작업별 기본 모델이 사용됩니다. |
confidence | 부동 소수점(float) | 아니요 | 신뢰도 임계값 (기본값: 0.25) |
iou | 부동 소수점(float) | 아니요 | IoU 임계값 (기본값: 0.7) |
데이터셋 수집(Ingest)#
POST /api/datasets/ingest기존 데이터셋에 대한 데이터셋 수집(ingest) 작업을 생성합니다. 대상 데이터셋은 URL 경로가 아니라 JSON 본문에 항상 datasetId(으)로 전달됩니다.
요청 본문에는 datasetId과 함께 sessionId(업로드된 아카이브의 업로드 세션) 또는 sourceUrl(원격 ZIP, TAR, TAR.GZ, TGZ 또는 NDJSON URL) 중 정확히 하나가 필요합니다. 아카이브의 분할 구조를 재정의하려면 선택 사항인 targetSplit(train, val 또는 test)을 추가하십시오. 사용자 지정 메타데이터를 첨부하려면 각 이미지의 정확한 아카이브 상대 경로 또는 NDJSON file 값으로 키가 지정된 imageMetadata을 사용하십시오.
업로드된 아카이브의 경우, 업로드 세션은 POST /api/upload/signed-url에 전달된 assetId에 의해 이미 데이터셋에 바인딩되어 있습니다. 수집(ingest)은 assetId가 본문 datasetId과 일치하는지 검증합니다. 선택 사항인 classMapping 항목은 각 수신 클래스 이름을 기존의 0부터 시작하는 클래스 인덱스, 재사용하거나 생성할 클래스 이름, 또는 클래스를 건너뛰기 위한 null에 매핑합니다. 원격 sourceUrl 가져오기의 경우, 먼저 데이터셋을 생성한 다음 수집(ingest)에 해당 datasetId을 전달합니다.
본문 (업로드된 아카이브):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"targetSplit": "train"
}본문(메타데이터가 포함된 단일 또는 다중 이미지):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"imageMetadata": {
"airbus-wing.jpg": { "aircraft": { "family": "A350" }, "inspectionStatus": "reviewed" },
"images/tail.jpg": { "aircraft": { "family": "A320" }, "inspectionSeverity": 2 }
}
}로컬 이미지는 아카이브에 이미지가 하나이든 여러 개이든 상관없이 기존 아카이브 업로드 흐름을 사용합니다. 키는 폴더를 포함하여 아카이브 내의 정규화된 경로와 일치해야 합니다. NDJSON 가져오기의 경우, 각 이미지 레코드에 자체 metadata 객체가 대신 포함될 수 있습니다. 레코드 로컬 metadata은 일치하는 imageMetadata 항목보다 우선합니다.
메타데이터는 JSON이며 중첩된 값을 지원합니다. 아카이브 경로는 1,024자, 최상위 메타데이터 키는 128자, 각 메타데이터 객체는 직렬화된 문자 기준 500,000자로 제한됩니다. 전체 imageMetadata 맵 또는 NDJSON 가져오기 전반의 결합된 유효 메타데이터 역시 직렬화된 문자 기준 500,000자로 제한됩니다. 이러한 제약 조건은 인터랙티브 OpenAPI 스키마에 포함되어 있습니다.
Python을 사용하여 메타데이터와 함께 단일 이미지 업로드하기
동일한 코드로 이미지 그룹을 처리할 수 있습니다. ZIP에 파일을 더 추가하고 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())본문 (원격 아카이브 또는 NDJSON):
{
"datasetId": "dataset_abc123",
"sourceUrl": "https://example.com/my-dataset.zip"
}본문 (이후 ingest, 레이블 가져오기):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"classMapping": { "person": 0, "automobile": "car", "background": null }
}첫 번째 수집(ingest)은 아카이브에서 클래스를 자동으로 생성합니다. 이후 수집 시 classMapping에서 생략된 아카이브 클래스는 먼저 기존 데이터셋 클래스와 대소문자를 구분하지 않는 일치 항목을 찾습니다. null에 명시적으로 매핑되었거나 일치하는 기존 클래스가 없는 클래스의 라벨만 건너뜁니다.
응답:
{
"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:#fff데이터셋 이미지#
이미지 목록 조회#
GET /api/datasets/{datasetId}/images쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
split | 문자열(string) | 분할(split)별 필터링: train, val, test |
offset | 정수(int) | 페이지 매김 오프셋 (기본값: 0) |
limit | 정수(int) | 페이지당 항목 수 (기본값: 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(10만 개 이상의 이미지 데이터셋의 경우 일부 비활성화됨) |
hasLabel | 문자열(string) | 라벨 상태별 필터링(true 또는 false) |
hasError | 문자열(string) | 오류 상태별 필터링(true 또는 false) |
search | 문자열(string) | 파일명, 사용자 정의 메타데이터 키, 스칼라 값 및 배열 항목에 대한 부분 문자열 일치(하위 객체 내부에 중첩된 값은 일치하지 않음); 32자리 1진수 문자열은 정확한 이미지 해시 조회입니다. |
classIds | 문자열(string) | 쉼표로 구분된 클래스 ID이며, 지정된 클래스 중 하나라도 포함하는 이미지를 반환합니다. |
includeThumbnails | 문자열(string) | 서명된 썸네일 URL 포함(기본값: true) |
includeImageUrls | 문자열(string) | 서명된 전체 이미지 URL 포함(기본값: false) |
선택한 이미지 가져오기#
POST /api/datasets/{datasetId}/images최대 1,000개의 제공된 이미지 ID에 대해 동일한 이미지 모양을 반환합니다. 목록 작업과 동일한 URL 및 라벨 쿼리 제어를 수락합니다.
{
"imageIds": ["IMAGE_OBJECT_ID"]
}서명된 이미지 URL 가져오기#
POST /api/datasets/{datasetId}/images/urls이미지 해시 배치에 대한 서명된 URL을 가져옵니다 (브라우저 표시용).
이미지 삭제#
DELETE /api/datasets/{datasetId}/images/{hash}이미지 라벨 가져오기#
GET /api/datasets/{datasetId}/images/{hash}/labels특정 이미지에 대한 어노테이션과 클래스 이름을 반환합니다.
이미지 라벨 업데이트#
PUT /api/datasets/{datasetId}/images/{hash}/labels본문:
{
"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] }
]
}라벨 좌표는 0과 1 사이의 YOLO 정규화된 값을 사용합니다. 바운딩 박스는 [x_center, y_center, width, height]을(를) 사용합니다.
세분화(segmentation) 라벨은 다각형 꼭짓점의 평탄화된 목록인 segments인 [x1, y1, x2, y2, ...]을(를) 사용합니다.
대량 이미지 작업#
데이터셋 내에서 분할(train/val/test) 간 이미지 이동:
PATCH /api/datasets/{datasetId}/images/bulk대량 이미지 삭제:
DELETE /api/datasets/{datasetId}/images/bulk프로젝트 API#
모델을 프로젝트별로 정리하세요. 각 모델은 하나의 프로젝트에 속합니다. Projects documentation을(를) 참조하세요.
프로젝트 목록 조회#
GET /api/projects쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
username | 문자열(string) | 사용자 이름으로 필터링 |
limit | 정수(int) | 페이지당 항목 수 |
owner | 문자열(string) | 워크스페이스 소유자 사용자 이름 |
프로젝트 가져오기#
GET /api/projects/{projectId}프로젝트 생성#
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/projects프로젝트 업데이트#
PATCH /api/projects/{projectId}본문 (부분 업데이트):
{
"metadata": { "department": "research", "program": "inspection" }
}이를 지우려면 빈 metadata 객체({})를 전송하세요. 프로젝트 메타데이터는 데이터셋 메타데이터와 동일하게 128자의 최상위 키 및 500,000자의 직렬화된 객체 제한을 사용합니다.
프로젝트 메타데이터 가져오기#
GET /api/projects/{projectId}/metadata사용자 정의 메타데이터 객체와 Ultralytics가 관리하는 읽기 전용 필드/값 쌍을 반환합니다. 인증 및 프로젝트 워크스페이스 액세스 권한이 필요합니다.
프로젝트 삭제#
DELETE /api/projects/{projectId}프로젝트를 소프트 삭제합니다(trash(으)로 이동됨).
프로젝트 복제#
POST /api/projects/{projectId}/clone공개, 소유 또는 편집 가능한 워크스페이스 프로젝트와 해당 모델을 계정 또는 워크스페이스로 복제합니다. 선택 사항인 JSON 본문은 name, slug, description, visibility, license 및 대상 owner 재정의를 허용합니다.
프로젝트 아이콘#
POST /api/projects/{projectId}/icon
DELETE /api/projects/{projectId}/icon최대 5 MB 크기의 WebP 아이콘을 멀티파트 폼 필드 image(으)로 업로드하거나 현재 아이콘을 제거합니다.
모델 API#
학습된 YOLO 모델 관리 — 메트릭 보기, 가중치 다운로드, 추론 실행 및 다른 형식으로 내보내기. Models documentation을(를) 참조하세요.
모델 목록 조회#
GET /api/models쿼리 매개변수:
| 파라미터 | 유형 | 필수 | 설명 |
|---|---|---|---|
projectId | 문자열(string) | 예 | 프로젝트 ID (필수) |
fields | 문자열(string) | 아니요 | 필드 세트: summary, charts |
ids | 문자열(string) | 아니요 | 쉼표로 구분된 모델 ID |
limit | 정수(int) | 아니요 | 최대 결과 수 (기본값 20, 최대 100) |
완료된 모델 목록 조회#
GET /api/models/completed학습 및 배포에 사용할 수 있는 가중치를 가진 모든 프로젝트의 모델을 최대 1,000개까지 반환합니다. 워크스페이스용으로 owner을(를) 전달하세요.
모델 조회#
GET /api/models/{modelId}모델 생성#
POST /api/modelsJSON 본문:
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
projectId | 문자열(string) | 예 | 대상 프로젝트 ID |
slug | 문자열(string) | 아니요 | URL 슬러그 (영문 소문자, 숫자/하이픈 조합) |
name | 문자열(string) | 아니요 | 표시 이름 (최대 100자) |
description | 문자열(string) | 아니요 | 모델 설명 (최대 1000자) |
metadata | 객체 | 아니요 | 사용자 정의 JSON 메타데이터 |
task | 문자열(string) | 아니요 | 작업 유형 (detect, segment, semantic, depth, pose, obb, classify) |
.pt 가중치를 첨부하려면 assetType: models 및 이 모델의 ID를 assetId로 지정하여 서명된 업로드 URL을 요청하고, 파일을 업로드한 다음, 반환된 sessionId와 함께 POST /api/upload/complete을 호출합니다.
모델 업데이트#
PATCH /api/models/{modelId}본문 (부분 업데이트):
{
"metadata": { "release": "candidate-3", "reviewed": true }
}이를 지우려면 빈 metadata 객체({})를 전송하세요. 모델 사용자 정의 메타데이터는 학습이 소유한 모델 정보, 환경 세부 정보 및 학습 인자와는 별개이며, 데이터셋 메타데이터와 동일한 직렬화된 객체 및 최상위 키 제한을 사용합니다.
모델 메타데이터 가져오기#
GET /api/models/{modelId}/metadata사용자 정의 메타데이터 객체와 Ultralytics가 관리하는 읽기 전용 필드/값 쌍을 반환합니다. 인증 및 모델 워크스페이스 액세스 권한이 필요합니다.
모델 삭제#
DELETE /api/models/{modelId}모델 파일 다운로드#
GET /api/models/{modelId}/files모델 파일에 대한 서명된 다운로드 URL을 반환합니다.
모델 복제#
POST /api/models/{modelId}/clone공개, 소유 또는 편집 가능한 워크스페이스 모델을 귀하의 프로젝트 중 하나로 복제하십시오.
본문:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
targetProjectSlug | 문자열(string) | 예 | 대상 프로젝트 슬러그 |
modelName | 문자열(string) | 아니요 | 복제할 모델의 이름 |
description | 문자열(string) | 아니요 | 모델 설명 |
owner | 문자열(string) | 아니요 | 팀 사용자 이름 (워크스페이스 복제용) |
다운로드 추적#
POST /api/models/{modelId}/track-download모델 다운로드 분석을 추적합니다.
추론 실행#
POST /api/models/{modelId}/predict공개 모델은 인증 없이 예측할 수 있습니다. 비공개 및 공유 모델은 상위 프로젝트에 액세스할 수 있는 API 키가 필요합니다.
멀티파트 폼:
| 파라미터 | 유형 | 기본값 | 범위 | 설명 |
|---|---|---|---|---|
file | 파일 | - | - | 이미지 또는 비디오 파일 (source이(가) 설정된 경우 제외 필수) |
conf | 부동 소수점(float) | 0.25 | 0.01 – 1.0 | 최소 신뢰도 임계값 |
iou | 부동 소수점(float) | 0.7 | 0.0 – 0.95 | NMS IoU 임계값 |
imgsz | 정수(int) | 640 | 32 – 1280 | 입력 이미지 크기 (픽셀 단위) |
normalize | bool | false | - | 바운딩 박스 좌표를 0 – 1 범위로 반환 |
decimals | 정수(int) | 5 | 0 – 10 | 좌표 값에 대한 소수점 정밀도 |
source | 문자열(string) | - | - | 이미지 URL 또는 base64 문자열 (file의 대안) |
file 또는 source 중 하나를 제공하세요. 최대 업로드 크기는 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/predict응답:
응답에는 이미지별 shape, speed, results 및 선택적 조밀 픽셀 맵 데이터(시맨틱 클래스 맵, 또는 기본 8비트 맵의 경우 제수 255, bits=12|16 사용 시 65535인 깊이 맵 depth = pixel × max / divisor)와 함께 이미지 수, 함수 타이밍, 태스크 및 서비스 버전이 포함된 metadata가 포함됩니다. 내부 모델 경로는 절대 반환되지 않습니다.
{
"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#
클라우드 GPU(RTX 2000 Ada부터 B300까지 26가지 GPU 유형)에서 YOLO 학습을 시작하고 실시간으로 진행 상황을 모니터링하세요. Cloud Training documentation을(를) 참조하세요.
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:#fff학습 시작#
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/start사용 가능한 GPU 유형에는 rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 등이 포함됩니다. 가격이 포함된 전체 목록은 Cloud Training을(를) 참조하세요.
GPU 가용성 확인#
GET /api/training/gpu-availabilityGPU 유형 ID를 키로 하는 현재 GPU 재고 상태(High, Medium, Low 또는 null)를 반환합니다. 공개, 인증 불필요; 5분 동안 캐시됩니다.
학습 상태 가져오기#
GET /api/models/{modelId}/training현재 학습 작업 상태, 메트릭, 진행 상황, 타이밍, GPU 세부 정보 및 오류를 반환합니다. 공개 프로젝트는 인증 없이 액세스할 수 있으며, 비공개 및 공유 프로젝트는 액세스 권한이 있는 API 키가 필요합니다.
학습 취소#
DELETE /api/models/{modelId}/training실행 중인 컴퓨팅 인스턴스를 종료하고 작업을 취소됨으로 표시합니다.
배포 API#
상태 확인 및 모니터링 기능이 포함된 전용 추론 엔드포인트에 모델을 배포합니다. 새 배포는 기본적으로 0으로 확장(scale-to-zero)을 사용하며, API는 선택 사항인 resources 객체를 허용합니다. Endpoints documentation을(를) 참조하세요.
아래의 모든 배포 라우트는 API 키 인증을 허용합니다. 고처리량 추론을 위해 배포 고유의 엔드포인트 URL(예: https://predict-abc123.run.app/predict)을 API 키와 함께 직접 호출하세요. Dedicated endpoints은(는) 요청 제한(rate-limited)이 없습니다.
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:#fff배포 목록 조회#
GET /api/deployments쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
modelId | 문자열(string) | 모델별 필터링 |
status | 문자열(string) | 상태별 필터링 |
limit | 정수(int) | 최대 결과 수 (기본값: 20, 최대: 100) |
owner | 문자열(string) | 워크스페이스 소유자 사용자 이름 |
배포 생성#
POST /api/deployments본문:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
modelId | 문자열(string) | 예 | 배포할 모델 ID |
name | 문자열(string) | 예 | 배포 이름 |
region | 문자열(string) | 예 | 배포 리전 |
resources | 객체 | 아니요 | 리소스 구성(cpu, memoryGi, minInstances, maxInstances) |
지정된 리전에 전용 추론 엔드포인트를 생성합니다. 이 엔드포인트는 고유 URL을 통해 전 세계 어디에서나 접근할 수 있습니다.
현재 배포 대화상자에서는 cpu=1, memoryGi=2, minInstances=0 및 maxInstances=1의 고정된 기본값을 제출합니다. API 라우트는 resources 객체를 허용하지만, 플랜 제한으로 인해 minInstances은(는) 0으로, maxInstances은(는) 1(으)로 제한됩니다.
가장 낮은 지연 시간을 위해 사용자에게 가까운 리전을 선택하십시오. 플랫폼 UI는 사용 가능한 42개 모든 리전에 대한 지연 시간 예상치를 보여줍니다.
배포 조회#
GET /api/deployments/{deploymentId}배포 삭제#
DELETE /api/deployments/{deploymentId}배포 시작#
POST /api/deployments/{deploymentId}/start중지된 배포를 재개합니다.
배포 중지#
POST /api/deployments/{deploymentId}/stop서비스의 최소 및 최대 인스턴스를 0으로 설정하여 요청 처리를 중지합니다.
상태 확인#
GET /api/deployments/{deploymentId}/health배포 엔드포인트의 상태를 반환합니다.
배포에서 추론 실행#
POST /api/deployments/{deploymentId}/predict이미지를 배포 엔드포인트로 직접 보내 추론을 수행합니다. 모델 예측과 기능적으로 동일하지만 지연 시간을 줄이기 위해 전용 엔드포인트를 통합니다.
멀티파트 폼:
| 파라미터 | 유형 | 기본값 | 범위 | 설명 |
|---|---|---|---|---|
file | 파일 | - | - | 이미지 또는 비디오 파일 (source이(가) 설정된 경우 제외 필수) |
conf | 부동 소수점(float) | 0.25 | 0.01 – 1.0 | 최소 신뢰도 임계값 |
iou | 부동 소수점(float) | 0.7 | 0.0 – 0.95 | NMS IoU 임계값 |
imgsz | 정수(int) | 640 | 32 – 1280 | 입력 이미지 크기 (픽셀 단위) |
normalize | bool | false | - | 바운딩 박스 좌표를 0 – 1 범위로 반환 |
decimals | 정수(int) | 5 | 0 – 10 | 좌표 값에 대한 소수점 정밀도 |
source | 문자열(string) | - | - | 이미지 URL 또는 base64 문자열 (file의 대안) |
file 또는 source 중 하나를 제공하세요. 응답은 모델 예측과 동일한 이미지 및 메타데이터 계약을 사용하며 내부 모델 경로를 절대 반환하지 않습니다.
지표 가져오기#
GET /api/deployments/{deploymentId}/metrics스파크라인 데이터를 포함한 요청 수, 지연 시간 및 오류율 지표를 반환합니다.
쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
range | 문자열(string) | 시간 범위: 1h, 6h, 24h(기본값), 7d, 30d |
sparkline | 문자열(string) | 대시보드 보기용으로 최적화된 스파크라인 데이터를 위해 true(으)로 설정합니다. |
로그 가져오기#
GET /api/deployments/{deploymentId}/logs쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
severity | 문자열(string) | 쉼표로 구분된 필터: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | 정수(int) | 항목 수 (기본값: 50, 최대: 200) |
pageToken | 문자열(string) | 이전 응답에서 가져온 페이지네이션 토큰 |
내보내기 API#
엣지 배포를 위해 모델을 ONNX, TensorRT, CoreML 및 LiteRT와 같은 최적화된 형식으로 변환합니다. Deploy documentation을(를) 참조하세요.
내보내기 목록#
GET /api/exports쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
modelId | 문자열(string) | 모델 ID (필수) |
status | 문자열(string) | 상태별 필터링 |
limit | 정수(int) | 최대 결과 수 (기본값: 20, 최대: 100) |
내보내기 생성#
POST /api/exports본문:
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
modelId | 문자열(string) | 예 | 소스 모델 ID |
format | 문자열(string) | 예 | 내보내기 형식 (아래 표 참조) |
gpuType | 문자열(string) | 조건부 | format이(가) engine일 때 필요합니다. 지원되는 GPU 또는 Jetson target을(를) 사용하세요. |
args | 객체 | 아니요 | 내보내기 인수(imgsz, quantize, 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 인수를 사용하세요. PyTorch는 소스 형식이며 API 내보내기 대상이 아닙니다.
| 형식 | format 인수 | 모델 | 메타데이터 | 인수 |
|---|---|---|---|---|
| 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 |
내보내기 상태 가져오기#
GET /api/exports/{exportId}내보내기 취소#
DELETE /api/exports/{exportId}내보내기 다운로드 추적#
POST /api/exports/{exportId}/track-download활동 API#
계정의 최근 활동 피드(학습 실행, 업로드 등)를 확인하세요. Activity documentation을(를) 참조하세요.
아래의 모든 활동(Activity) 경로는 API 키 인증을 수락합니다.
활동 목록#
GET /api/activity쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
limit | 정수(int) | 페이지 크기(기본값: 20, 최대: 100) |
page | 정수(int) | 페이지 번호(기본값: 1) |
archived | 부울(boolean) | 아카이브 탭의 경우 true, 받은 편지함의 경우 false |
search | 문자열(string) | 이벤트 필드 내 대소문자를 구분하지 않는 검색 |
start | 날짜 | 이 날짜 이후의 이벤트 포함 |
end | 날짜 | 이 날짜 이전의 이벤트 포함 |
export | 부울(boolean) | 일치하는 모든 이벤트를 JSON으로 반환 |
owner | 문자열(string) | 워크스페이스 사용자 이름 |
이벤트를 확인됨으로 표시#
POST /api/activity/mark-seen본문:
{
"all": true
}또는 특정 ID를 전달하십시오:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}워크스페이스의 이벤트를 표시하려면 선택 사항인 owner 쿼리 파라미터를 전달하세요.
이벤트 보관#
POST /api/activity/archive본문:
{
"all": true,
"archive": true
}또는 특정 ID를 전달하십시오:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}워크스페이스 이벤트를 보관하거나 복원하려면 선택 사항인 owner 쿼리 파라미터를 전달하세요.
휴지통 API#
삭제된 항목을 확인하고 복원합니다. 항목은 30일 후에 영구적으로 제거됩니다. Trash documentation을(를) 참조하세요.
휴지통 목록#
GET /api/trash쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
type | 문자열(string) | 필터: all, project, dataset, model |
page | 정수(int) | 페이지 번호(기본값: 1) |
limit | 정수(int) | 페이지당 항목 수(기본값: 50, 최대: 200) |
owner | 문자열(string) | 워크스페이스 소유자 사용자 이름 |
항목 복원#
POST /api/trash본문:
{
"id": "item_abc123",
"type": "dataset"
}항목 영구 삭제#
DELETE /api/trash본문:
{
"id": "item_abc123",
"type": "dataset"
}영구 삭제는 취소할 수 없습니다. 리소스와 모든 관련 데이터가 제거됩니다.
휴지통 비우기#
DELETE /api/trash/empty휴지통의 모든 항목을 영구적으로 삭제합니다.
DELETE /api/trash/empty은(는) API 키 인증을 허용하며 선택한 계정 또는 워크스페이스 휴지통에 있는 모든 항목을 영구적으로 삭제합니다.
결제 API#
크레딧 잔액, 플랜 사용량 및 거래 내역을 확인하세요. Billing documentation을(를) 참조하세요.
잔액 및 거래 엔드포인트는 워크스페이스 소유자의 사용자 이름이 포함된 선택 사항인 owner 쿼리 파라미터를 허용합니다.
청구 금액은 100 = $1.00인 센트 단위(creditsCents)를 사용합니다.
잔액 가져오기#
GET /api/billing/balance응답:
{
"creditsCents": 2500,
"plan": "free"
}사용 요약 가져오기#
GET /api/billing/usage-summary플랜 세부 정보, 제한 사항 및 사용량 메트릭을 반환합니다.
거래 내역 가져오기#
GET /api/billing/transactions거래 내역을 반환합니다(최근 항목 우선).
거래 내역에는 금액, 결과 잔액, 날짜, 선택적 모델 컨텍스트 및 영수증 URL과 같은 클라이언트용 원장 필드가 포함됩니다. 내부 메모, Stripe 결제/환불 ID 및 멱등성 키는 반환되지 않습니다.
스토리지 API#
카테고리별(데이터셋, 모델, 내보내기) 스토리지 사용 내역을 확인하고 가장 용량이 큰 항목을 확인합니다.
GET /api/storage은(는) API 키 인증을 허용합니다. 동일한 대화형 내역 분석을 보려면 Settings > Profile 페이지를 사용하세요.
스토리지 정보 가져오기#
GET /api/storage쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
details | 부울(boolean) | topItems(가장 큰 데이터셋, 모델, 내보내기)을 포함하려면 true(으)로 설정합니다. |
owner | 문자열(string) | 워크스페이스 사용자 이름입니다. |
응답:
{
"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"
}
]
}
}클라우드 스토리지 통합#
읽기 전용 GCS, S3 또는 Azure Blob 스토리지 통합을 연결하고 탐색하십시오:
GET /api/integrations/buckets
POST /api/integrations/buckets
POST /api/integrations/buckets/discover
GET /api/integrations/buckets/{id}/objects4가지 작업 모두 워크스페이스용 선택적 owner 쿼리 파라미터를 허용합니다. 객체 탐색은 필수 target 및 선택적 prefix와 공급자 cursor 쿼리 파라미터도 허용합니다. 연결 및 검색 요청 본문은 대화형 OpenAPI 레퍼런스의 공급자 자격 증명 스키마를 사용하며, 자격 증명은 절대 반환되지 않습니다.
업로드 API#
빠르고 안정적인 전송을 위해 서명된 URL을 사용하여 클라우드 스토리지에 파일을 직접 업로드합니다. 모델 업로드를 완료하면 가중치가 첨부됩니다. 데이터셋 아카이브 업로드를 완료하면 세션이 기록됩니다. 해당 sessionId을(를) POST /api/datasets/ingest에 전달하여 처리를 시작하세요. Data documentation을(를) 참조하세요.
서명된 업로드 URL 가져오기#
POST /api/upload/signed-url클라우드 스토리지로 직접 파일을 업로드하기 위한 서명된 URL을 요청합니다. 서명된 URL은 대용량 파일 전송 시 API 서버를 우회합니다.
본문:
{
"assetType": "datasets",
"assetId": "dataset_abc123",
"filename": "my-dataset.zip",
"contentType": "application/zip",
"totalBytes": 52428800
}| 필드 | 유형 | 설명 |
|---|---|---|
assetType | 문자열(string) | 에셋 유형: models, datasets, images, videos |
assetId | 문자열(string) | 대상 에셋의 ID |
filename | 문자열(string) | 원본 파일명 |
contentType | 문자열(string) | MIME 유형 |
totalBytes | 정수(int) | 바이트 단위의 파일 크기 |
응답:
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.example.com/...",
"expiresAt": "2026-02-22T12:00:00Z"
}업로드 완료#
POST /api/upload/complete파일 업로드가 완료되었음을 플랫폼에 알립니다. 모델의 경우 업로드된 가중치를 첨부합니다. 데이터셋 아카이브의 경우 업로드 세션을 확인하고 기록합니다. 이후 데이터셋 처리를 시작하려면 POST /api/datasets/ingest을(를) 호출하세요.
본문:
{
"sessionId": "session_abc123",
"checksum": "<optional sha-256 hex>"
}통합 API#
타사 서비스에서 데이터셋을 가져옵니다. Integrations documentation을(를) 참조하세요.
Roboflow 가져오기 미리보기#
POST /api/integrations/roboflow/previewRoboflow API 키를 통해 대량 가져오기 계획을 확인합니다: 워크스페이스 정보, 새로 가져올 프로젝트, 이미 가져온 버전 수(건너뜀) 및 지원되지 않는 프로젝트 유형. Roboflow API 키는 본문에 전달되며 저장되지 않습니다.
Roboflow에서 가져오기#
POST /api/integrations/roboflow/import선택한 Roboflow 프로젝트를 워크스페이스로 가져오기 위해 데이터셋 수집 작업을 대기열에 추가합니다. 저장 공간 여유가 필요하며, 각 데이터셋은 귀하의 요금제별 가져오기 크기 제한을 충족해야 합니다.
API 키 API#
프로그래밍 방식 액세스를 위한 API 키를 관리하세요. API Keys documentation을(를) 참조하세요.
API 키 목록#
GET /api/api-keysAPI 키 인증 클라이언트는 키 메타데이터를 수신하며, 복호화된 기존 키 값은 절대 수신하지 않습니다. 새로 생성된 키는 POST /api/api-keys에 의해 한 번 반환됩니다.
편집자 권한이 있는 워크스페이스의 키를 관리하려면 선택 사항인 owner 쿼리 파라미터를 전달하세요.
API 키 생성#
POST /api/api-keys본문:
{
"name": "training-server"
}API 키 삭제#
DELETE /api/api-keys쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
keyId | 문자열(string) | 취소할 API 키 ID |
owner | 문자열(string) | 선택적 워크스페이스 사용자 이름입니다. |
예시:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"팀 및 멤버 API#
팀 워크스페이스를 만들고, 멤버를 초대하고, 협업을 위한 역할을 관리하세요. Teams documentation을(를) 참조하세요.
팀 목록#
GET /api/teams팀 생성#
POST /api/teams/create본문:
{
"username": "my-team",
"fullName": "My Team"
}멤버 목록#
GET /api/members현재 워크스페이스의 멤버를 반환합니다.
멤버 초대#
POST /api/members본문:
{
"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탐색(Explore) API#
커뮤니티에서 공유한 공개 데이터셋과 프로젝트를 검색하고 탐색하세요. Explore documentation을(를) 참조하세요.
공개 콘텐츠 검색#
GET /api/explore/search쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
q | 문자열(string) | 검색 쿼리 |
type | 문자열(string) | 리소스 유형: all(기본값), projects, datasets |
sort | 문자열(string) | 정렬 순서: newest(기본값), stars, oldest, name-asc, name-desc, count-desc, count-asc |
offset | 정수(int) | 페이지네이션 오프셋 (기본값: 0). 결과는 페이지당 20개 항목을 반환합니다. |
task | 문자열(string) | 선택 사항: 데이터셋을 필터링하기 위한 쉼표로 구분된 YOLO 작업 유형(detect, segment, semantic, classify, pose, obb) |
author | 문자열(string) | 선택적 소유자 사용자 이름 필터입니다. |
starred | 부울(boolean) | 인증된 호출자가 별표 표시한 콘텐츠를 반환하려면 true을(를) 설정하세요. API 키가 필요합니다. |
사이드바 데이터#
GET /api/explore/sidebar탐색 사이드바를 위한 추천 콘텐츠를 반환합니다.
사용자 및 설정 API#
프로필, API 키, 스토리지 사용량 및 팀 워크스페이스를 관리하세요. Settings documentation을(를) 참조하세요.
계정 요약#
GET /api/account/summary인증된 계정의 플랜, 크레딧 잔액, 리소스 수 및 팀 워크스페이스를 반환합니다.
사용자 이름으로 사용자 가져오기#
GET /api/users쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
username | 문자열(string) | 조회할 사용자 이름 |
사용자 팔로우 또는 언팔로우#
PATCH /api/users본문:
{
"username": "target-user",
"followed": true
}사용자 이름 사용 가능 여부 확인#
GET /api/username/check쿼리 매개변수:
| 파라미터 | 유형 | 설명 |
|---|---|---|
username | 문자열(string) | 확인할 사용자 이름 |
suggest | bool | 선택 사항: 이미 사용 중인 경우 제안을 포함하기 위한 true |
설정#
GET /api/settings
POST /api/settings사용자 프로필 설정(표시 이름, 소개, 소셜 링크 등)을 가져오거나 업데이트합니다.
워크스페이스 아이콘#
POST /api/settings/icon
DELETE /api/settings/icon최대 5 MB 크기의 WebP 프로필/워크스페이스 아이콘을 멀티파트 폼 필드 image(으)로 업로드하거나 제거합니다. 팀 워크스페이스를 위해 선택 사항인 owner을(를) 전달하세요.
Python 통합#
더 쉬운 통합을 위해 인증, 업로드 및 실시간 메트릭 스트리밍을 자동으로 처리하는 Ultralytics Python 패키지를 사용하십시오.
설치 및 설정#
pip install "ultralytics>=8.4.104"설치 확인:
yolo check인증#
yolo login YOUR_API_KEY플랫폼 데이터셋 사용#
ul:// URI로 데이터셋 참조:
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 형식:
| 패턴 | 설명 |
|---|---|
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, 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 classification검증:
metrics = model.val(data="ul://username/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")FAQ#
대규모 결과를 페이지로 나누려면 어떻게 해야 합니까?#
대부분의 엔드포인트는 요청당 반환되는 결과 수를 제어하기 위해 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) 엔드포인트는 page 대신 offset을 사용하며, 고정 페이지 크기는 20입니다.
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"SDK 없이 API를 사용할 수 있습니까?#
위에 문서화된 공개 REST 작업은 Python SDK 없이도 사용할 수 있습니다. SDK는 실시간 메트릭 스트리밍 및 자동 모델 업로드와 같은 기능을 추가하는 편리한 래퍼입니다. platform.ultralytics.com/api/docs에서 머신 레더블 계약을 대화형으로 탐색할 수 있으며, 브라우저 세션 전용 계정 흐름은 Platform UI에 유지됩니다.
API 클라이언트 라이브러리가 있습니까?#
Ultralytics Python 패키지를 사용하거나 모든 언어에서 직접 HTTP 요청을 만드세요.
요청 제한(rate limit)은 어떻게 처리합니까?#
올바른 시간 동안 기다리려면 429 응답의 Retry-After 헤더를 사용하세요:
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")모델 또는 데이터셋 ID는 어떻게 찾습니까?#
리소스 ID는 생성, 목록 조회 및 가져오기 API 응답에 의해 반환됩니다. Platform 페이지 URL은 데이터베이스 ID가 아니라 사람이 읽을 수 있는 슬러그를 사용합니다:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project model목록 엔드포인트를 사용하여 모델, 데이터셋, 프로젝트, 배포 또는 기타 리소스에 해당하는 _id을(를) 찾으세요.