Referência da REST API

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

Visão geral da API da Ultralytics Platform

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 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
RecursoDescriçãoPrincipais operações
DatasetsColeções de imagens rotuladasCRUD, imagens, rótulos, exportação, versões, clonagem
ProjetosWorkspaces de treinamentoCRUD, clonagem, ícone
ModelosCheckpoints treinadosCRUD, previsão, download, clonagem, exportação
ImplantaçõesEndpoints de inferência dedicadosCRUD, iniciar/parar, métricas, logs, integridade
ExportaçõesTrabalhos de conversão de formatoCriar, status, download
TreinamentoTrabalhos de treinamento em GPU na nuvemIniciar, status, cancelar
FaturamentoCréditos e assinaturasSaldo, recarga, métodos de pagamento
EquipesColaboração em workspaceMembros, 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

  1. Vá para Settings > API Keys
  2. Clique em Create Key
  3. 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_KEY
Formato da Chave de API

As 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/datasets

Base 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.000Z

Limites 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:

EndpointLimiteAplica-se a
Padrão100 requisições/minTodos os endpoints não listados abaixo (listar, obter, criar, atualizar, excluir)
Treinamento10 requisições/minIniciando trabalhos de treinamento na nuvem (POST /api/training/start)
Upload10 requisições/minUploads de arquivos, URLs assinadas e ingestão de datasets
Prever20 requisições/minInferência de modelo compartilhado (POST /api/models/{id}/predict)
Exportar20 requisições/minExportações de formato de modelo (POST /api/exports), exportações NDJSON de dataset e criação de versão
Download30 requisições/minDownloads de arquivo de pesos de modelo (GET /api/models/{id}/download)
DedicadoIlimitadoEndpoints 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.

Lidando com limites de taxa

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 HTTPSignificado
200Sucesso
201Criado
400Requisição inválida
401Autenticação necessária
403Permissões insuficientes
404Recurso não encontrado
409Conflito (duplicado)
429Limite de taxa excedido
500Erro 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/datasets

Parâmetros de Consulta:

ParâmetroTipoDescrição
usernamestringFiltrar por nome de usuário
slugstringBuscar um único dataset pelo slug
limitintItens por página (padrão: 20, máximo: 500)
ownerstringNome 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/datasets

Corpo:

{
    "slug": "my-dataset",
    "name": "My Dataset",
    "task": "detect",
    "description": "A custom detection dataset",
    "visibility": "private",
    "classNames": ["person", "car"]
}
Tarefas Suportadas

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}/clone

Cria 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}/export

Retorna uma resposta JSON com uma URL de download assinada para a exportação mais recente do dataset.

Parâmetros de Consulta:

ParâmetroTipoDescrição
vintegerNú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}/export

Cria 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}/export

Atualiza 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-stats

Retorna 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}/models

Retorna 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}/predict

Executa 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:

CampoTipoObrigatórioDescrição
imageHashstringSimHash da imagem a ser anotada
modelIdstringNãoID do modelo para usar na inferência
confidencefloatNãoLimiar de confiança (padrão: 0.25)
ioufloatNãoLimiar de IoU (padrão: 0.45)

Ingestão de Dataset

POST /api/datasets/ingest

Cria 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}/images

Parâmetros de Consulta:

ParâmetroTipoDescrição
splitstringFiltrar por divisão: train, val, test
offsetintOffset de paginação (padrão: 0)
limitintItens por página (padrão: 50, máximo: 5000)
sortstringOrdem 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)
hasLabelstringFiltrar pelo status de rótulo (true ou false)
hasErrorstringFiltrar pelo status de erro (true ou false)
searchstringPesquisar por nome de arquivo ou hash de imagem
includeThumbnailsstringIncluir URLs de miniaturas assinadas (padrão: true)
includeImageUrlsstringIncluir URLs completas de imagens assinadas (padrão: false)

Obter URLs de Imagens 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 da Imagem

GET /api/datasets/{datasetId}/images/{hash}/labels

Retorna anotações e nomes de classe para uma imagem específica.

Atualizar Rótulos da Imagem

PUT /api/datasets/{datasetId}/images/{hash}/labels

Corpo:

{
    "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] }
    ]
}
Formato de Coordenadas

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/bulk

Excluir imagens em massa:

DELETE /api/datasets/{datasetId}/images/bulk

API de Projetos

Organize seus modelos em projetos. Cada modelo pertence a um projeto. Veja a documentação de Projetos.

Listar Projetos

GET /api/projects

Parâmetros de Consulta:

ParâmetroTipoDescrição
usernamestringFiltrar por nome de usuário
limitintItens por página
ownerstringNome 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 YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-project", "slug": "my-project", "description": "Detection experiments"}' \
  https://platform.ultralytics.com/api/projects

Atualizar 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}/clone

Clona 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}/icon

Remover o ícone do projeto:

DELETE /api/projects/{projectId}/icon

Ambos 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/models

Parâmetros de Consulta:

