Referência da REST API
A Ultralytics Platform fornece uma REST API abrangente para acesso programático a datasets, modelos, treinamento e implantações.

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsExplore a referência completa e interativa da API nos documentos da API da Ultralytics Platform.
Visão geral da API
A API é organizada em torno dos recursos principais 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 |
|---|---|---|
| Datasets | Coleções de imagens rotuladas | CRUD, imagens, rótulos, exportação, versões, clonagem |
| Projetos | Workspaces de treinamento | CRUD, clonagem, ícone |
| Modelos | Checkpoints treinados | CRUD, previsão, download, clonagem, exportação |
| Implantações | Endpoints de inferência dedicados | CRUD, iniciar/parar, métricas, logs, integridade |
| Exportações | Trabalhos de conversão de formato | Criar, status, download |
| Treinamento | Trabalhos de treinamento em GPU na nuvem | Iniciar, status, cancelar |
| Faturamento | Créditos e assinaturas | Saldo, recarga, métodos de pagamento |
| Equipes | Colaboração em workspace | Membros, convites, funções |
Autenticação
APIs de recursos como datasets, projetos, modelos, treinamento, exportações e previsões utilizam autenticação por API-key. Endpoints públicos (listagem de datasets, projetos e modelos públicos) suportam acesso de leitura anônimo sem chave. Rotas orientadas a conta — incluindo atividades, configurações, equipes, faturamento e fluxos GDPR — exigem atualmente uma sessão de navegador autenticada e não estão disponíveis via API-key.
Obter API-key
- Vá para
Settings>API Keys - Clique em
Create Key - Copie a chave gerada
Consulte API Keys para instruções detalhadas.
Cabeçalho de autorização
Inclua sua API-key em todas as requisições:
Authorization: Bearer YOUR_API_KEYAs API-keys usam o formato ul_ seguido por 40 caracteres hexadecimais. Mantenha sua chave em segredo -- nunca a envie para sistemas de controle de versão nem a compartilhe publicamente.
Exemplo
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsBase URL
Todos os endpoints da API usam:
https://platform.ultralytics.com/api
Limites de taxa
A API aplica limites de taxa por API-key (janela deslizante, com suporte Upstash Redis) para proteger contra abusos, mantendo o uso legítimo sem restrições. O tráfego anônimo é adicionalmente protegido pelos controles de abuso de nível de plataforma da Vercel.
Quando houver limitação de taxa, a API retorna 429 com metadados de nova tentativa:
Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000ZLimites por API-key
Os limites de taxa são aplicados automaticamente com base no endpoint sendo chamado. Operações custosas possuem limites mais rígidos para prevenir 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) |
| Upload | 10 requisições/min | Uploads de arquivos, URLs assinadas e ingestão de datasets |
| Prever | 20 requisições/min | Inferência de modelo compartilhado (POST /api/models/{id}/predict) |
| Exportar | 20 requisições/min | Exportações de formato de modelo (POST /api/exports), exportações NDJSON de dataset e criação de versão |
| Download | 30 requisições/min | Downloads de arquivo de pesos de 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 API-key. Por exemplo, fazer 20 requisições de previsão não afeta sua cota padrão de 100 requisições/min.
Endpoints dedicados (Ilimitados)
Endpoints dedicados não estão sujeitos aos limites de taxa da API-key. Quando você implanta um modelo em um endpoint dedicado, as requisições para essa URL de endpoint (por exemplo, https://predict-abc123.run.app/predict) vão diretamente para seu serviço dedicado sem limitação de taxa da plataforma. Você paga pela computação, então recebe throughput da configuração do seu serviço dedicado em vez dos limites da API compartilhada.
Quando você receber um código de status 429, aguarde pelo Retry-After (ou até X-RateLimit-Reset) antes de tentar novamente. Consulte o FAQ de limite de taxa para uma implementação de recuo exponencial (exponential backoff).
Formato de resposta
Respostas de sucesso
As respostas retornam JSON com campos específicos do recurso:
{
"datasets": [...],
"total": 100
}Respostas de erro
{
"error": "Dataset not found"
}| Status HTTP | Significado |
|---|---|
200 | Sucesso |
201 | Criado |
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 no servidor |
Datasets API
Crie, navegue e gerencie datasets de imagens rotuladas para treinar modelos YOLO. Veja a documentação de Datasets.
Listar Datasets
GET /api/datasetsParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Filtrar por nome de usuário |
slug | string | Buscar um único dataset pelo slug |
limit | int | Itens por página (padrão: 20, máximo: 500) |
owner | string | Nome de usuário do proprietário do workspace |
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=10"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 Dataset
GET /api/datasets/{datasetId}Retorna os detalhes completos do dataset, incluindo metadados, nomes das classes e contagens de divisões.
Criar Dataset
POST /api/datasetsCorpo:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"visibility": "private",
"classNames": ["person", "car"]
}Valores válidos para task: detect, segment, classify, pose, obb.
Atualizar Dataset
PATCH /api/datasets/{datasetId}Corpo (atualização parcial):
{
"name": "Updated Name",
"description": "New description",
"visibility": "public"
}Excluir Dataset
DELETE /api/datasets/{datasetId}Exclusão lógica do dataset (movido para a lixeira, recuperável por 30 dias).
Clonar Dataset
POST /api/datasets/{datasetId}/cloneCria uma cópia do dataset com todas as imagens e rótulos. Apenas datasets públicos podem ser clonados. Requer uma sessão ativa no navegador da plataforma — não disponível via chave de API.
Corpo (todos os campos são opcionais):
{
"name": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"owner": "team-username"
}Exportar Dataset
GET /api/datasets/{datasetId}/exportRetorna uma resposta JSON com uma URL de download assinada para a exportação mais recente do dataset.
Parâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
v | integer | Número da versão (indexado em 1). Se omitido, retorna a exportação mais recente (não cacheada). |
Resposta:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}Criar Versão do Dataset
POST /api/datasets/{datasetId}/exportCria um novo snapshot de versão numerada do dataset. Apenas para o proprietário. A versão captura a contagem atual de imagens, classes, 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 campo description é 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}/exportAtualiza a descrição de uma versão existente. Apenas 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-statsRetorna a distribuição de classes, mapa de calor de localização e estatísticas de dimensão. Os resultados são cacheados 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 Dataset
GET /api/datasets/{datasetId}/modelsRetorna os modelos que foram treinados usando este dataset.
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
}Auto-Anotar Dataset
POST /api/datasets/{datasetId}/predictExecuta inferência YOLO em imagens do dataset para auto-gerar anotações. Usa um modelo selecionado para prever rótulos para imagens não anotadas.
Corpo:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
imageHash | string | Sim | Hash da imagem a ser anotada |
modelId | string | Não | ID do modelo para usar na 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 Dataset
POST /api/datasets/ingestCria um job de ingestão de dataset para processar arquivos ZIP ou TAR enviados, incluindo .tar.gz e .tgz, contendo imagens e rótulos.
graph LR
A[Upload Archive] --> B[POST /api/datasets/ingest]
B --> C[Process Archive]
C --> D[Extract images]
C --> E[Parse labels]
C --> F[Generate thumbnails]
D & E & F --> G[Dataset ready]Imagens do Dataset
Listar Imagens
GET /api/datasets/{datasetId}/imagesParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
split | string | Filtrar por divisão: train, val, test |
offset | int | Offset de paginação (padrão: 0) |
limit | int | Itens por página (padrão: 50, máximo: 5000) |
sort | string | Ordem de classificação: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (alguns desabilitados para datasets com mais de 100 mil imagens) |
hasLabel | string | Filtrar pelo status de rótulo (true ou false) |
hasError | string | Filtrar pelo 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 completas de imagens assinadas (padrão: false) |
Obter URLs de Imagens Assinadas
POST /api/datasets/{datasetId}/images/urlsObter 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 da Imagem
GET /api/datasets/{datasetId}/images/{hash}/labelsRetorna anotações e nomes de classe para uma imagem específica.
Atualizar Rótulos da Imagem
PUT /api/datasets/{datasetId}/images/{hash}/labelsCorpo:
{
"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] }
]
}As coordenadas dos rótulos usam valores normalizados do YOLO entre 0 e 1. As caixas delimitadoras (BBox) usam [x_center, y_center, width, height].
Os rótulos de segmentação usam segments, uma lista achatada de vértices de polígono [x1, y1, x2, y2, ...].
Operações em Massa com Imagens
Mover imagens entre divisões (train/val/test) dentro de um dataset:
PATCH /api/datasets/{datasetId}/images/bulkExcluir imagens em massa:
DELETE /api/datasets/{datasetId}/images/bulkAPI de Projetos
Organize seus modelos em projetos. Cada modelo pertence a um projeto. Veja a documentação de Projetos.
Listar Projetos
GET /api/projectsParâ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/projectscurl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
https://platform.ultralytics.com/api/projectsAtualizar Projeto
PATCH /api/projects/{projectId}Excluir Projeto
DELETE /api/projects/{projectId}Exclusão lógica do projeto (movido para a lixeira).
Clonar Projeto
POST /api/projects/{projectId}/cloneClona um projeto público (com todos os seus modelos) para o seu workspace. Requer uma sessão ativa no navegador da plataforma — não disponível via chave de API.
Ícone do Projeto
Enviar um ícone de projeto (multipart form com arquivo de imagem):
POST /api/projects/{projectId}/iconRemover o ícone do projeto:
DELETE /api/projects/{projectId}/iconAmbos requerem uma sessão ativa no navegador da plataforma — não disponível via chave de API.
API de Modelos
Gerencie modelos YOLO treinados — visualize métricas, baixe pesos, execute inferência e exporte para outros formatos. Veja a documentação de Modelos.
Listar Modelos
GET /api/modelsParâmetros de Consulta:
| Parâmetro | Tipo | Obrigató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 modelos separados por vírgula |
limit | int | Não | Resultados máximos (padrão 20, máximo 100) |
Listar Modelos Concluídos
GET /api/models/completedRetorna modelos que terminaram o treinamento (para uso em seletores de modelos e implantação).
Obter Modelo
GET /api/models/{modelId}Criar Modelo
POST /api/modelsCorpo JSON:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
projectId | string | Sim | ID do projeto de destino |
slug | string | Não | Slug de URL (alfanumérico minúsculo/hifens) |
name | string | Não | Nome de exibição (máximo 100 caracteres) |
description | string | Não | Descrição do modelo (máximo 1000 caracteres) |
task | string | Não | Tipo de tarefa (detect, segment, pose, obb, classify) |
Uploads de arquivos .pt de modelos são tratados separadamente. Use a interface da plataforma para arrastar e soltar arquivos de modelo em um projeto.
Atualizar Modelo
PATCH /api/models/{modelId}Eliminar Modelo
DELETE /api/models/{modelId}Baixar Arquivos de Modelo
GET /api/models/{modelId}/filesRetorna URLs de download assinadas para arquivos de modelo.
Clonar Modelo
POST /api/models/{modelId}/cloneClone um modelo público para um dos seus projetos. Requer uma sessão ativa no navegador da plataforma — não disponível via chave de API.
Corpo:
{
"targetProjectSlug": "my-project",
"modelName": "cloned-model",
"description": "Cloned from public model",
"owner": "team-username"
}| Campo | Tipo | Obrigató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) |
Rastrear Download
POST /api/models/{modelId}/track-downloadRastreia a análise de download de modelos.
Executar Inferência
POST /api/models/{modelId}/predictFormulá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 YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/MODEL_ID/predictResposta:
{
"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 Previsão
POST /api/models/{modelId}/predict/tokenEsta rota é usada pela aba Predict do aplicativo para emitir tokens de inferência de curta duração para chamadas diretas de navegador → predict-service (menor latência, sem proxy de API). Requer uma sessão ativa no navegador da plataforma e não está disponível via chave de API. Para inferência programática, chame POST /api/models/{modelId}/predict com sua chave de API.
Aquecer Modelo
POST /api/models/{modelId}/predict/warmupA rota de aquecimento é usada pela aba Predict para pré-carregar os pesos de um modelo no serviço de predição antes da primeira inferência do usuário. Requer uma sessão ativa no navegador da plataforma e não está disponível via chave de API.
API de Treinamento
Inicie o treinamento do YOLO em GPUs em nuvem (24 tipos de GPU de RTX 2000 Ada a B300) e monitore o progresso em tempo real. Veja a documentação de Treinamento em 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]Iniciar Treinamento
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/startOs tipos de GPU disponíveis incluem rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 e outros. Veja Treinamento em Nuvem para a lista completa com preços.
Obter Status de Treinamento
GET /api/models/{modelId}/trainingRetorna o status atual do trabalho de treinamento, métricas e progresso de um modelo. Projetos públicos são acessíveis anonimamente; projetos privados requerem uma sessão ativa no navegador da plataforma (esta rota não aceita autenticação via chave de API).
Cancelar Treino
DELETE /api/models/{modelId}/trainingEncerra a instância de computação em execução e marca o trabalho como cancelado. Requer uma sessão ativa no navegador da plataforma — não disponível via chave de API.
API de Implantações
Implante modelos em endpoints de inferência dedicados com verificações de integridade e monitoramento. Novas implantações usam scale-to-zero por padrão, e a API aceita um objeto resources opcional. Veja a documentação de Endpoints.
Apenas GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId} e DELETE /api/deployments/{deploymentId} suportam autenticação via chave de API. As sub-rotas predict, health, logs, metrics, start e stop requerem uma sessão ativa no navegador da plataforma — elas são proxies de conveniência para a UI do aplicativo. Para inferência programática, chame a URL do endpoint da própria implantação (por exemplo, https://predict-abc123.run.app/predict) diretamente com sua chave de API. Endpoints dedicados não possuem limites de taxa.
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/deploymentsParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelId | string | Filtrar por modelo |
status | string | Filtrar por status |
limit | int | Resultados máximos (padrão: 20, máximo: 100) |
owner | string | Nome de usuário do proprietário do workspace |
Criar Implantação
POST /api/deploymentsCorpo:
{
"modelId": "model_abc123",
"name": "my-deployment",
"region": "us-central1",
"resources": {
"cpu": 1,
"memoryGi": 2,
"minInstances": 0,
"maxInstances": 1
}
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
modelId | string | Sim | ID do modelo para implantar |
name | string | Sim | Nome da implantação |
region | string | Sim | Região da 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 é globalmente acessível através de uma URL única.
A caixa de diálogo de implantação envia atualmente padrões fixos de cpu=1, memoryGi=2, minInstances=0 e maxInstances=1. A rota da API aceita um objeto resources, mas os limites do plano restringem minInstances a 0 e maxInstances a 1.
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}/startRetome uma implantação parada.
Parar Implantação
POST /api/deployments/{deploymentId}/stopPause uma implantação em execução (interrompe a cobrança).
Verificação de Saúde
GET /api/deployments/{deploymentId}/healthRetorna o status de saúde do endpoint de implantação.
Executar Inferência na Implantação
POST /api/deployments/{deploymentId}/predictEnvie uma imagem diretamente para um endpoint de implantação para inferência. Funcionalmente equivalente à predição de modelo, mas roteada 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}/metricsRetorna contagens de solicitaçõ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 | Defina como true para dados de sparkline otimizados para visualização no dashboard |
Obter Logs
GET /api/deployments/{deploymentId}/logsParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
severity | string | Filtro separado por vírgula: 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
GET /api/monitoring é uma rota exclusiva da interface do usuário (UI) e requer uma sessão ativa no navegador da plataforma. Ela não aceita autenticação via API-key. Consulte métricas de implantação individuais por meio das rotas por implantação (que também são restritas a sessões de navegador) ou use Cloud Monitoring exports no serviço Cloud Run implantado para acesso programático.
Métricas Agregadas
GET /api/monitoringRetorna 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 como ONNX, TensorRT, CoreML e TFLite para implantação em dispositivos de borda. Consulte a documentação de implantação.
Listar Exportações
GET /api/exportsParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelId | string | ID do modelo (obrigatório) |
status | string | Filtrar por status |
limit | int | Resultados máximos (padrão: 20, máximo: 100) |
Criar Exportação
POST /api/exportsCorpo:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
modelId | string | Sim | ID do modelo de origem |
format | string | Sim | Formato de exportação (consulte a 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 YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"modelId": "MODEL_ID", "format": "onnx"}' \
https://platform.ultralytics.com/api/exportsFormatos Suportados:
| Formato | Valor | Caso de uso |
|---|---|---|
| ONNX | onnx | Inferência multiplataforma |
| TorchScript | torchscript | Implantação PyTorch |
| OpenVINO | openvino | Hardware Intel |
| TensorRT | engine | Otimização para GPU NVIDIA |
| CoreML | coreml | Dispositivos Apple |
| TFLite | tflite | Dispositivos móveis e embarcados |
| TF SavedModel | saved_model | TensorFlow Serving |
| 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 no navegador |
| MNN | mnn | Inferência móvel Alibaba |
| RKNN | rknn | NPU Rockchip |
| IMX | imx | Sensor Sony IMX500 |
| Axelera | axelera | Aceleradores Axelera AI |
| ExecuTorch | executorch | Tempo de execução Meta ExecuTorch |
Obter Status da Exportação
GET /api/exports/{exportId}Cancelar Exportação
DELETE /api/exports/{exportId}Rastrear Download da Exportação
POST /api/exports/{exportId}/track-downloadAPI de Atividade
Visualize um feed de ações recentes em sua conta — execuções de treinamento, uploads e muito mais. Consulte a documentação de Atividade.
As rotas de Atividade são impulsionadas por requisições autenticadas por navegador a partir da interface da plataforma. Elas não são expostas como uma API pública, não aceitam autenticação via API-key e os formatos das rotas abaixo são documentados apenas para referência. Use o feed de Atividade na interface da plataforma para visualizar, marcar ou arquivar eventos.
Listar Atividade
GET /api/activityParâ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 aba Arquivados, false para Caixa de Entrada |
search | string | Busca que não diferencia maiúsculas de minúsculas nos campos de evento |
Marcar Eventos como Vistos
POST /api/activity/mark-seenCorpo:
{
"all": true
}Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}Arquivar Eventos
POST /api/activity/archiveCorpo:
{
"all": true,
"archive": true
}Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}API de Lixeira
Visualize e restaure itens excluídos. Os itens são removidos permanentemente após 30 dias. Consulte a documentação da Lixeira.
Listar Lixeira
GET /api/trashParâ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/trashCorpo:
{
"id": "item_abc123",
"type": "dataset"
}Excluir Item Permanentemente
DELETE /api/trashCorpo:
{
"id": "item_abc123",
"type": "dataset"
}A exclusão permanente não pode ser desfeita. O recurso e todos os dados associados serão removidos.
Esvaziar Lixeira
DELETE /api/trash/emptyExclui permanentemente todos os itens da lixeira.
DELETE /api/trash/empty requer uma sessão de navegador autenticada e não está disponível via API key. Use o botão Esvaziar Lixeira na interface.
API de Faturamento
Verifique seu saldo de créditos, compre créditos, visualize o histórico de transações e configure a recarga automática. Consulte a documentação de Faturamento.
Os valores de faturamento usam centavos (creditsCents), onde 100 = $1.00.
Obter Saldo
GET /api/billing/balanceParâ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-summaryRetorna detalhes do plano, limites e métricas de uso.
Obter Transações
GET /api/billing/transactionsRetorna 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-sessionCorpo:
{
"amount": 25,
"owner": "team-username"
}| Campo | Tipo | Obrigató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 espaço de trabalho (requer função de administrador) |
Cria uma sessão de checkout para compra de crédito.
Criar Checkout de Assinatura
POST /api/billing/subscription-checkoutCria uma sessão de checkout para upgrade de assinatura Pro.
Corpo:
{
"planId": "pro",
"billingCycle": "monthly",
"owner": "team-username"
}| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
planId | string | Sim | Plano para assinar (pro) |
billingCycle | string | Não | Ciclo de faturamento: monthly (padrão) ou yearly |
owner | string | Não | Nome de usuário da equipe para upgrades de espaço de trabalho (requer função de administrador) |
Cancelar ou Retomar Assinatura
DELETE /api/billing/subscription-checkoutCancela uma assinatura Pro no final do período por padrão. Envie {"resume": true} para retomar um cancelamento já agendado antes do término do período de cobrança.
Corpo:
{
"resume": true
}Recarga Automática
Adicionar créditos automaticamente quando o saldo cair abaixo de um limite.
Obter Configuração de Recarga Automática
GET /api/billing/auto-topupParâ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-topupCorpo:
{
"enabled": true,
"thresholdCents": 500,
"amountCents": 2500
}Métodos de Pagamento
Listar Métodos de Pagamento
GET /api/billing/payment-methodsCriar Intent de Configuração
POST /api/billing/payment-methods/setupRetorna um segredo de cliente para adicionar um novo método de pagamento.
Definir Método de Pagamento Padrão
POST /api/billing/payment-methods/defaultCorpo:
{
"paymentMethodId": "pm_123"
}Atualizar Informações de Faturamento
PATCH /api/billing/payment-methodsCorpo:
{
"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
Verifique o detalhamento do seu uso de armazenamento por categoria (datasets, modelos, exportações) e veja seus itens maiores.
As rotas de armazenamento exigem uma sessão ativa do navegador da plataforma e não são acessíveis via chave de API. Use a página Configurações > Perfil na UI para detalhamentos interativos.
Obter Informações de Armazenamento
GET /api/storageResposta:
{
"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"
}
]
}
}API de Upload
Carregue arquivos diretamente para o armazenamento em nuvem usando URLs assinadas para transferências rápidas e confiáveis. Utiliza um fluxo de duas etapas: obtenha uma URL assinada e, em seguida, carregue o arquivo. Consulte a documentação de Dados.
Obter URL de Upload Assinada
POST /api/upload/signed-urlSolicite uma URL assinada para carregar um arquivo diretamente para o armazenamento em nuvem. A URL assinada ignora o servidor da API para transferências de arquivos grandes.
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 original do arquivo |
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"
}Concluir Upload
POST /api/upload/completeNotifique a plataforma de que um upload de arquivo foi concluído 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
Gerencie suas chaves de API para acesso programático. Consulte a documentação de Chaves de API.
Listar Chaves de API
GET /api/api-keysCriar Chave de API
POST /api/api-keysCorpo:
{
"name": "training-server"
}Excluir Chave de API
DELETE /api/api-keysParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
keyId | string | ID da chave de API a ser revogada |
Exemplo:
curl -X DELETE \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"API de Equipes e Membros
Crie espaços de trabalho de equipe, convide membros e gerencie funções para colaboração. Consulte a documentação de Equipes.
Listar Equipes
GET /api/teamsCriar Equipe
POST /api/teams/createCorpo:
{
"username": "my-team",
"fullName": "My Team"
}Listar Membros
GET /api/membersRetorna os membros do espaço de trabalho atual.
Convidar Membro
POST /api/membersCorpo:
{
"email": "user@example.com",
"role": "editor"
}| Função | Permissões |
|---|---|
viewer | Acesso somente leitura aos recursos do espaço de trabalho |
editor | Criar, editar e excluir recursos |
admin | Gerenciar membros, cobrança e todos os recursos (somente atribuível pelo proprietário da equipe) |
O owner da equipe é o criador e não pode ser convidado. A propriedade é transferida separadamente via POST /api/members/transfer-ownership. Consulte Equipes para detalhes completos sobre as funções.
Atualizar Função de Membro
PATCH /api/members/{userId}Remover Membro
DELETE /api/members/{userId}Transferir Propriedade
POST /api/members/transfer-ownershipConvites
Aceitar Convite
POST /api/invites/acceptObter Informações de Convite
GET /api/invites/infoParâ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}/resendExplorar API
Pesquise e navegue por datasets públicos e projetos compartilhados pela comunidade. Consulte a documentação de Exploração.
Pesquisar Conteúdo Público
GET /api/explore/searchParâ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 classificação: stars (padrão), newest, oldest, name-asc, name-desc, count-desc, count-asc |
offset | int | Offset de paginação (padrão: 0). Os resultados retornam 20 itens por página. |
Dados da Barra Lateral
GET /api/explore/sidebarRetorna conteúdo curado para a barra lateral de Exploração.
APIs de Usuário e Configurações
Gerencie seu perfil, chaves de API, uso de armazenamento e configurações de privacidade de dados. Consulte a documentação de Configurações.
Obter Usuário por Nome de Usuário
GET /api/usersParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Nome de usuário para pesquisar |
Seguir ou Deixar de Seguir Usuário
PATCH /api/usersCorpo:
{
"username": "target-user",
"followed": true
}Verificar Disponibilidade de Nome de Usuário
GET /api/username/checkParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Nome de usuário para verificar |
suggest | bool | Opcional: true para incluir uma sugestão caso esteja ocupado |
Configurações
GET /api/settings
POST /api/settingsObter ou atualizar configurações do perfil do usuário (nome de exibição, biografia, links sociais, etc.).
Ícone de Perfil
POST /api/settings/icon
DELETE /api/settings/iconCarregar ou remover avatar de perfil.
Onboarding
POST /api/onboardingConcluir fluxo de onboarding (definir região de dados, nome de usuário).
API de GDPR
Solicite uma exportação de todos os seus dados ou exclua permanentemente sua conta. Consulte a documentação de Configurações.
Obter Status do Trabalho de GDPR
GET /api/gdprParâmetros de Consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
jobId | string | ID do trabalho de GDPR para verificar |
Retorna o status do trabalho. Para trabalhos de exportação concluídos, a resposta inclui uma downloadUrl.
Iniciar Fluxo de Exportação ou Exclusão
POST /api/gdprCorpo:
{
"action": "export"
}{
"action": "delete",
"confirmationWord": "DELETE"
}Opcional para espaços de trabalho de equipe:
{
"action": "delete",
"confirmationWord": "DELETE",
"teamUsername": "my-team"
}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 solicitação inválidos |
RATE_LIMITED | 429 | Muitas solicitações |
INTERNAL_ERROR | 500 | Erro no servidor |
Integração com Python
Para uma integração mais fácil, usa 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 ultralyticsVerifica a instalação:
yolo checkA integração com a plataforma requer ultralytics>=8.4.35. Versões inferiores NÃO funcionarão com a Plataforma.
Autenticação
yolo settings api_key=YOUR_API_KEYUsando Datasets da Plataforma
Referencia datasets com URIs ul://:
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,
)Formato de URI:
| Padrão | Descrição |
|---|---|
ul://username/datasets/slug | Dataset |
ul://username/project-name | Projeto |
ul://username/project/model-name | Modelo específico |
ul://ultralytics/yolo26/yolo26n | Modelo oficial |
Enviando para a Platform
Envia resultados para um projeto da Platform:
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",
)O que é sincronizado:
- Métricas de treino (tempo real)
- Pesos finais do modelo
- Gráficos de validação
- Saída do console
- Métricas do sistema
Exemplos de API
Carrega um modelo da Platform:
# Your own model
model = YOLO("ul://username/project/model-name")
# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")Executa 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 probabilitiesExporta modelo:
# 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/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")Webhooks
A Platform usa webhooks internos para transmitir métricas de treino em tempo real do SDK Python ultralytics (executado em GPUs na nuvem ou máquinas remotas/locais) de volta para a Platform — loss por época, mAP, estatísticas do sistema e status de conclusão. Esses webhooks são autenticados via webhookSecret HMAC fornecido por trabalho de treino e não se destinam a ser consumidos por aplicações de utilizador.
Todos os planos: O progresso do treino via SDK ultralytics (métricas em tempo real, notificações de conclusão) funciona automaticamente em todos os planos — basta definir project=username/my-project name=my-run ao treinar e o SDK transmite eventos de volta para a Platform. Não é necessário registo de webhook por parte do utilizador.
Subscrições de webhooks voltadas para o utilizador (callbacks POST para uma URL que controlas) estão no roadmap da Enterprise e não estão disponíveis atualmente. Entretanto, faz o polling de GET /api/models/{modelId}/training para o status ou usa o activity feed na UI.
Perguntas Frequentes
Como faço a paginação de grandes resultados?
A maioria dos endpoints usa um parâmetro limit para controlar quantos resultados são retornados por solicitação:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"Os endpoints Activity e Trash também suportam um parâmetro page para paginação baseada em páginas:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/activity?page=2&limit=20"O endpoint Explore Search usa 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 recursos como streaming de métricas em tempo real e uploads automáticos de modelos. Também podes explorar todos os endpoints interativamente em platform.ultralytics.com/api/docs.
Existem bibliotecas cliente de API?
Atualmente, usa o pacote Python da Ultralytics ou faz solicitações HTTP diretas. Bibliotecas cliente oficiais para outras linguagens estão planeadas.
Como lido com limites de taxa?
Usa o header Retry-After da resposta 429 para esperar a quantidade de tempo certa:
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 meu ID de modelo ou dataset?
IDs de recursos são retornados quando crias recursos via API. Também podes encontrá-los na URL da plataforma:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelUsa os endpoints de listagem para pesquisar por nome ou filtrar por projeto.