REST API
Ultralytics fornece uma REST API abrangente REST API acesso programático a conjuntos de dados, modelos, treinamento e implementações.
Início rápido
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://platform.ultralytics.com/api/datasets
# Run inference on a model
curl -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@image.jpg" \
https://platform.ultralytics.com/api/models/MODEL_ID/predict
Autenticação
Todas as solicitações de API exigem autenticação por meio de chave de API.
Obter chave API
- Vá para Definições > Chaves API
- Clique em Criar chave
- Copie a chave gerada
Consulte Chaves API para obter instruções detalhadas.
Cabeçalho de autorização
Inclua a sua chave API em todas as solicitações:
Authorization: Bearer ul_your_api_key_here
Exemplo
curl -H "Authorization: Bearer ul_abc123..." \
https://platform.ultralytics.com/api/datasets
URL base
Todos os pontos finais da API utilizam:
https://platform.ultralytics.com/api
Limites de taxa
| Plano | Pedidos/Minuto | Pedidos/dia |
|---|---|---|
| Gratuito | 60 | 1,000 |
| Pro | 300 | 50,000 |
| Empresa | Personalizado | Personalizado |
Os cabeçalhos de limite de taxa estão incluídos nas respostas:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1640000000
Formato de resposta
Todas as respostas são JSON:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}
Respostas de erro
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid dataset ID",
"details": { ... }
}
}
API de conjuntos de dados
Listar Conjuntos de Dados
GET /api/datasets
Parâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
page | int | Número da página (padrão: 1) |
limit | int | Itens por página (padrão: 20) |
task | corda | Filtrar por tipo de tarefa |
Resposta:
{
"success": true,
"data": [
{
"id": "dataset_abc123",
"name": "my-dataset",
"slug": "my-dataset",
"task": "detect",
"imageCount": 1000,
"classCount": 10,
"visibility": "private",
"createdAt": "2024-01-15T10:00:00Z"
}
]
}
Obter conjunto de dados
GET /api/datasets/{datasetId}
Criar conjunto de dados
POST /api/datasets
Corpo:
{
"name": "my-dataset",
"task": "detect",
"description": "A custom detection dataset"
}
Excluir Conjunto de Dados
DELETE /api/datasets/{datasetId}
Exportar conjunto de dados
POST /api/datasets/{datasetId}/export
Retorna o URL de download no formato NDJSON.
API de projetos
Lista de projetos
GET /api/projects
Obter projeto
GET /api/projects/{projectId}
Criar Projeto
POST /api/projects
Corpo:
{
"name": "my-project",
"description": "Detection experiments"
}
Excluir Projeto
DELETE /api/projects/{projectId}
API de modelos
Modelos da lista
GET /api/models
Parâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId | corda | Filtrar por projeto |
task | corda | Filtrar por tipo de tarefa |
Obter modelo
GET /api/models/{modelId}
Carregar modelo
POST /api/models
Formulário multiparte:
| Campo | Tipo | Descrição |
|---|---|---|
file | arquivo | Modelo de ficheiro .pt |
projectId | corda | Projeto-alvo |
name | corda | Nome do modelo |
Excluir Modelo
DELETE /api/models/{modelId}
Descarregar modelo
GET /api/models/{modelId}/files
Retorna URLs de download assinados para ficheiros de modelo.
Executar Inferência
POST /api/models/{modelId}/predict
Formulário multiparte:
| Campo | Tipo | Descrição |
|---|---|---|
file | arquivo | Arquivo de imagem |
conf | flutuar | Limiar de confiança |
iou | flutuar | IoU |
Resposta:
{
"success": true,
"predictions": [
{
"class": "person",
"confidence": 0.92,
"box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
}
]
}
API de formação
Começar Treinamento
POST /api/training/start
Corpo:
{
"modelId": "model_abc123",
"datasetId": "dataset_xyz789",
"epochs": 100,
"imageSize": 640,
"gpuType": "rtx-4090"
}
Obter o estado da formação
GET /api/models/{modelId}/training
Cancelar Formação
DELETE /api/models/{modelId}/training
API de implementações
Implantações da lista
GET /api/deployments
Parâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
modelId | corda | Filtrar por modelo |
Criar implementação
POST /api/deployments
Corpo:
{
"modelId": "model_abc123",
"region": "us-central1",
"minInstances": 0,
"maxInstances": 10
}
Obter implementação
GET /api/deployments/{deploymentId}
Iniciar implementação
POST /api/deployments/{deploymentId}/start
Interromper a implementação
POST /api/deployments/{deploymentId}/stop
Eliminar implementação
DELETE /api/deployments/{deploymentId}
Obter métricas
GET /api/deployments/{deploymentId}/metrics
Obter registos
GET /api/deployments/{deploymentId}/logs
Parâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
severity | corda | INFORMAÇÃO, AVISO, ERRO |
limit | int | Número de entradas |
API de exportação
Exportações da lista
GET /api/exports
Criar exportação
POST /api/exports
Corpo:
{
"modelId": "model_abc123",
"format": "onnx"
}
Formatos suportados:
onnx, torchscript, openvino, tensorrt, coreml, tflite, saved_model, graphdef, paddle, ncnn, edgetpu, tfjs, mnn, rknn, imx, axelera, executorch
Obter estado da exportação
GET /api/exports/{exportId}
API de atividade
Acompanhe e gerencie os eventos de atividade da sua conta.
Atividade da lista
GET /api/activity
Parâmetros de consulta:
| Parâmetro | Tipo | Descrição |
|---|---|---|
startDate | corda | Filtrar por data (ISO) |
endDate | corda | Filtrar até à data (ISO) |
search | corda | Pesquisar em mensagens de eventos |
Marcar eventos vistos
POST /api/activity/mark-seen
Arquivo de Eventos
POST /api/activity/archive
API do lixo
Gerir recursos eliminados temporariamente (retenção de 30 dias).
Lista Lixo
GET /api/trash
Restaurar item
POST /api/trash
Corpo:
{
"itemId": "item_abc123",
"type": "dataset"
}
Esvaziar cesto de lixo
POST /api/trash/empty
Elimina permanentemente todos os itens da lixeira.
API de faturação
Gerencie créditos e assinaturas.
Obter equilíbrio
GET /api/billing/balance
Resposta:
{
"success": true,
"data": {
"cashBalance": 5000000,
"creditBalance": 20000000,
"reservedAmount": 0,
"totalBalance": 25000000
}
}
Micro-USD
Todos os valores são expressos em micro-USD (1.000.000 = US$ 1,00) para uma contabilidade precisa.
Obter resumo de utilização
GET /api/billing/usage-summary
Retorna detalhes do plano, limites e métricas de utilização.
Criar sessão de checkout
POST /api/billing/checkout-session
Corpo:
{
"amount": 25
}
Cria uma sessão de checkout Stripe para compras com cartão de crédito (US$ 5 a US$ 1.000).
Criar checkout de assinatura
POST /api/billing/subscription-checkout
Cria uma sessão de checkout Stripe para a subscrição Pro.
Criar sessão do portal
POST /api/billing/portal-session
Retorna a URL para o portal de faturamento do Stripe para gerenciamento de assinaturas.
Obter histórico de pagamentos
GET /api/billing/payments
Retorna a lista de transações de pagamento do Stripe.
API de armazenamento
Obter informações sobre armazenamento
GET /api/storage
Resposta:
{
"success": true,
"data": {
"used": 1073741824,
"limit": 107374182400,
"percentage": 1.0
}
}
API do RGPD
Pontos finais de conformidade com o RGPD para exportação e eliminação de dados.
Exportar/Eliminar dados da conta
POST /api/gdpr
Corpo:
{
"action": "export"
}
| Ação | Descrição |
|---|---|
export | Descarregar todos os dados da conta |
delete | Eliminar conta e todos os dados |
Ação irreversível
A eliminação da conta é permanente e não pode ser revertida. Todos os dados, modelos e implementações serão eliminados.
Chaves API API
Listar chaves API
GET /api/api-keys
Criar chave API
POST /api/api-keys
Corpo:
{
"name": "training-server",
"scopes": ["training", "models"]
}
Eliminar chave API
DELETE /api/api-keys/{keyId}
Códigos de erro
| Código | Descrição |
|---|---|
UNAUTHORIZED | Chave API inválida ou ausente |
FORBIDDEN | Permissões insuficientes |
NOT_FOUND | Recurso não encontrado |
VALIDATION_ERROR | Dados de solicitação inválidos |
RATE_LIMITED | Demasiados pedidos |
INTERNAL_ERROR | Erro do servidor |
Suporte SDK
Para facilitar a integração, use oPython Ultralytics Python .
Requisito de versão do pacote
A integração da plataforma requer ultralytics>= 8.4.0. Versões inferiores NÃO funcionarão com a plataforma.
pip install "ultralytics>=8.4.0"
import os
from ultralytics import YOLO
# Set API key
os.environ["ULTRALYTICS_API_KEY"] = "ul_your_key"
# Train with Platform integration
model = YOLO("yolo11n.pt")
model.train(data="ul://username/datasets/my-dataset", project="username/my-project", name="experiment-1", epochs=100)
Webhooks
Os webhooks notificam o seu servidor sobre eventos da plataforma:
| Evento | Descrição |
|---|---|
training.started | Treino iniciado |
training.epoch | Época concluída |
training.completed | Treino concluído |
training.failed | A formação falhou |
export.completed | Pronto para exportação |
A configuração do Webhook está disponível nos planos Enterprise.
FAQ
Como posso paginar resultados extensos?
Use page e limit parâmetros:
GET /api/datasets?page=2 &
limit=50
Posso usar a API sem um SDK?
Sim, todas as funcionalidades estão disponíveis via REST. O SDK é um invólucro de conveniência.
Existem bibliotecas de clientes API?
Atualmente, use oPython Ultralytics Python ou faça solicitações HTTP diretas. Bibliotecas oficiais de clientes para outras linguagens estão planejadas.
Como posso lidar com os limites de taxa?
Implementar recuo exponencial:
import time
def api_request_with_retry(url, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url)
if response.status_code != 429:
return response
wait = 2**attempt
time.sleep(wait)
raise Exception("Rate limit exceeded")