Referência da REST API#
Ultralytics Platform fornece uma API REST abrangente para acesso programático a conjuntos de dados, modelos, treinamentos e implantações.

# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasetsExplora a referência completa e interativa da API na documentação da API do Ultralytics Platform.
Visão Geral da API#
A API é organizada em torno dos recursos principais da plataforma:
graph LR
A[API Key]:::start --> B[Datasets]:::proc
A --> C[Projects]:::proc
A --> D[Models]:::proc
A --> E[Deployments]:::proc
B -->|train on| D
C -->|contains| D
D -->|deploy to| E
D -->|export| F[Exports]:::proc
B -->|auto-annotate| B
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff| Recurso | Descrição | Operações Principais |
|---|---|---|
| Conjuntos de dados | Coleções de imagens rotuladas | CRUD, imagens, rótulos, exportação, versões, clonagem |
| Projetos | Áreas de trabalho de treinamento | CRUD, clonagem, ícone |
| Modelos | Checkpoints treinados | CRUD, previsão, download, clonagem, exportação |
| Implantações | Endpoints dedicados para inferência | CRUD, iniciar/parar, métricas, logs, saúde |
| 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 uso | Saldo, uso, transações |
| Equipes | Colaboração em áreas de trabalho | Workspaces, membros, funções |
Autenticação#
As APIs de recursos utilizam autenticação por API-key, incluindo gerenciamento de classes e divisões de datasets, clonagem, treinamento, exportações, implantações e leituras de conta suportadas. Endpoints públicos suportam acesso anônimo onde indicado. Rotas de aplicação exclusivas para navegador estão excluídas.
Obter API Key#
- Vai para
Settings>API Keys - Clique em
Create Key - Copie a chave gerada
Consulta as Chaves de API para obteres instruções detalhadas.
Cabeçalho de Autorização#
Inclua sua API key em todas as requisições:
Authorization: Bearer YOUR_API_KEYAs chaves de API utilizam o formato ul_ seguido de 40 caracteres hexadecimais. Mantém a tua chave em segredo -- nunca a submetas para o controlo de versões nem a partilhes 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/apiLimites de Taxa#
A API aplica limites baseados em janela deslizante e suportados pelo Upstash Redis por chave de API. Cada rota utiliza a categoria correspondente abaixo.
Quando limitada, a API devolve 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 que está sendo chamado. Operações custosas possuem limites mais rigorosos para evitar abusos, enquanto operações CRUD padrão compartilham um limite padrão generoso:
| Categoria | Limite | Aplica-se a |
|---|---|---|
| Padrão | 100 requisições/min | Rotas não atribuídas a uma categoria abaixo |
| Training | 10 requisições/min | Iniciando o treinamento em nuvem |
| Upload | 10 requisições/min | URLs de upload assinadas, conclusão de upload e ingestão de datasets |
| Predict | 20 requisições/min | Inferência de modelos e implantações através de rotas da API do Platform |
| Exportar | 20 requisições/min | Rotas de exportação de modelos e rotas de exportação/versão de datasets |
| Download | 30 requisições/min | Downloads de arquivos de modelo |
| Mutação | 10 requisições/min | Criação de equipe, alterações de integração de armazenamento, chaves de API, membros, convites e início/parada de implantação |
| Faturamento | 5 solicitações/min | Rotas de recarga automática e checkout de assinatura |
| Hidratar | 20 requisições/min | Hidratando um conjunto selecionado de imagens de dataset |
| Clustering | 10 requisições/min | Agrupamento de imagens de dataset |
Cada categoria possui um contador independente por API key. Por exemplo, fazer 20 requisições de previsão não afeta sua franquia padrão de 100 requisições/min.
Endpoints Dedicados (Ilimitados)#
Os pontos de extremidade dedicados não estão sujeitos aos limites de taxa de chaves da API da plataforma quando chamas o URL do ponto de extremidade diretamente (por exemplo, https://predict-abc123.run.app/predict). O débito depende então da configuração do serviço implantado.
Quando receberes um código de estado 429, espera por Retry-After (ou até X-RateLimit-Reset) antes de tentares novamente. Consulta as FAQ de limite de taxa para veres uma implementação de recuo exponencial.
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 |
API de Datasets#
Cria, explora e gere conjuntos de dados de imagens rotuladas para treinar modelos YOLO. Consulta a documentação de conjuntos de dados.
Listar Datasets#
GET /api/datasetsParâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Filtrar por nome de utilizador |
limit | int | Itens por página (predefinição: 1000, máximo: 1000) |
owner | string | Nome de utilizador do proprietário do espaço de trabalho |
includeImageUrls | booleano | Inclui URLs de imagens de amostra assinadas em tamanho real (predefinição: false) |
includeSamples | booleano | Define false para omitir imagens de amostra e reduzir o tamanho da resposta. |
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 do conjunto de dados, incluindo nomes de classes, contagens de divisões e outras propriedades gerenciadas pela Platform. Os metadados personalizados são carregados separadamente a partir do endpoint de metadados abaixo.
Passa username quando {datasetId} for um slug de conjunto de dados em vez de um ID.
Criar Dataset#
POST /api/datasetsCorpo:
{
"slug": "my-dataset",
"name": "My Dataset",
"task": "detect",
"description": "A custom detection dataset",
"metadata": { "location": "factory-1", "reviewed": true },
"visibility": "private",
"classNames": ["person", "car"]
}Valores válidos para task: detect, segment, semantic, classify, pose e obb.
Resposta:
{
"datasetId": "dataset_abc123",
"slug": "my-dataset",
"region": "us"
}Atualizar Dataset#
PATCH /api/datasets/{datasetId}Corpo (atualização parcial):
{
"name": "Updated Name",
"description": "New description",
"metadata": { "location": "factory-2", "reviewed": true },
"visibility": "public"
}Envia um objeto metadata vazio ({}) para limpar os metadados personalizados. O objeto de metadados serializado é limitado a 500.000 caracteres, e cada chave de nível superior é limitada a 128 caracteres.
Obter Metadados do Conjunto de Dados#
GET /api/datasets/{datasetId}/metadataRetorna o objeto de metadados personalizados e um conjunto selecionado de pares de campo/valor gerenciados pela Ultralytics e somente para leitura. Os metadados personalizados são omitidos intencionalmente das cargas úteis normais do conjunto de dados. Autenticação e acesso ao workspace do conjunto de dados são necessários.
Ícone do conjunto de dados#
POST /api/datasets/{datasetId}/icon
DELETE /api/datasets/{datasetId}/iconCarrega um ícone WebP até 5 MB como campo de formulário multipart image ou remove o ícone atual.
Eliminar Dataset#
DELETE /api/datasets/{datasetId}Elimina logicamente o conjunto de dados (movido para o lixo, recuperável durante 30 dias).
Clonar Dataset#
POST /api/datasets/{datasetId}/cloneCria uma cópia de um dataset de workspace público, próprio ou editável com todas as imagens e labels.
Corpo opcional (todos os campos são opcionais):
{
"name": "cloned-dataset",
"slug": "cloned-dataset",
"description": "My cloned dataset",
"visibility": "private",
"license": "AGPL-3.0",
"owner": "team-username"
}Exportar Dataset#
GET /api/datasets/{datasetId}/exportDevolve uma resposta JSON com um URL de transferência assinado 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 última exportação mutável, reutilizando-a quando o dataset não tiver sofrido alterações. |
Resposta:
{
"downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
"cached": true
}Criar Versão do Dataset#
POST /api/datasets/{datasetId}/exportCria um novo instantâneo de versão numerada do dataset. Isto requer acesso de Editor ou superior. A versão captura a contagem atual de imagens, contagem de classes, contagem de anotações e distribuição de divisões, gerando e armazenando em seguida uma exportação NDJSON imutável.
Corpo do Pedido:
{
"description": "Added 500 training images"
}Todos os campos são opcionais. O campo description é um rótulo fornecido pelo utilizador 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. Isto requer acesso de Editor ou superior.
Corpo do Pedido:
{
"version": 2,
"description": "Fixed mislabeled classes"
}Resposta:
{
"ok": true
}Restaurar Versão do Dataset#
POST /api/datasets/{datasetId}/restoreReconstrói as imagens, anotações e classes do dataset a partir de uma versão salva sem copiar os bytes das imagens.
{
"version": 2
}Obter Estatísticas de Classe#
GET /api/datasets/{datasetId}/class-statsDevolve a distribuição de classes, mapa de calor de localização e estatísticas de dimensão. Os resultados são colocados em cache 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
}Gerir Classes#
Mesclar classes (reassinar anotações de classes de origem para uma de destino e, em seguida, remover as origens):
POST /api/datasets/{datasetId}/classes/merge{
"sourceClassIds": [2, 4],
"targetClassId": 1
}IDs de classe são posicionais, portanto, a mesclagem não é idempotente. Recupere o dataset novamente antes de tentar novamente.
Eliminar classes:
POST /api/datasets/{datasetId}/classes/delete{
"classIds": [2, 4]
}Redistribuir Divisões#
POST /api/datasets/{datasetId}/splits/redistributeReatribua imagens aleatoriamente entre as divisões de treino, validação e teste. As porcentagens devem totalizar 100.
{
"train": 80,
"val": 20,
"test": 0
}Embeddings do Conjunto de Dados#
GET /api/datasets/{datasetId}/embeddings
POST /api/datasets/{datasetId}/embeddings
DELETE /api/datasets/{datasetId}/embeddingsO GET devolve o resumo atual da análise UMAP e o estado do trabalho ativo; o POST coloca na fila um trabalho de análise de embeddings; o DELETE cancela o trabalho ativo.
Agrupamento de Imagens#
GET /api/datasets/{datasetId}/images/clusteringDevolve o layout 2D UMAP e os metadados por imagem para a vista de dispersão de agrupamento (paginado e com limite de taxa).
Obter Modelos Treinados no Dataset#
GET /api/datasets/{datasetId}/modelsDevolve 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 nas imagens do dataset para gerar automaticamente 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 anotar |
modelId | string | Não | Modelo a utilizar para inferência, como um URI ul:// (por exemplo, ul://username/project/model). Se for omitido, é utilizado o modelo predefinido específico da tarefa do conjunto de dados. |
confidence | float | Não | Limiar de confiança (predefinição: 0.25) |
iou | float | Não | Limiar de IoU (predefinição: 0.7) |
Ingestão de Dataset#
POST /api/datasets/ingestCria uma tarefa de ingestão de conjuntos de dados para um conjunto de dados existente. O conjunto de dados de destino é sempre passado como datasetId no corpo JSON, e não no caminho do URL.
O corpo do pedido requer datasetId mais exatamente um de sessionId (uma sessão de carregamento de um arquivo carregado) ou sourceUrl (um URL remoto ZIP, TAR, TAR.GZ, TGZ ou NDJSON). Adiciona o opcional targetSplit (train, val ou test) para substituir a estrutura de divisões do arquivo. Para anexar metadados personalizados, utiliza imageMetadata, indexado pelo caminho exato relativo ao arquivo de cada imagem ou pelo valor NDJSON file.
Para arquivos carregados, a sessão de carregamento já está associada ao conjunto de dados pelo assetId passado para POST /api/upload/signed-url; a ingestão valida que assetId corresponde ao corpo datasetId. Entradas opcionais de classMapping mapeiam cada nome de classe de entrada para um índice de classe existente baseado em zero, um nome de classe a reutilizar ou criar, ou null para ignorar a classe. Para importações remotas de sourceUrl, cria primeiro o conjunto de dados e, em seguida, passa o seu datasetId para a ingestão.
Corpo (arquivo enviado):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"targetSplit": "train"
}Corpo (uma ou várias imagens com metadados):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"imageMetadata": {
"airbus-wing.jpg": { "aircraft": { "family": "A350" }, "inspectionStatus": "reviewed" },
"images/tail.jpg": { "aircraft": { "family": "A320" }, "inspectionSeverity": 2 }
}
}As imagens locais utilizam o fluxo de carregamento de arquivos existente, quer o arquivo contenha uma imagem quer várias. A chave deve corresponder ao caminho normalizado dentro do arquivo, incluindo pastas. Para importações NDJSON, cada registo de imagem pode conter o seu próprio objeto metadata. O metadata local do registo tem precedência sobre uma entrada correspondente em imageMetadata.
Os metadados são em formato JSON e suportam valores aninhados. Os caminhos de arquivos estão limitados a 1.024 caracteres, as chaves de metadados de nível superior a 128 caracteres e cada objeto de metadados a 500.000 caracteres serializados. O mapa completo imageMetadata ou os metadados efetivos combinados numa importação NDJSON também estão limitados a 500.000 caracteres serializados. Estas restrições estão incluídas no esquema OpenAPI interativo.
Carrega uma imagem com metadados utilizando Python
O mesmo código lida com um grupo de imagens: adiciona mais ficheiros ao ZIP e entradas correspondentes a imageMetadata.
import io
import zipfile
from pathlib import Path
import requests
api = "https://platform.ultralytics.com/api"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
dataset_id = "dataset_abc123"
image_path = Path("airbus-wing.jpg")
archive = io.BytesIO()
with zipfile.ZipFile(archive, "w", zipfile.ZIP_DEFLATED) as zf:
zf.write(image_path, image_path.name)
data = archive.getvalue()
signed = requests.post(
f"{api}/upload/signed-url",
headers=headers,
json={
"assetType": "datasets",
"assetId": dataset_id,
"filename": "images.zip",
"contentType": "application/zip",
"totalBytes": len(data),
},
)
signed.raise_for_status()
upload = signed.json()
requests.put(upload["uploadUrl"], headers={"Content-Type": "application/zip"}, data=data).raise_for_status()
requests.post(
f"{api}/upload/complete",
headers=headers,
json={"sessionId": upload["sessionId"]},
).raise_for_status()
ingest = requests.post(
f"{api}/datasets/ingest",
headers=headers,
json={
"datasetId": dataset_id,
"sessionId": upload["sessionId"],
"imageMetadata": {
"airbus-wing.jpg": {
"aircraft": {"family": "A350", "section": "wing"},
"inspectionStatus": "reviewed",
}
},
},
)
ingest.raise_for_status()
print(ingest.json())Corpo (arquivo remoto ou NDJSON):
{
"datasetId": "dataset_abc123",
"sourceUrl": "https://example.com/my-dataset.zip"
}Corpo (ingestão posterior, importação de rótulos):
{
"datasetId": "dataset_abc123",
"sessionId": "session_abc123",
"classMapping": { "person": 0, "automobile": "car", "background": null }
}A primeira ingestão cria classes a partir do arquivo automaticamente. Em ingestões posteriores, as classes do arquivo omitidas de classMapping recorrem primeiro a uma correspondência insensível a maiúsculas e minúsculas com as classes existentes do conjunto de dados. Os rótulos são ignorados apenas para as classes explicitamente mapeadas para null ou sem uma classe existente correspondente.
Resposta:
{
"jobId": "job_abc123",
"datasetId": "dataset_abc123",
"status": "queued"
}graph LR
A[POST /api/datasets]:::start --> B[POST /api/upload/signed-url]:::proc
B --> C[Upload archive to signed URL]:::proc
C --> D[POST /api/upload/complete]:::proc
D --> E[POST /api/datasets/ingest]:::proc
E --> F[Process archive]:::proc
F --> G[Dataset ready]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fffImagens 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 (predefinição: 0) |
limit | int | Itens por página (predefiniçã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 (algumas desativadas para conjuntos de dados com mais de 100 mil imagens) |
hasLabel | string | Filtrar por estado de rotulagem (true ou false) |
hasError | string | Filtrar por estado de erro (true ou false) |
search | string | Correspondência de substring em nomes de arquivos e chaves de metadados personalizados, valores escalares e entradas de array (valores aninhados em subobjetos não são correspondidos); uma string hexadecimal de 32 caracteres é uma busca exata por hash de imagem |
classIds | string | IDs de classes separados por vírgulas; devolve imagens que contenham qualquer uma das classes especificadas |
includeThumbnails | string | Incluir URLs de miniaturas assinadas (predefinição: true) |
includeImageUrls | string | Incluir URLs de imagens completas assinadas (predefinição: false) |
Obter Imagens Selecionadas#
POST /api/datasets/{datasetId}/imagesRetorna o mesmo formato de imagem para até 1.000 IDs de imagem fornecidos. Aceita os mesmos controles de consulta de URL e label da operação de listagem.
{
"imageIds": ["IMAGE_OBJECT_ID"]
}Obter URLs de Imagens Assinados#
POST /api/datasets/{datasetId}/images/urlsObtém URLs assinados para um lote de hashes de imagem (para exibição no navegador).
Eliminar Imagem#
DELETE /api/datasets/{datasetId}/images/{hash}Obter Rótulos da Imagem#
GET /api/datasets/{datasetId}/images/{hash}/labelsDevolve anotações e nomes de classes 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 utilizam valores normalizados do YOLO entre 0 e 1. As caixas delimitadoras utilizam [x_center, y_center, width, height].
Os rótulos de segmentação utilizam segments, uma lista aplainada de vértices de polígonos [x1, y1, x2, y2, ...].
Operações em Lote de Imagens#
Mover imagens entre divisões (train/val/test) dentro de um dataset:
PATCH /api/datasets/{datasetId}/images/bulkEliminar imagens em lote:
DELETE /api/datasets/{datasetId}/images/bulkAPI de Projetos#
Organiza os teus modelos em projetos. Cada modelo pertence a um projeto. Consulta a documentação de projetos.
Listar Projetos#
GET /api/projectsParâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
username | string | Filtrar por nome de utilizador |
limit | int | Itens por página |
owner | string | Nome de utilizador do proprietário do espaço de trabalho |
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",
"metadata": {"department": "manufacturing", "cost_center": "cv-01"}
}' \
https://platform.ultralytics.com/api/projectsAtualizar Projeto#
PATCH /api/projects/{projectId}Corpo (atualização parcial):
{
"metadata": { "department": "research", "program": "inspection" }
}Envia um objeto metadata vazio ({}) para limpá-lo. Os metadados do projeto usam os mesmos limites de chave de nível superior de 128 caracteres e de objeto serializado de 500.000 caracteres que os metadados do conjunto de dados.
Obter Metadados do Projeto#
GET /api/projects/{projectId}/metadataRetorna o objeto de metadados personalizados e pares de campo/valor gerenciados pela Ultralytics e somente para leitura. Autenticação e acesso ao workspace do projeto são necessários.
Eliminar Projeto#
DELETE /api/projects/{projectId}Elimina logicamente o projeto (movido para o lixo).
Clonar Projeto#
POST /api/projects/{projectId}/cloneClona um projeto de espaço de trabalho público, próprio ou editável e respetivos modelos para a tua conta ou espaço de trabalho. Um corpo JSON opcional aceita substituições de name, slug, description, visibility, license e do destino owner.
Ícone do Projeto#
POST /api/projects/{projectId}/icon
DELETE /api/projects/{projectId}/iconCarrega um ícone WebP até 5 MB como campo de formulário multipart image ou remove o ícone atual.
API de Modelos#
Gere modelos YOLO treinados — visualiza métricas, transfere pesos, executa inferência e exporta para outros formatos. Consulta 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 modelo separados por vírgula |
limit | int | Não | Resultados máximos (padrão 20, máximo 100) |
Listar Modelos Concluídos#
GET /api/models/completedDevolve até 1.000 modelos com pesos utilizáveis em todos os projetos para treino e implantação. Passa owner para um espaço de trabalho.
Obter Modelo#
GET /api/models/{modelId}Criar Modelo#
POST /api/modelsCorpo JSON:
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
projectId | string | Sim | ID do projeto alvo |
slug | string | Não | Slug da 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) |
metadata | objeto | Não | Metadados JSON personalizados |
task | string | Não | Tipo de tarefa (detect, segment, semantic, depth, pose, obb, classify) |
Para anexar pesos de .pt, solicita um URL de carregamento assinado com assetType: models e o ID deste modelo como assetId, carrega o ficheiro e, em seguida, chama POST /api/upload/complete com o sessionId devolvido.
Atualizar Modelo#
PATCH /api/models/{modelId}Corpo (atualização parcial):
{
"metadata": { "release": "candidate-3", "reviewed": true }
}Envia um objeto metadata vazio ({}) para limpá-lo. Os metadados personalizados do modelo são separados das informações do modelo pertencentes ao treinamento, detalhes do ambiente e argumentos de treinamento, e usam os mesmos limites de objeto serializado e chave de nível superior que os metadados do conjunto de dados.
Obter Metadados do Modelo#
GET /api/models/{modelId}/metadataRetorna o objeto de metadados personalizados e pares de campo/valor gerenciados pela Ultralytics e somente para leitura. Autenticação e acesso ao workspace do modelo são necessários.
Excluir 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 de workspace público, próprio ou editável para um dos seus projetos.
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 espaço de trabalho) |
Rastrear Download#
POST /api/models/{modelId}/track-downloadRastreie análises de download de modelo.
Executar inferência#
POST /api/models/{modelId}/predictModelos públicos podem ser previstos sem autenticação. Modelos privados e compartilhados exigem uma API key com acesso ao projeto pai.
Formulário Multipart:
| Parâmetro | Tipo | Predefinição | Intervalo | Descrição |
|---|---|---|---|---|
file | arquivo | - | - | Ficheiro de imagem ou vídeo (obrigatório, a menos que source esteja definido) |
conf | float | 0.25 | 0.01 – 1.0 | Limite mínimo de confiança |
iou | float | 0.7 | 0.0 – 0.95 | Limite de IoU do NMS |
imgsz | int | 640 | 32 – 1280 | Tamanho da imagem de entrada em pixels |
normalize | bool | false | - | Retornar coordenadas de caixa delimitadora como 0 – 1 |
decimals | int | 5 | 0 – 10 | Precisão decimal para valores de coordenadas |
source | string | - | - | URL da imagem ou string base64 (alternativa a file) |
Fornece file ou source. O tamanho máximo de carregamento é 100 MB.
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
-F "conf=0.5" \
https://platform.ultralytics.com/api/models/MODEL_ID/predictResposta:
As respostas contêm shape, speed, results por imagem e dados opcionais de mapas de píxeis densos (um mapa de classes semânticas ou um mapa de profundidade onde depth = pixel × max / divisor — divisor 255 para o mapa predefinido de 8 bits, 65535 com bits=12|16), além de metadata com a contagem de imagens, o tempo de execução da função, a tarefa e as versões dos serviços. Os caminhos internos dos modelos nunca são devolvidos.
{
"images": [
{
"shape": [1080, 1920],
"results": [
{
"class": 0,
"name": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
],
"metadata": {
"imageCount": 1
}
}API de Treinamento#
Inicia o treino YOLO em GPUs na cloud (26 tipos de GPU desde a RTX 2000 Ada até à B300) e monitoriza o progresso em tempo real. Consulta a documentação de treino na cloud.
graph LR
A[POST /training/start]:::start --> B[Job Created]:::proc
B --> C{Training}:::decide
C -->|progress| D[GET /models/id/training]:::proc
C -->|cancel| E[DELETE /models/id/training]:::error
C -->|complete| F[Model Ready]:::out
F --> G[Deploy or Export]:::proc
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef decide fill:#FF9800,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fffIniciar 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. Consulta a página Cloud Training para ver a lista completa com os preços.
Obter Disponibilidade de GPU#
GET /api/training/gpu-availabilityDevolve o estado atual do stock de GPU (High, Medium, Low ou null) indexado pelo ID do tipo de GPU. Público, sem necessidade de autenticação; em cache durante 5 minutos.
Obter Status de Treinamento#
GET /api/models/{modelId}/trainingRetorna o status atual do trabalho de treinamento, métricas, progresso, tempo, detalhes da GPU e erros. Projetos públicos são acessíveis sem autenticação; projetos privados e compartilhados exigem uma API key com acesso.
Cancelar Treinamento#
DELETE /api/models/{modelId}/trainingFinaliza a instância de computação em execução e marca o trabalho como cancelado.
API de Implantações#
Implanta modelos em pontos de extremidade de inferência dedicados com verificações de estado e monitorização. As novas implantações utilizam a redução a zero por predefinição, e a API aceita um objeto opcional resources. Consulta a documentação de pontos de extremidade.
Todas as rotas de implantação abaixo aceitam autenticação por chave de API. Para inferência de alto débito, chama diretamente o URL do ponto de extremidade da implantação (por exemplo, https://predict-abc123.run.app/predict) com a tua chave de API. Os pontos de extremidade dedicados não têm limite de taxa.
graph LR
A[Create]:::start --> B[Deploying]:::proc
B --> C[Ready]:::out
C -->|stop| D[Stopped]:::extern
D -->|start| C
C -->|delete| E[Deleted]:::error
D -->|delete| E
C -->|predict| F[Inference Results]:::out
classDef start fill:#4CAF50,color:#fff
classDef proc fill:#2196F3,color:#fff
classDef out fill:#9C27B0,color:#fff
classDef error fill:#F44336,color:#fff
classDef extern fill:#607D8B,color:#fffListar 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 utilizador do proprietário do espaço de trabalho |
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 submete atualmente predefinições fixas de cpu=1, memoryGi=2, minInstances=0 e maxInstances=1. A rota da API aceita um objeto resources, mas os limites do plano limitam minInstances a 0 e maxInstances a 1.
Escolhe uma região próxima aos teus utilizadores para obteres a latência mais baixa. A UI da plataforma apresenta estimativas de latência para todas as 42 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}/stopInterrompe o atendimento de solicitações definindo as instâncias mínima e máxima do serviço como zero.
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 roteado através do endpoint dedicado para menor latência.
Formulário Multipart:
| Parâmetro | Tipo | Predefinição | Intervalo | Descrição |
|---|---|---|---|---|
file | arquivo | - | - | Ficheiro de imagem ou vídeo (obrigatório, a menos que source esteja definido) |
conf | float | 0.25 | 0.01 – 1.0 | Limite mínimo de confiança |
iou | float | 0.7 | 0.0 – 0.95 | Limite de IoU do NMS |
imgsz | int | 640 | 32 – 1280 | Tamanho da imagem de entrada em pixels |
normalize | bool | false | - | Retornar coordenadas de caixa delimitadora como 0 – 1 |
decimals | int | 5 | 0 – 10 | Precisão decimal para valores de coordenadas |
source | string | - | - | URL da imagem ou string base64 (alternativa a file) |
Fornece file ou source. A resposta utiliza o mesmo contrato de imagem e metadados que a predição do modelo e nunca devolve o caminho interno do modelo.
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 (predefinição), 7d, 30d |
sparkline | string | Define como true para dados de mini-gráficos otimizados para a vista do painel |
Obter Logs#
GET /api/deployments/{deploymentId}/logsParâ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 Exportação#
Converte modelos para formatos otimizados como ONNX, TensorRT, CoreML e LiteRT para implantação no edge. Consulta 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 (veja a tabela abaixo) |
gpuType | string | Condicional | Obrigatório quando format é engine; utiliza um destino de GPU ou Jetson suportado |
args | objeto | Não | Argumentos de exportação (imgsz, quantize, 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:
Utiliza o argumento format da tabela de exportação partilhada abaixo. O PyTorch é o formato de origem e não é um destino de exportação da API.
| Formato | Argumento format | Modelo | Metadados | Argumentos |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
Obter Status de Exportação#
GET /api/exports/{exportId}Cancelar Exportação#
DELETE /api/exports/{exportId}Rastrear Download de Exportação#
POST /api/exports/{exportId}/track-downloadAPI de Atividade#
Consulta um feed de ações recentes na tua conta — execuções de treino, carregamentos e muito mais. Consulta a documentação de atividade.
Todas as rotas de Atividade abaixo aceitam autenticação por API-key.
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 o separador Arquivo, false para a Caixa de entrada |
search | string | Busca insensitive a maiúsculas/minúsculas em campos de evento |
start | data | Incluir eventos na ou após esta data |
end | data | Incluir eventos na ou antes desta data |
export | booleano | Retornar todos os eventos correspondentes como JSON |
owner | string | Nome de usuário do workspace |
Marcar Eventos como Vistos#
POST /api/activity/mark-seenCorpo:
{
"all": true
}Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}Passa o parâmetro de consulta opcional owner para marcar eventos num espaço de trabalho.
Arquivar Eventos#
POST /api/activity/archiveCorpo:
{
"all": true,
"archive": true
}Ou passe IDs específicos:
{
"eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
"archive": false
}Passa o parâmetro de consulta opcional owner para arquivar ou restaurar eventos do espaço de trabalho.
API de Lixeira#
Visualiza e restaura itens eliminados. Os itens são removidos permanentemente após 30 dias. Consulta a documentação do lixo.
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 utilizador do proprietário do espaço de trabalho |
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 aceita autenticação por chave de API e elimina permanentemente todos os itens no lixo da conta ou espaço de trabalho selecionado.
API de Faturamento#
Verifica o teu saldo de créditos, a utilização do plano e o histórico de transações. Consulta a documentação de faturamento.
Os pontos de extremidade de saldo e transações aceitam um parâmetro de consulta opcional owner com o nome de utilizador do proprietário do espaço de trabalho.
Os montantes de faturamento utilizam cêntimos (creditsCents) onde 100 = $1.00.
Obter Saldo#
GET /api/billing/balanceResposta:
{
"creditsCents": 2500,
"plan": "free"
}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).
As transações incluem campos contábeis voltados ao cliente, como valor, saldo resultante, data, contexto de modelo opcional e URL de recibo. Notas internas, IDs de pagamento/reembolso Stripe e chaves de idempotência não são retornados.
API de Armazenamento#
Verifique a análise do uso do seu armazenamento por categoria (datasets, modelos, exportações) e veja seus itens maiores.
GET /api/storage aceita autenticação por chave de API. Utiliza a página Definições > Perfil para obteres o mesmo detalhe interativo.
Obter Informações de Armazenamento#
GET /api/storageParâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
details | booleano | Define como true para incluir topItems (conjuntos de dados, modelos e exportações maiores). |
owner | string | Nome de usuário do workspace. |
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"
}
]
}
}Integrações de Armazenamento em Nuvem#
Conecte e navegue em integrações de armazenamento GCS, S3 ou Azure Blob somente leitura:
GET /api/integrations/buckets
POST /api/integrations/buckets
POST /api/integrations/buckets/discover
GET /api/integrations/buckets/{id}/objectsTodas as quatro operações aceitam o parâmetro de consulta opcional owner para um espaço de trabalho. A navegação de objetos também aceita o parâmetro obrigatório target mais os parâmetros de consulta opcionais prefix e o fornecedor cursor. Os corpos dos pedidos de ligação e descoberta utilizam os esquemas de credenciais do fornecedor na referência OpenAPI interativa; as credenciais nunca são devolvidas.
API de Upload#
Carrega ficheiros diretamente para o armazenamento na cloud utilizando URLs assinados para transferências rápidas e fiáveis. A conclusão de um carregamento de modelo anexa os respetivos pesos. A conclusão de um carregamento de arquivo de conjunto de dados regista a sessão; passa esse sessionId para POST /api/datasets/ingest para iniciar o processamento. Consulta a documentação de dados.
Obter URL de Upload Assinada#
POST /api/upload/signed-urlSolicite uma URL assinada para fazer o upload de um arquivo diretamente para o armazenamento em nuvem. A URL assinada contorna o servidor da API para transferências de arquivos grandes.
Corpo:
{
"assetType": "datasets",
"assetId": "dataset_abc123",
"filename": "my-dataset.zip",
"contentType": "application/zip",
"totalBytes": 52428800
}| Campo | Tipo | Descrição |
|---|---|---|
assetType | string | Tipo de ativo: models, datasets, images, videos |
assetId | string | ID do ativo alvo |
filename | string | Nome do arquivo original |
contentType | string | Tipo MIME |
totalBytes | int | Tamanho do arquivo em bytes |
Resposta:
{
"sessionId": "session_abc123",
"uploadUrl": "https://storage.example.com/...",
"expiresAt": "2026-02-22T12:00:00Z"
}Concluir Upload#
POST /api/upload/completeNotifica a plataforma de que o carregamento de um ficheiro foi concluído. Para modelos, isto anexa os pesos carregados. Para arquivos de conjuntos de dados, isto verifica e regista a sessão de carregamento; chama POST /api/datasets/ingest a seguir para iniciar o processamento do conjunto de dados.
Corpo:
{
"sessionId": "session_abc123",
"checksum": "<optional sha-256 hex>"
}API de Integrações#
Importa conjuntos de dados de serviços de terceiros. Consulta a documentação de integrações.
Pré-visualizar Importação do Roboflow#
POST /api/integrations/roboflow/previewResolve uma API key do Roboflow para um plano de importação em massa: informações do workspace, quais projetos seriam importados recentemente, contagem de versões já importadas (ignoradas) e tipos de projeto não suportados. A API key do Roboflow é passada no corpo e não é guardada.
Importar do Roboflow#
POST /api/integrations/roboflow/importColoca na fila trabalhos de ingestão de conjuntos de dados para importar os projetos Roboflow selecionados para o teu workspace. Requer capacidade de armazenamento e cada conjunto de dados deve cumprir o limite de tamanho por importação do teu plano.
API de Chaves de API#
Gere as tuas chaves de API para acesso programático. Consulta a documentação de chaves de API.
Listar Chaves de API#
GET /api/api-keysOs clientes autenticados com chave de API recebem metadados da chave, nunca valores de chaves existentes desencriptados. Uma chave recém-criada é devolvida uma vez por POST /api/api-keys.
Passa o parâmetro de consulta opcional owner para gerir chaves para um espaço de trabalho onde tens acesso de editor.
Criar 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 |
owner | string | Nome de usuário do workspace opcional. |
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#
Cria espaços de trabalho de equipa, convida membros e gere funções para colaboração. Consulta a documentação de equipas.
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"
}| Papel | Permissões |
|---|---|
viewer | Acesso somente leitura aos recursos do espaço de trabalho |
editor | Criar, editar e excluir recursos |
admin | Gerenciar membros, faturamento e todos os recursos (apenas designável pelo proprietário da equipe) |
O owner da equipa é o criador e não pode ser convidado. O proprietário é transferido separadamente através de POST /api/members/transfer-ownership. Consulta a página Equipas para ver todos os detalhes sobre as funções.
Atualizar Papel de Membro#
PATCH /api/members/{userId}Remover Membro#
DELETE /api/members/{userId}Transferir Propriedade#
POST /api/members/transfer-ownershipAPI de Exploração#
Pesquisa e explora conjuntos de dados públicos e projetos partilhados pela comunidade. Consulta 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 (predefinição), projects, datasets |
sort | string | Ordem de classificação: newest (predefinição), stars, 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. |
task | string | Opcional: tipos de tarefas YOLO separados por vírgulas para filtrar conjuntos de dados (detect, segment, semantic, classify, pose, obb) |
author | string | Filtro opcional de nome de usuário do proprietário. |
starred | booleano | Define true para devolver o conteúdo marcado com estrela do autor do pedido autenticado; requer uma chave de API. |
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#
Gere o teu perfil, chaves de API, utilização de armazenamento e espaços de trabalho de equipa. Consulta a documentação de definições.
Resumo da Conta#
GET /api/account/summaryRetorna o plano da conta autenticada, saldo de crédito, contagens de recursos e workspaces de equipe.
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 a procurar |
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 a verificar |
suggest | bool | Opcional: true para incluir uma sugestão se já estiver ocupado |
Configurações#
GET /api/settings
POST /api/settingsObter ou atualizar configurações do perfil de usuário (nome de exibição, bio, links sociais, etc.).
Ícone do Workspace#
POST /api/settings/icon
DELETE /api/settings/iconCarrega um ícone de perfil/espaço de trabalho WebP até 5 MB como campo de formulário multipart image ou remove-o. Passa o opcional owner para um espaço de trabalho de equipa.
Integração 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>=8.4.104"Verifique a instalação:
yolo checkAutenticação#
yolo login YOUR_API_KEYUsando conjuntos de dados da plataforma#
Faz referência a conjuntos de dados 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 | 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#
Envie resultados para um projeto na plataforma:
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 treinamento (tempo real)
- Pesos finais do modelo
- Gráficos de validação
- Saída da consola
- Métricas do sistema
Exemplos de API#
Carregar 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 probabilitiesExportar modelo:
# Export to ONNX
model.export(format="onnx", imgsz=640, quantize=16)
# Export to TensorRT
model.export(format="engine", imgsz=640, quantize=16)
# Export to CoreML
model.export(format="coreml", imgsz=640) # use imgsz=224 for classificationValidação:
metrics = model.val(data="ul://username/datasets/my-dataset")
print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")FAQ#
Como faço para paginar resultados grandes?#
A maioria dos pontos de extremidade utiliza um parâmetro limit para controlar quantos resultados são devolvidos por pedido:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://platform.ultralytics.com/api/datasets?limit=50"Os pontos de extremidade de Atividade e Lixo 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 de busca Explore 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?#
As operações REST públicas documentadas acima estão disponíveis sem o SDK do Python. O SDK é um wrapper de conveniência que adiciona recursos como streaming de métricas em tempo real e uploads automáticos de modelos. Podes explorar o contrato legível por máquina interativamente em platform.ultralytics.com/api/docs; os fluxos de conta exclusivos para sessões de navegador permanecem na interface da Platform.
Existem bibliotecas de cliente de API?#
Usa o pacote Python do Ultralytics ou faz solicitações HTTP diretas a partir de qualquer linguagem.
Como lido com limites de taxa?#
Usa o cabeçalho Retry-After da resposta 429 para esperar o tempo certo:
import time
import requests
def api_request_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code != 429:
return response
wait = int(response.headers.get("Retry-After", 2**attempt))
time.sleep(wait)
raise RuntimeError("Rate limit exceeded")Como encontro o ID do meu modelo ou conjunto de dados?#
Os IDs de recursos são retornados pelas respostas de API de criação, listagem e obtenção. As URLs das páginas da plataforma usam slugs legíveis por humanos, e não IDs de banco de dados:
https://platform.ultralytics.com/username/project/model-name
^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
username project modelUsa os endpoints de lista para encontrar o _id correspondente para um modelo, conjunto de dados, projeto, implantação ou outro recurso.