Referência da REST API
Plataforma Ultralytics oferece uma REST API abrangente para acesso programático a conjuntos de dados, modelos, treinamento e implantações.

Início Rápido
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
Documentação Interativa da API
Explore a referência completa da API interativa na documentação da API da Plataforma Ultralytics.
Visão Geral da API
A API é organizada em torno dos recursos centrais da plataforma:
graph LR
A[API Key] --> B[Datasets]
A --> C[Projects]
A --> D[Models]
A --> E[Deployments]
B -->|train on| D
C -->|contains| D
D -->|deploy to| E
D -->|export| F[Exports]
B -->|auto-annotate| B
| Recurso | Descrição | Principais Operações |
|---|---|---|
| Conjuntos de dados | Coleções de imagens rotuladas | CRUD, imagens, rótulos, exportar, versões, clonar |
| Projetos | Workspaces de treinamento | CRUD, clonar, ícone |
| Modelos | Checkpoints treinados | CRUD, prever, baixar, clonar, exportar |
| Implantações | Endpoints de inferência dedicados | CRUD, iniciar/parar, métricas, logs, saúde |
| Exportações | Tarefas de conversão de formato | Criar, status, baixar |
| Treinamento | Tarefas de treinamento com GPU na Nuvem | Iniciar, status, cancelar |
| Faturamento | Créditos e assinaturas | Saldo, recarga, métodos de pagamento |
| Equipes | Colaboração no Workspace | Membros, convites, funções |
Autenticação
A maioria das requisições de API requer autenticação via chave de API. Endpoints públicos (listando conjuntos de dados, projetos e modelos públicos) suportam acesso de leitura anônimo sem uma chave.
Obter Chave da API
- Ir para
Settings>Profile(seção Chaves de API) - Clique
Create Key - Copie a chave gerada
Consulte Chaves de API para instruções detalhadas.
Cabeçalho de Autorização
Inclua sua chave de API em todas as requisições:
Authorization: Bearer ul_your_api_key_here
Formato da Chave API
As chaves de API utilizam o formato ul_ seguido por 40 caracteres hexadecimais. Mantenha sua chave em segredo -- nunca a envie para controle de versão ou a compartilhe publicamente.
Exemplo
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
import requests
headers = {"Authorization": "Bearer ul_abc123..."}
response = requests.get(
"https://platform.ultralytics.com/api/datasets",
headers=headers,
)
data = response.json()
const response = await fetch("https://platform.ultralytics.com/api/datasets", {
headers: { Authorization: "Bearer ul_abc123..." },
});
const data = await response.json();
URL Base
Todos os endpoints da API usam:
https://platform.ultralytics.com/api
Limites de Taxa
A API utiliza um sistema de limitação de taxa de duas camadas para proteger contra abusos, mantendo o uso legítimo irrestrito:
- Por chave de API — Limites aplicados por chave de API em requisições autenticadas
- Por IP — 100 requisições/min por endereço IP em todos
/api/*caminhos (aplica-se a requisições autenticadas e não autenticadas)
Quando limitada, a API retorna 429 com metadados de nova tentativa:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z
Limites por Chave de API
Os limites de taxa são aplicados automaticamente com base no endpoint chamado. Operações custosas têm limites mais rigorosos para evitar abusos, enquanto operações CRUD padrão compartilham um padrão generoso:
| Endpoint | Limite | Aplica-se a |
|---|---|---|
| Padrão | 100 requisições/min | Todos os endpoints não listados abaixo (listar, obter, criar, atualizar, excluir) |
| Treinamento | 10 requisições/min | Iniciando trabalhos de treinamento na nuvem (POST /api/training/start) |
| Carregar | 10 requisições/min | Upload de arquivos, URLs assinadas e ingestão de conjuntos de dados |
| Prever | 20 requisições/min | Inferência de modelo partilhada (POST /api/models/{id}/predict) |
| Exportar | 20 requisições/min | Exportações de formato do modelo (POST /api/exports), exportações NDJSON de conjuntos de dados e criação de versão |
| Baixar | 30 requisições/min | Downloads de arquivos de peso do modelo (GET /api/models/{id}/download) |
| Dedicado | Ilimitado | Endpoints dedicados — seu próprio serviço, sem limites de API |
Cada categoria possui um contador independente por chave de API. Por exemplo, fazer 20 requisições de predição não afeta sua permissão padrão de 100 requisições/min.
Endpoints Dedicados (Ilimitado)
Endpoints dedicados são não sujeito a limites de taxa de chave de API. Ao implantar um modelo em um endpoint dedicado, as solicitações para a URL desse endpoint (por exemplo, https://predict-abc123.run.app/predict) vão diretamente para o seu serviço dedicado, sem limitação de taxa da Plataforma. Você está pagando pelo processamento, então obtém throughput ilimitado até a configuração de escalonamento do seu endpoint.
Gerenciando Limites de Taxa
Ao receber um 429 código de status, aguardar por Retry-After (ou até que X-RateLimit-Reset) antes de tentar novamente. Consulte o FAQ sobre limite de taxa para uma implementação de backoff exponencial.
Formato da Resposta
Respostas de Sucesso
As respostas retornam JSON com campos específicos do recurso:
{
"datasets": [...],
"total": 100
}
Respostas de Erro
{
"error": "Invalid dataset ID"
}
| Status HTTP | Significado |
|---|---|
200 | Sucesso |
201 | Criado em |
400 | Requisição inválida |
401 | Autenticação necessária |
403 | Permissões insuficientes |
404 | Recurso não encontrado |
409 | Conflito (duplicado) |
429 | Limite de taxa excedido |
500 | Erro do servidor |
API de Conjuntos de Dados
Gerenciar coleções de imagens rotuladas para o treinamento de modelos YOLO.
Listar Conjuntos de Dados
GET /api/datasets
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Filtrar por nome de usuário |
slug | string | Obter um único conjunto de dados por slug |
limit | int | Itens por página (padrão: 20, máx: 500) |
owner | string | Nome de usuário do proprietário do Workspace |
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"
import requests
resp = requests.get(
"https://platform.ultralytics.com/api/datasets",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"limit": 10},
)
for ds in resp.json()["datasets"]:
print(f"{ds['name']}: {ds['imageCount']} images")
Resposta:
{
"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"
}
Obter Conjunto de Dados
GET /api/datasets/{datasetId}
Retorna detalhes completos do conjunto de dados, incluindo metadados, nomes de classes e contagens de divisões.
Criar Conjunto de Dados
POST /api/datasets
Corpo:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}
Tarefas Suportadas
Válido task valores: detect, segment, classify, pose, obb.
Atualizar Conjunto de Dados
PATCH /api/datasets/{datasetId}
Corpo (atualização parcial):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}
Excluir Conjunto de Dados
DELETE /api/datasets/{datasetId}
Exclui o conjunto de dados com exclusão lógica (movido para a lixeira, recuperável por 30 dias).
Clonar Conjunto de Dados
POST /api/datasets/{datasetId}/clone
Cria uma cópia do conjunto de dados com todas as imagens e rótulos. Apenas conjuntos de dados públicos podem ser clonados.
Corpo (todos os campos opcionais):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}
Exportar Conjunto de Dados
GET /api/datasets/{datasetId}/export
Retorna uma resposta JSON com um URL de download assinado para a exportação mais recente do conjunto de dados.
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
v | inteiro | Número da versão (indexado em 1). Se omitido, retorna a exportação mais recente (não armazenada em cache). |
Resposta:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}
Criar Versão do Conjunto de Dados
POST /api/datasets/{datasetId}/export
Crie um novo snapshot de versão numerada do conjunto de dados. Apenas para o proprietário. A versão captura a contagem atual de imagens, contagem de classes, contagem de anotações e distribuição de divisões, então gera e armazena uma exportação NDJSON imutável.
Corpo da Requisição:
{
"description": "Added 500 training images"
}
Todos os campos são opcionais. O description campo é um rótulo fornecido pelo usuário para a versão.
Resposta:
{
"version": 3,
"downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}
Atualizar Descrição da Versão
PATCH /api/datasets/{datasetId}/export
Atualizar a descrição de uma versão existente. Somente para o proprietário.
Corpo da Requisição:
{
"version": 2,
"description": "Fixed mislabeled classes"
}
Resposta:
{
"ok": true
}
Obter Estatísticas de Classe
GET /api/datasets/{datasetId}/class-stats
Retorna a distribuição de classes, mapa de calor de localização e estatísticas de dimensão. Os resultados são armazenados em cache por até 5 minutos.
Resposta:
{
"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
}
Obter modelos treinados no conjunto de dados
GET /api/datasets/{datasetId}/models
Retorna modelos que foram treinados usando este conjunto de dados.
Resposta:
{
"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
}
Autoanotar Conjunto de Dados
POST /api/datasets/{datasetId}/predict
Executar inferência YOLO em imagens de dataset para auto-gerar anotações. Utiliza um modelo selecionado para prever rótulos para imagens não anotadas.
Corpo:
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
imageHash | string | Sim | Hash da imagem a ser anotada |
modelId | string | Não | ID do Modelo para inferência |
confidence | float | Não | Limiar de confiança (padrão: 0.25) |
iou | float | Não | Limiar de IoU (padrão: 0.45) |
Ingestão de Conjunto de Dados
POST /api/datasets/ingest
Crie um trabalho de ingestão de conjunto de dados para processar arquivos ZIP carregados contendo imagens e rótulos.
graph LR
A[Upload ZIP] --> B[POST /api/datasets/ingest]
B --> C[Process ZIP]
C --> D[Extract images]
C --> E[Parse labels]
C --> F[Generate thumbnails]
D & E & F --> G[Dataset ready]
Imagens do Conjunto de Dados
Listar Imagens
GET /api/datasets/{datasetId}/images
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
split | string | Filtrar por divisão: train, val, test |
offset | int | Deslocamento de paginação (padrão: 0) |
limit | int | Itens por página (padrão: 50, máx: 5000) |
sort | string | Ordem de ordenação: newest, oldest, name-asc, name-desc, size-asc, size-desc, labels-asc, labels-desc |
hasLabel | string | Filtrar por status do rótulo (true ou false) |
hasError | string | Filtrar por status de erro (true ou false) |
search | string | Pesquisar por nome de arquivo ou hash de imagem |
includeThumbnails | string | Incluir URLs de miniaturas assinadas (padrão: true) |
includeImageUrls | string | Incluir URLs de imagem completa assinadas (padrão: false) |
Obter URLs de Imagem Assinadas
POST /api/datasets/{datasetId}/images/urls
Obter URLs assinadas para um lote de hashes de imagem (para exibição no navegador).
Excluir Imagem
DELETE /api/datasets/{datasetId}/images/{hash}
Obter Rótulos de Imagem
GET /api/datasets/{datasetId}/images/{hash}/labels
Retorna anotações e nomes de classes para uma imagem específica.
Atualizar Rótulos de Imagem
PUT /api/datasets/{datasetId}/images/{hash}/labels
Corpo:
{
"labels": [{ "classId": 0, "bbox": [0.5, 0.5, 0.2, 0.3] }]
}
Formato de Coordenadas
As caixas delimitadoras usam o formato normalizado YOLO: [x_center, y_center, width, height] onde todos os valores estão entre 0 e 1.
Operações de Imagem em Massa
Mover imagens entre divisões (treino/validação/teste) dentro de um conjunto de dados:
PATCH /api/datasets/{datasetId}/images/bulk
Excluir imagens em massa:
DELETE /api/datasets/{datasetId}/images/bulk
API de Projetos
Gerenciar workspaces de treinamento que agrupam modelos.
Listar Projetos
GET /api/projects
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Filtrar por nome de usuário |
limit | int | Itens por página |
owner | string | Nome de usuário do proprietário do Workspace |
Obter Projeto
GET /api/projects/{projectId}
Criar Projeto
POST /api/projects
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
https://platform.ultralytics.com/api/projects
resp = requests.post(
"https://platform.ultralytics.com/api/projects",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"name": "my-project", "slug": "my-project", "description": "Detection experiments"},
)
project_id = resp.json()["projectId"]
Atualizar Projeto
PATCH /api/projects/{projectId}
Excluir Projeto
DELETE /api/projects/{projectId}
Exclui o projeto com exclusão lógica (movido para a lixeira).
Clonar Projeto
POST /api/projects/{projectId}/clone
Ícone do Projeto
Carregar um ícone de projeto (formulário multipart com arquivo de imagem):
POST /api/projects/{projectId}/icon
Remover o ícone do projeto:
DELETE /api/projects/{projectId}/icon
API de Modelos
Gerenciar checkpoints de modelos treinados dentro de projetos.
Listar Modelos
GET /api/models
Parâmetros de Consulta:
| Parâmetro | Tipo | Necessário | Descrição |
|---|---|---|---|
projectId | string | Sim | ID do Projeto (obrigatório) |
fields | string | Não | Conjunto de campos: summary, charts |
ids | string | Não | IDs de modelo separados por vírgulas |
limit | int | Não | Máximo de resultados (padrão 20, máximo 100) |
Listar Modelos Concluídos
GET /api/models/completed
Retorna modelos que concluíram o treinamento (para uso em seletores de modelo e implantação).
Obter Modelo
GET /api/models/{modelId}
Criar Modelo
POST /api/models
Corpo JSON:
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
projectId | string | Sim | ID do projeto de destino |
slug | string | Não | Slug de URL (alfanumérico minúsculo/hífens) |
name | string | Não | Nome de exibição (máx. 100 caracteres) |
description | string | Não | Descrição do Modelo (máx. 1000 caracteres) |
task | string | Não | Tipo de tarefa (detect, segment, pose, obb, classify) |
Upload de Arquivo do Modelo
Modelo .pt os uploads de arquivos são tratados separadamente. Use a interface do usuário da plataforma para arrastar e soltar arquivos de modelo em um projeto.
Atualizar Modelo
PATCH /api/models/{modelId}
Excluir Modelo
DELETE /api/models/{modelId}
Baixar Arquivos do Modelo
GET /api/models/{modelId}/files
Retorna URLs de download assinadas para arquivos de modelo.
Clonar Modelo
POST /api/models/{modelId}/clone
Clonar um modelo público para um dos seus projetos.
Corpo:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
targetProjectSlug | string | Sim | Slug do projeto de destino |
modelName | string | Não | Nome para o modelo clonado |
description | string | Não | Descrição do Modelo |
owner | string | Não | Nome de usuário da equipe (para clonagem de workspace) |
track Download
POST /api/models/{modelId}/track-download
track análises de download de modelo.
Executar Inferência
POST /api/models/{modelId}/predict
Formulário Multipart:
| Campo | Tipo | Descrição |
|---|---|---|
file | arquivo | Arquivo de imagem (JPEG, PNG, WebP) |
conf | float | Limiar de confiança (padrão: 0.25) |
iou | float | Limiar de IoU (padrão: 0.7) |
imgsz | int | Tamanho da imagem em pixels (padrão: 640) |
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
with open("image.jpg", "rb") as f:
resp = requests.post(
f"https://platform.ultralytics.com/api/models/{model_id}/predict",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"file": f},
data={"conf": 0.5},
)
results = resp.json()["images"][0]["results"]
Resposta:
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}
Obter Token de Predição
POST /api/models/{modelId}/predict/token
Obter um token de curta duração para requisições de predição diretas. O token ignora o proxy da API para inferência de menor latência a partir de aplicações do lado do cliente.
Modelo de Aquecimento
POST /api/models/{modelId}/predict/warmup
Pré-carregue um modelo para uma inferência inicial mais rápida. Chame isso antes de executar as previsões para evitar atrasos na requisição inicial.
API de Treinamento
Inicie, monitore e cancele trabalhos de treinamento na nuvem.
graph LR
A[POST /training/start] --> B[Job Created]
B --> C{Training}
C -->|progress| D[GET /models/id/training]
C -->|cancel| E[DELETE /models/id/training]
C -->|complete| F[Model Ready]
F --> G[Deploy or Export]
Começar Treinamento
POST /api/training/start
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo11n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16
}
}' \
https://platform.ultralytics.com/api/training/start
resp = requests.post(
"https://platform.ultralytics.com/api/training/start",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"modelId": "MODEL_ID",
"projectId": "PROJECT_ID",
"gpuType": "rtx-4090",
"trainArgs": {
"model": "yolo11n.pt",
"data": "ul://username/datasets/my-dataset",
"epochs": 100,
"imgsz": 640,
"batch": 16,
},
},
)
Tipos de GPU
Os tipos de GPU disponíveis incluem rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, e outros. Consulte Treinamento na Nuvem para a lista completa com preços.
Obter Status do Treinamento
GET /api/models/{modelId}/training
Retorna o status atual do trabalho de treinamento, métricas e progresso para um modelo.
Cancelar Treinamento
DELETE /api/models/{modelId}/training
Termina a instância de computação em execução e marca a tarefa como cancelada.
API de Implantações
Crie e gerencie endpoints de inferência dedicados.
graph LR
A[Create] --> B[Deploying]
B --> C[Ready]
C -->|stop| D[Stopped]
D -->|start| C
C -->|delete| E[Deleted]
D -->|delete| E
C -->|predict| F[Inference Results]
Listar Implantações
GET /api/deployments
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelId | string | Filtrar por modelo |
status | string | Filtrar por status |
limit | int | Máximo de resultados (padrão: 20, máximo: 100) |
owner | string | Nome de usuário do proprietário do Workspace |
Criar Implantação
POST /api/deployments
Corpo:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
modelId | string | Sim | ID do Modelo para implantação |
name | string | Sim | Nome da implantação |
region | string | Sim | Região de implantação |
resources | objeto | Não | Configuração de recursos (CPU, memoryGi, minInstances, maxInstances) |
Cria um endpoint de inferência dedicado na região especificada. O endpoint é acessível globalmente por meio de uma URL única.
Seleção de Região
Escolha uma região próxima aos seus usuários para a menor latência. A UI da plataforma mostra estimativas de latência para todas as 43 regiões disponíveis
Obter Implantação
GET /api/deployments/{deploymentId}
Excluir Implantação
DELETE /api/deployments/{deploymentId}
Iniciar Implantação
POST /api/deployments/{deploymentId}/start
Retomar uma implantação interrompida.
Parar Implantação
POST /api/deployments/{deploymentId}/stop
Pause uma implantação em execução (interrompe a cobrança).
Verificação de Saúde
GET /api/deployments/{deploymentId}/health
Retorna o status de integridade do endpoint de implantação.
Executar Inferência em Implantação
POST /api/deployments/{deploymentId}/predict
Enviar uma imagem diretamente para um endpoint de implantação para inferência. Funcionalmente equivalente a `model predict`, mas roteado através do endpoint dedicado para menor latência.
Formulário Multipart:
| Campo | Tipo | Descrição |
|---|---|---|
file | arquivo | Arquivo de imagem (JPEG, PNG, WebP) |
conf | float | Limiar de confiança (padrão: 0.25) |
iou | float | Limiar de IoU (padrão: 0.7) |
imgsz | int | Tamanho da imagem em pixels (padrão: 640) |
Obter Métricas
GET /api/deployments/{deploymentId}/metrics
Retorna contagens de requisições, latência e métricas de taxa de erro com dados de sparkline.
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
range | string | Intervalo de tempo: 1h, 6h, 24h (padrão), 7d, 30d |
sparkline | string | Definir para true para dados de sparkline otimizados para visualização em painel |
Obter Logs
GET /api/deployments/{deploymentId}/logs
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
severity | string | Filtro separado por vírgulas: DEBUG, INFO, WARNING, ERROR, CRITICAL |
limit | int | Número de entradas (padrão: 50, máximo: 200) |
pageToken | string | Token de paginação da resposta anterior |
API de Monitoramento
Métricas Agregadas
GET /api/monitoring
Retorna métricas agregadas de todas as implantações do usuário: total de requisições, implantações ativas, taxa de erro e latência média.
API de Exportação
Converta modelos para formatos otimizados para implantação em dispositivos de borda.
Listar Exportações
GET /api/exports
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelId | string | ID do Modelo (obrigatório) |
status | string | Filtrar por status |
limit | int | Máximo de resultados (padrão: 20, máximo: 100) |
Criar Exportação
POST /api/exports
Corpo:
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
modelId | string | Sim | ID do modelo de origem |
format | string | Sim | Formato de exportação (ver tabela abaixo) |
gpuType | string | Condicional | Obrigatório quando format é engine (TensorRT) |
args | objeto | Não | Argumentos de exportação (imgsz, half, dynamic, etc.) |
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"modelId": "MODEL_ID", "format": "onnx"}' \
https://platform.ultralytics.com/api/exports
resp = requests.post(
"https://platform.ultralytics.com/api/exports",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"modelId": "MODEL_ID", "format": "onnx"},
)
export_id = resp.json()["exportId"]
Formatos Suportados:
| Formato | Valor | Caso de Uso |
|---|---|---|
| ONNX | onnx | Inferência multiplataforma |
| TorchScript | torchscript | Implantação PyTorch |
| OpenVINO | openvino | hardware Intel |
| TensorRT | engine | Otimização de GPU NVIDIA |
| CoreML | coreml | dispositivos Apple |
| TFLite | tflite | Móvel e embarcado |
| TF SavedModel | saved_model | TensorFlow |
| TF GraphDef | pb | grafo congelado do TensorFlow |
| PaddlePaddle | paddle | Baidu PaddlePaddle |
| NCNN | ncnn | Rede neural móvel |
| Edge TPU | edgetpu | Dispositivos Google Coral |
| TF.js | tfjs | Inferência do navegador |
| MNN | mnn | Inferência móvel Alibaba |
| RKNN | rknn | NPU Rockchip |
| IMX | imx | Sensor Sony IMX500 |
| Axelera | axelera | Aceleradores de IA Axelera |
| ExecuTorch | executorch | Runtime Meta ExecuTorch |
Obter Status da Exportação
GET /api/exports/{exportId}
Cancelar Exportação
DELETE /api/exports/{exportId}
track Download de Exportação
POST /api/exports/{exportId}/track-download
API de Atividade
track e gerencie eventos de atividade para sua conta.
Listar Atividade
GET /api/activity
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
limit | int | Tamanho da página (padrão: 20, máx: 100) |
page | int | Número da página (padrão: 1) |
archived | booleano | true para a aba Arquivo, false para a Caixa de Entrada |
search | string | Pesquisa sem distinção de maiúsculas e minúsculas nos campos de evento |
Marcar Eventos como Vistos
POST /api/activity/mark-seen
Corpo:
{
"all": true
}
Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}
Arquivar Eventos
POST /api/activity/archive
Corpo:
{
"all": true,
"archive": true
}
Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}
API da Lixeira
Gerenciar recursos excluídos temporariamente (retenção de 30 dias).
Listar Lixeira
GET /api/trash
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
type | string | Filtro: all, project, dataset, model |
page | int | Número da página (padrão: 1) |
limit | int | Itens por página (padrão: 50, máx: 200) |
owner | string | Nome de usuário do proprietário do Workspace |
Restaurar Item
POST /api/trash
Corpo:
{
"id": "item_abc123",
"type": "dataset"
}
Excluir Item Permanentemente
DELETE /api/trash
Corpo:
{
"id": "item_abc123",
"type": "dataset"
}
Irreversível
A exclusão permanente não pode ser desfeita. O recurso e todos os dados associados serão removidos.
Esvaziar Lixeira
DELETE /api/trash/empty
Exclui permanentemente todos os itens na lixeira.
API de Faturamento
Gerenciar créditos, assinaturas e métodos de pagamento.
Unidades Monetárias
Os valores de faturação usam cêntimos (creditsCents) onde 100 = $1.00.
Obter Saldo
GET /api/billing/balance
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
owner | string | Nome de usuário do proprietário do Workspace |
Resposta:
{
"creditsCents": 2500,
"plan": "free",
"cashBalance": 25,
"creditBalance": 0,
"reservedAmount": 0,
"totalBalance": 25
}
Obter Resumo de Uso
GET /api/billing/usage-summary
Retorna detalhes do plano, limites e métricas de uso.
Obter Transações
GET /api/billing/transactions
Retorna o histórico de transações (mais recentes primeiro).
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
owner | string | Nome de usuário do proprietário do Workspace |
Criar Sessão de Checkout
POST /api/billing/checkout-session
Corpo:
{
"amount": 25,
"owner": "team-username"
}
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
amount | número | Sim | Valor em dólares ($5-$1000) |
owner | string | Não | Nome de usuário da equipe para recargas de workspace (requer função de administrador) |
Cria uma sessão de checkout para compra de crédito.
Criar Checkout de Assinatura
POST /api/billing/subscription-checkout
Cria uma sessão de checkout para atualização da assinatura Pro.
Corpo:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}
| Campo | Tipo | Necessário | Descrição |
|---|---|---|---|
planId | string | Sim | Plano para assinar (pro) |
billingCycle | string | Não | Ciclo de faturação: monthly (padrão) ou yearly |
owner | string | Não | Nome de usuário da equipe para atualizações de workspace (requer função de administrador) |
Criar Sessão do Portal
POST /api/billing/portal-session
Retorna a URL para o portal de faturamento para gerenciamento de assinaturas.
Recarga Automática
Adicionar créditos automaticamente quando o saldo estiver abaixo de um limite.
Obter Configuração de Recarga Automática
GET /api/billing/auto-topup
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
owner | string | Nome de usuário do proprietário do Workspace |
Atualizar Configuração de Recarga Automática
PATCH /api/billing/auto-topup
Corpo:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}
Métodos de Pagamento
Listar Métodos de Pagamento
GET /api/billing/payment-methods
Criar Intenção de Configuração
POST /api/billing/payment-methods/setup
Retorna um segredo do cliente para adicionar um novo método de pagamento.
Definir Método de Pagamento Padrão
POST /api/billing/payment-methods/default
Corpo:
{
"paymentMethodId": "pm_123"
}
Atualizar Informações de Faturamento
PATCH /api/billing/payment-methods
Corpo:
{
"name": "Jane Doe",
"address": {
"line1": "123 Main St",
"city": "San Francisco",
"state": "CA",
"postal_code": "94105",
"country": "US"
}
}
Excluir Método de Pagamento
DELETE /api/billing/payment-methods/{id}
API de Armazenamento
Obter Informações de Armazenamento
GET /api/storage
Resposta:
{
"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"
}
]
}
}
Recalcular Armazenamento
POST /api/storage
Aciona um recálculo do uso de armazenamento.
API de Upload
Uploads diretos de arquivos usam um fluxo de URL assinado em duas etapas.
Obter URL de Upload Assinada
POST /api/upload/signed-url
Solicitar um URL assinado para carregar um arquivo diretamente para o armazenamento em nuvem. O URL assinado ignora o servidor da API para grandes transferências de arquivos.
Corpo:
{
"assetType": "images",
"assetId": "abc123",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"totalBytes": 5242880
}
| Campo | Tipo | Descrição |
|---|---|---|
assetType | string | Tipo de ativo: models, datasets, images, videos |
assetId | string | ID do ativo de destino |
filename | string | Nome de arquivo original |
contentType | string | Tipo MIME |
totalBytes | int | Tamanho do arquivo em bytes |
Resposta:
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.example.com/...",
"objectPath": "images/abc123/my-image.jpg",
"downloadUrl": "https://cdn.example.com/...",
"expiresAt": "2026-02-22T12:00:00Z"
}
Upload Concluído
POST /api/upload/complete
Notifique a plataforma de que um upload de arquivo está completo para que ela possa iniciar o processamento.
Corpo:
{
"datasetId": "abc123",
"objectPath": "datasets/abc123/images/my-image.jpg",
"filename": "my-image.jpg",
"contentType": "image/jpeg",
"size": 5242880
}
API de Chaves de API
Listar Chaves de API
GET /api/api-keys
Criar Chave de API
POST /api/api-keys
Corpo:
{
"name": "training-server"
}
Excluir Chave de API
DELETE /api/api-keys
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
keyId | string | ID da chave API a ser revogada |
Exemplo:
curl -X DELETE \
-H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"
API de Equipes e Membros
Gerenciar a colaboração no workspace com equipes, membros e convites.
Listar Equipes
GET /api/teams
Criar Equipe
POST /api/teams/create
Corpo:
{
"username": "my-team",
"fullName": "My Team"
}
Listar Membros
GET /api/members
Retorna os membros do workspace atual.
Convidar Membro
POST /api/members
Corpo:
{
"email": "user@example.com",
"role": "editor"
}
Funções de Membro
| Função | Permissões |
|---|---|
viewer | Acesso somente leitura aos recursos do espaço de trabalho |
editor | Criar, editar e excluir recursos |
admin | Acesso total, incluindo gerenciamento de membros |
Consulte Teams para detalhes das funções na UI.
Atualizar Função de Membro
PATCH /api/members/{userId}
Remover Membro
DELETE /api/members/{userId}
Transferir Propriedade
POST /api/members/transfer-ownership
Convites
Aceitar Convite
POST /api/invites/accept
Obter Informações do Convite
GET /api/invites/info
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
token | string | Token de convite |
Revogar Convite
DELETE /api/invites/{inviteId}
Reenviar Convite
POST /api/invites/{inviteId}/resend
Explore API
Pesquisar Conteúdo Público
GET /api/explore/search
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
q | string | Consulta de pesquisa |
type | string | Tipo de recurso: all (padrão), projects, datasets |
sort | string | Ordem de ordenação: stars (padrão), newest, oldest, name-asc, name-desc, count-desc, count-asc |
offset | int | Deslocamento de paginação (padrão: 0). Os resultados retornam 20 itens por página. |
Dados da Barra Lateral
GET /api/explore/sidebar
Retorna conteúdo selecionado para a barra lateral Explorar.
APIs de Usuário e Configurações
Obter Usuário por Nome de Usuário
GET /api/users
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Nome de usuário para consultar |
Seguir ou Deixar de Seguir Usuário
PATCH /api/users
Corpo:
{
"username": "target-user",
"followed": true
}
Verificar Disponibilidade de Nome de Usuário
GET /api/username/check
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Nome de usuário para verificar |
suggest | booleano | Opcional: true para incluir uma sugestão, se aceite |
Configurações
GET /api/settings
POST /api/settings
Obter ou atualizar as configurações do perfil do usuário (nome de exibição, biografia, links sociais, etc.).
Ícone do Perfil
POST /api/settings/icon
DELETE /api/settings/icon
Carregar ou remover avatar de perfil.
Integração
POST /api/onboarding
Conclua o fluxo de integração (defina a região dos dados, nome de usuário).
API GDPR
Endpoints de conformidade GDPR para exportação e exclusão de dados.
Obter Status da Tarefa GDPR
GET /api/gdpr
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
jobId | string | ID da tarefa GDPR para verificar |
Retorna o status do trabalho. Para trabalhos de exportação concluídos, a resposta inclui um downloadUrl.
Iniciar Fluxo de Exportação ou Exclusão
POST /api/gdpr
Corpo:
{
"action": "export"
}
{
"action": "delete",
"confirmationWord": "DELETE"
}
Opcional para espaços de trabalho em equipe:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}
Ação Irreversível
A exclusão da conta é permanente e não pode ser desfeita. Todos os dados, modelos e implantações serão excluídos.
Códigos de Erro
| Código | Status HTTP | Descrição |
|---|---|---|
UNAUTHORIZED | 401 | Chave de API inválida ou ausente |
FORBIDDEN | 403 | Permissões insuficientes |
NOT_FOUND | 404 | Recurso não encontrado |
VALIDATION_ERROR | 400 | Dados de requisição inválidos |
RATE_LIMITED | 429 | Muitas requisições |
INTERNAL_ERROR | 500 | Erro do servidor |
Python
Para uma integração mais fácil, use o pacote Python da Ultralytics que lida automaticamente com autenticação, uploads e streaming de métricas em tempo real.
Instalação e Configuração
pip install ultralytics
Verifique a instalação:
yolo check
Requisito de Versão do Pacote
A integração com a Plataforma requer ultralytics>=8.4.14. Versões anteriores NÃO funcionarão com a Plataforma.
Autenticação
yolo settings api_key=YOUR_API_KEY
export ULTRALYTICS_API_KEY=YOUR_API_KEY
from ultralytics import settings
settings.api_key = "YOUR_API_KEY"
Utilizar Conjuntos de Dados da Plataforma
Conjuntos de dados de referência com ul:// URIs:
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,
)
Formato URI:
| Padrão | Descrição |
|---|---|
ul://username/datasets/slug | Conjunto de dados |
ul://username/project-name | Projeto |
ul://username/project/model-name | Modelo específico |
ul://ultralytics/yolo26/yolo26n | Modelo oficial |
Enviando para a plataforma
Enviar resultados para um projeto da Plataforma:
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",
)
O que sincroniza:
- Métricas de treino (em tempo real)
- Ponderações finais do modelo
- Gráficos de validação
- Saída do console
- Métricas do sistema
Exemplos de API
Carregue um modelo da Plataforma:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")
Executar inferência:
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
Modelo de exportação:
# 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)
Validação:
metrics = model.val(data="ul://username/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")
Webhooks
Webhooks notificam seu servidor sobre eventos da Plataforma via callbacks HTTP POST:
| Evento | Descrição |
|---|---|
training.started | Tarefa de treinamento iniciada |
training.epoch | Época concluída |
training.completed | Treinamento concluído |
training.failed | Falha no treinamento |
export.completed | Exportação pronta |
Funcionalidade Empresarial
Endpoints de webhook personalizados estão disponíveis nos planos Enterprise. Webhooks de treinamento para o SDK python funcionam automaticamente em todos os planos.
FAQ
Como faço para paginar grandes resultados?
A maioria dos endpoints usa um limit parâmetro para controlar quantos resultados são retornados por solicitação:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"
Os endpoints de Atividade e Lixeira também suportam um page parâmetro para paginação baseada em página:
curl -H "Authorization: Bearer $API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"
O endpoint de Pesquisa Explorar utiliza offset em vez de page, com um tamanho de página fixo de 20:
curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"
Posso usar a API sem um SDK?
Sim, toda a funcionalidade está disponível via REST. O SDK python é um wrapper de conveniência que adiciona funcionalidades como streaming de métricas em tempo real e uploads automáticos de modelos.
Existem bibliotecas de cliente API?
Atualmente, utilize o pacote Ultralytics Python ou faça requisições HTTP diretas. Bibliotecas cliente oficiais para outras linguagens estão planejadas.
Como lido com os limites de taxa?
Use o comando Retry-After cabeçalho da resposta 429 para aguardar o tempo correto:
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 Exception("Rate limit exceeded")
Como encontro o ID do meu modelo ou conjunto de dados?
Os IDs de recurso são retornados ao criar recursos via API. Você também pode encontrá-los no URL da plataforma:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project model
Utilize os endpoints de lista para pesquisar por nome ou filtrar por projeto.