ParâmetroTipoObrigatórioDescrição
projectIdstringSimID do projeto (obrigatório)
fieldsstringNãoConjunto de campos: summary, charts
idsstringNãoIDs de modelos separados por vírgula
limitintNãoResultados máximos (padrão 20, máximo 100)

Listar Modelos Concluídos

GET /api/models/completed

Retorna modelos que terminaram o treinamento (para uso em seletores de modelos e implantação).

Obter Modelo

GET /api/models/{modelId}

Criar Modelo

POST /api/models

Corpo JSON:

CampoTipoObrigatórioDescrição
projectIdstringSimID do projeto de destino
slugstringNãoSlug de URL (alfanumérico minúsculo/hifens)
namestringNãoNome de exibição (máximo 100 caracteres)
descriptionstringNãoDescrição do modelo (máximo 1000 caracteres)
taskstringNãoTipo de tarefa (detect, segment, pose, obb, classify)
Upload de Arquivo de Modelo

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}/files

Retorna URLs de download assinadas para arquivos de modelo.

Clonar Modelo

POST /api/models/{modelId}/clone

Clone 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"
}
CampoTipoObrigatórioDescrição
targetProjectSlugstringSimSlug do projeto de destino
modelNamestringNãoNome para o modelo clonado
descriptionstringNãoDescrição do modelo
ownerstringNãoNome de usuário da equipe (para clonagem de workspace)

Rastrear Download

POST /api/models/{modelId}/track-download

Rastreia a análise de download de modelos.

Executar Inferência

POST /api/models/{modelId}/predict

Formulário Multipart:

CampoTipoDescrição
filearquivoArquivo de imagem (JPEG, PNG, WebP)
conffloatLimiar de confiança (padrão: 0.25)
ioufloatLimiar de IoU (padrão: 0.7)
imgszintTamanho 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/predict

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 Previsão

POST /api/models/{modelId}/predict/token
Somente sessão de navegador

Esta 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/warmup
Somente sessão de navegador

A 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/start
curl -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
Tipos de GPU

Os 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}/training

Retorna 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}/training

Encerra 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.

Suporte a chave de API por rota

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/deployments

Parâmetros de Consulta:

ParâmetroTipoDescrição
modelIdstringFiltrar por modelo
statusstringFiltrar por status
limitintResultados máximos (padrão: 20, máximo: 100)
ownerstringNome 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
    }
}
CampoTipoObrigatórioDescrição
modelIdstringSimID do modelo para implantar
namestringSimNome da implantação
regionstringSimRegião da implantação
resourcesobjetoNãoConfiguraçã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.

Recursos Padrão

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.

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

Retome uma implantação parada.

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 saúde do endpoint de implantação.

Executar Inferência na Implantação

POST /api/deployments/{deploymentId}/predict

Envie 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:

CampoTipoDescrição
filearquivoArquivo de imagem (JPEG, PNG, WebP)
conffloatLimiar de confiança (padrão: 0.25)
ioufloatLimiar de IoU (padrão: 0.7)
imgszintTamanho da imagem em pixels (padrão: 640)

Obter Métricas

GET /api/deployments/{deploymentId}/metrics

Retorna contagens de solicitações, latência e métricas de taxa de erro com dados de sparkline.

Parâmetros de Consulta:

ParâmetroTipoDescrição
rangestringIntervalo de tempo: 1h, 6h, 24h (padrão), 7d, 30d
sparklinestringDefina como true para dados de sparkline otimizados para visualização no dashboard

Obter Logs

GET /api/deployments/{deploymentId}/logs

Parâmetros de Consulta:

ParâmetroTipoDescrição
severitystringFiltro separado por vírgula: DEBUG, INFO, WARNING, ERROR, CRITICAL
limitintNúmero de entradas (padrão: 50, máximo: 200)
pageTokenstringToken de paginação da resposta anterior

API de Monitoramento

Somente sessão de navegador

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/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 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/exports

Parâmetros de Consulta:

ParâmetroTipoDescrição
modelIdstringID do modelo (obrigatório)
statusstringFiltrar por status
limitintResultados máximos (padrão: 20, máximo: 100)

Criar Exportação

POST /api/exports

Corpo:

CampoTipoObrigatórioDescrição
modelIdstringSimID do modelo de origem
formatstringSimFormato de exportação (consulte a tabela abaixo)
gpuTypestringCondicionalObrigatório quando format é engine (TensorRT)
argsobjetoNãoArgumentos 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/exports

Formatos Suportados:

FormatoValorCaso de uso
ONNXonnxInferência multiplataforma
TorchScripttorchscriptImplantação PyTorch
OpenVINOopenvinoHardware Intel
TensorRTengineOtimização para GPU NVIDIA
CoreMLcoremlDispositivos Apple
TFLitetfliteDispositivos móveis e embarcados
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbGrafo congelado do TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnRede neural móvel
Edge TPUedgetpuDispositivos Google Coral
TF.jstfjsInferência no navegador
MNNmnnInferência móvel Alibaba
RKNNrknnNPU Rockchip
IMXimxSensor Sony IMX500
AxeleraaxeleraAceleradores Axelera AI
ExecuTorchexecutorchTempo 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-download

API 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.

Somente Sessão de Navegador

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/activity

Parâmetros de Consulta:

ParâmetroTipoDescrição
limitintTamanho da página (padrão: 20, máx: 100)
pageintNúmero da página (padrão: 1)
archivedbooleanotrue para aba Arquivados, false para Caixa de Entrada
searchstringBusca que não diferencia maiúsculas de 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 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/trash

Parâmetros de Consulta:

ParâmetroTipoDescrição
typestringFiltro: all, project, dataset, model
pageintNúmero da página (padrão: 1)
limitintItens por página (padrão: 50, máx: 200)
ownerstringNome 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 da lixeira.

Autenticação

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.

Unidades de Moeda

Os valores de faturamento usam centavos (creditsCents), onde 100 = $1.00.

Obter Saldo

GET /api/billing/balance

Parâmetros de Consulta:

ParâmetroTipoDescrição
ownerstringNome 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âmetroTipoDescrição
ownerstringNome de usuário do proprietário do workspace

Criar Sessão de Checkout

POST /api/billing/checkout-session

Corpo:

{
    "amount": 25,
    "owner": "team-username"
}
CampoTipoObrigatórioDescrição
amountnúmeroSimValor em dólares ($5-$1000)
ownerstringNãoNome 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-checkout

Cria uma sessão de checkout para upgrade de assinatura Pro.

Corpo:

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
CampoTipoObrigatórioDescrição
planIdstringSimPlano para assinar (pro)
billingCyclestringNãoCiclo de faturamento: monthly (padrão) ou yearly
ownerstringNãoNome 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-checkout

Cancela 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-topup

Parâmetros de Consulta:

ParâmetroTipoDescrição
ownerstringNome 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 Intent de Configuração

POST /api/billing/payment-methods/setup

Retorna um segredo de 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

Verifique o detalhamento do seu uso de armazenamento por categoria (datasets, modelos, exportações) e veja seus itens maiores.

Somente sessão de navegador

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/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"
            }
        ]
    }
}

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-url

Solicite 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
}
CampoTipoDescrição
assetTypestringTipo de ativo: models, datasets, images, videos
assetIdstringID do ativo de destino
filenamestringNome original do arquivo
contentTypestringTipo MIME
totalBytesintTamanho 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/complete

Notifique 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-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âmetroTipoDescrição
keyIdstringID 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/teams

Criar Equipe

POST /api/teams/create

Corpo:

{
    "username": "my-team",
    "fullName": "My Team"
}

Listar Membros

GET /api/members

Retorna os membros do espaço de trabalho atual.

Convidar Membro

POST /api/members

Corpo:

{
    "email": "user@example.com",
    "role": "editor"
}
Funções de Membro
FunçãoPermissões
viewerAcesso somente leitura aos recursos do espaço de trabalho
editorCriar, editar e excluir recursos
adminGerenciar 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-ownership

Convites

Aceitar Convite

POST /api/invites/accept

Obter Informações de Convite

GET /api/invites/info

Parâmetros de Consulta:

ParâmetroTipoDescrição
tokenstringToken de convite

Revogar Convite

DELETE /api/invites/{inviteId}

Reenviar Convite

POST /api/invites/{inviteId}/resend

Explorar 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/search

Parâmetros de Consulta:

ParâmetroTipoDescrição
qstringConsulta de pesquisa
typestringTipo de recurso: all (padrão), projects, datasets
sortstringOrdem de classificação: stars (padrão), newest, oldest, name-asc, name-desc, count-desc, count-asc
offsetintOffset 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 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/users

Parâmetros de Consulta:

ParâmetroTipoDescrição
usernamestringNome de usuário para pesquisar

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âmetroTipoDescrição
usernamestringNome de usuário para verificar
suggestboolOpcional: true para incluir uma sugestão caso esteja ocupado

Configurações

GET /api/settings
POST /api/settings

Obter 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/icon

Carregar ou remover avatar de perfil.

Onboarding

POST /api/onboarding

Concluir 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/gdpr

Parâmetros de Consulta:

ParâmetroTipoDescrição
jobIdstringID 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/gdpr

Corpo:

{
    "action": "export"
}
{
    "action": "delete",
    "confirmationWord": "DELETE"
}

Opcional para espaços de trabalho de 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ódigoStatus HTTPDescrição
UNAUTHORIZED401Chave de API inválida ou ausente
FORBIDDEN403Permissões insuficientes
NOT_FOUND404Recurso não encontrado
VALIDATION_ERROR400Dados de solicitação inválidos
RATE_LIMITED429Muitas solicitações
INTERNAL_ERROR500Erro 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 ultralytics

Verifica a instalação:

yolo check
Requisito de versão do pacote

A 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_KEY

Usando 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ãoDescrição
ul://username/datasets/slugDataset
ul://username/project-nameProjeto
ul://username/project/model-nameModelo específico
ul://ultralytics/yolo26/yolo26nModelo 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 probabilities

Exporta 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.

Trabalhando do teu lado

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   model

Usa os endpoints de listagem para pesquisar por nome ou filtrar por projeto.

Comentários