Referencia de la REST API

La Ultralytics Platform proporciona una completa REST API para el acceso programático a datasets, modelos, entrenamiento y despliegues.

Descripción general de la REST API de Ultralytics Platform

Inicio rápido
# List your datasets
curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets
Documentación interactiva de la API

Explora la referencia interactiva completa de la API en la documentación de la API de Ultralytics Platform.

Descripción general de la API

La API está organizada en torno a los recursos principales de la 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
RecursoDescripciónOperaciones clave
DatasetsColecciones de imágenes etiquetadasCRUD, imágenes, etiquetas, exportación, versiones, clonación
ProjectsEspacios de trabajo de entrenamientoCRUD, clonación, icono
ModelsCheckpoints entrenadosCRUD, predicción, descarga, clonación, exportación
DeploymentsEndpoints de inferencia dedicadosCRUD, inicio/parada, métricas, registros, estado
ExportsTrabajos de conversión de formatoCreación, estado, descarga
TrainingTrabajos de entrenamiento en GPU en la nubeInicio, estado, cancelación
BillingCréditos y suscripcionesSaldo, recarga, métodos de pago
TeamsColaboración en espacios de trabajoMiembros, invitaciones, roles

Autenticación

Las API de recursos, como datasets, proyectos, modelos, entrenamiento, exportaciones y predicciones, utilizan autenticación mediante API key. Los endpoints públicos (listado de datasets, proyectos y modelos públicos) admiten acceso de lectura anónimo sin necesidad de una clave. Las rutas orientadas a la cuenta —incluyendo actividad, configuración, equipos, facturación y flujos de GDPR— requieren actualmente una sesión de navegador autenticada y no están disponibles mediante API key.

Obtener API Key

  1. Ve a Settings > API Keys
  2. Haz clic en Create Key
  3. Copia la clave generada

Consulta API Keys para obtener instrucciones detalladas.

Cabecera de autorización

Incluye tu API key en todas las solicitudes:

Authorization: Bearer YOUR_API_KEY
Formato de clave API

Las API keys usan el formato ul_ seguido de 40 caracteres hexadecimales. Mantén tu clave en secreto; nunca la subas al control de versiones ni la compartas públicamente.

Ejemplo

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://platform.ultralytics.com/api/datasets

URL base

Todos los endpoints de la API utilizan:

https://platform.ultralytics.com/api

Límites de tasa

La API impone límites de tasa por API key (ventana deslizante, respaldada por Upstash Redis) para proteger contra abusos manteniendo el uso legítimo sin restricciones. El tráfico anónimo está protegido adicionalmente por los controles de abuso a nivel de plataforma de Vercel.

Cuando se alcanza el límite, la API devuelve un código 429 con metadatos de reintento:

Retry-After: 12
X-RateLimit-Reset: 2026-02-21T12:34:56.000Z

Límites por API Key

Los límites de tasa se aplican automáticamente según el endpoint que se esté llamando. Las operaciones costosas tienen límites más estrictos para evitar abusos, mientras que las operaciones CRUD estándar comparten un generoso límite predeterminado:

EndpointLímiteSe aplica a
Predeterminado100 solicitudes/minTodos los endpoints no listados a continuación (listado, obtención, creación, actualización, eliminación)
Entrenamiento10 solicitudes/minInicio de trabajos de entrenamiento en la nube (POST /api/training/start)
Cargar10 solicitudes/minCarga de archivos, URLs firmadas e ingesta de datasets
Predict20 solicitudes/minInferencia de modelos compartidos (POST /api/models/{id}/predict)
Exportar20 solicitudes/minExportaciones de formato de modelo (POST /api/exports), exportaciones NDJSON de datasets y creación de versiones
Descarga30 solicitudes/minDescargas de archivos de pesos del modelo (GET /api/models/{id}/download)
DedicadoIlimitadoEndpoints dedicados — tu propio servicio, sin límites de API

Cada categoría tiene un contador independiente por API key. Por ejemplo, realizar 20 solicitudes de predicción no afecta a tu asignación predeterminada de 100 solicitudes/min.

Endpoints dedicados (Ilimitado)

Los endpoints dedicados no están sujetos a límites de tasa por API key. Cuando despliegas un modelo en un endpoint dedicado, las solicitudes a esa URL de endpoint (p. ej., https://predict-abc123.run.app/predict) van directamente a tu servicio dedicado sin limitación de tasa por parte de la plataforma. Pagas por la computación, así que obtienes el rendimiento de la configuración de tu servicio dedicado en lugar de los límites de la API compartida.

Gestión de límites de tasa

Cuando recibas un código de estado 429, espera según Retry-After (o hasta X-RateLimit-Reset) antes de volver a intentarlo. Consulta el FAQ sobre límites de tasa para ver una implementación de retroceso exponencial.

Formato de respuesta

Respuestas exitosas

Las respuestas devuelven JSON con campos específicos del recurso:

{
    "datasets": [...],
    "total": 100
}

Respuestas de error

{
    "error": "Dataset not found"
}
Estado HTTPSignificado
200Éxito
201Creado
400Solicitud no válida
401Autenticación requerida
403Permisos insuficientes
404Recurso no encontrado
409Conflicto (duplicado)
429Límite de tasa excedido
500Error del servidor

API de Datasets

Crea, explora y gestiona datasets de imágenes etiquetadas para entrenar modelos YOLO. Consulta la documentación de Datasets.

Listar datasets

GET /api/datasets

Parámetros de consulta:

ParámetroTipoDescripción
usernamecadenaFiltrar por nombre de usuario
slugcadenaObtener un conjunto de datos único por slug
limitintElementos por página (predeterminado: 20, máximo: 500)
ownercadenaNombre de usuario del propietario del área de trabajo
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=10"

Respuesta:

{
    "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"
}

Obtener conjunto de datos

GET /api/datasets/{datasetId}

Devuelve los detalles completos del conjunto de datos, incluidos los metadatos, los nombres de las clases y los recuentos de particiones.

Crear conjunto de datos

POST /api/datasets

Cuerpo:

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

Valores de task válidos: detect, segment, classify, pose, obb.

Actualizar conjunto de datos

PATCH /api/datasets/{datasetId}

Cuerpo (actualización parcial):

{
    "name": "Updated Name",
    "description": "New description",
    "visibility": "public"
}

Eliminar conjunto de datos

DELETE /api/datasets/{datasetId}

Elimina el conjunto de datos de forma lógica (movido a la papelera, recuperable durante 30 días).

Clonar conjunto de datos

POST /api/datasets/{datasetId}/clone

Crea una copia del conjunto de datos con todas las imágenes y etiquetas. Solo se pueden clonar conjuntos de datos públicos. Requiere una sesión activa en el navegador de la plataforma; no disponible a través de una clave API.

Cuerpo (todos los campos son opcionales):

{
    "name": "cloned-dataset",
    "description": "My cloned dataset",
    "visibility": "private",
    "owner": "team-username"
}

Exportar conjunto de datos

GET /api/datasets/{datasetId}/export

Devuelve una respuesta JSON con una URL de descarga firmada para la última exportación del conjunto de datos.

Parámetros de consulta:

ParámetroTipoDescripción
venteroNúmero de versión (indexado en 1). Si se omite, devuelve la última exportación (no almacenada en caché).

Respuesta:

{
    "downloadUrl": "https://storage.example.com/export.ndjson?signed=...",
    "cached": true
}

Crear versión del conjunto de datos

POST /api/datasets/{datasetId}/export

Crea una nueva instantánea de versión numerada del conjunto de datos. Solo para el propietario. La versión captura el recuento actual de imágenes, el recuento de clases, el recuento de anotaciones y la distribución de particiones, y luego genera y almacena una exportación NDJSON inmutable.

Cuerpo de la solicitud:

{
    "description": "Added 500 training images"
}

Todos los campos son opcionales. El campo description es una etiqueta proporcionada por el usuario para la versión.

Respuesta:

{
    "version": 3,
    "downloadUrl": "https://storage.example.com/v3.ndjson?signed=..."
}

Actualizar descripción de la versión

PATCH /api/datasets/{datasetId}/export

Actualiza la descripción de una versión existente. Solo para el propietario.

Cuerpo de la solicitud:

{
    "version": 2,
    "description": "Fixed mislabeled classes"
}

Respuesta:

{
    "ok": true
}

Obtener estadísticas de clase

GET /api/datasets/{datasetId}/class-stats

Devuelve la distribución de clases, el mapa de calor de ubicación y las estadísticas de dimensiones. Los resultados se almacenan en caché hasta por 5 minutos.

Respuesta:

{
    "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
}

Obtener modelos entrenados con el conjunto de datos

GET /api/datasets/{datasetId}/models

Devuelve los modelos que se entrenaron utilizando este conjunto de datos.

Respuesta:

{
    "models": [
        {
            "_id": "model_abc123",
            "name": "experiment-1",
            "slug": "experiment-1",
            "status": "completed",
            "task": "detect",
            "epochs": 100,
            "bestEpoch": 87,
            "projectId": "project_xyz",
            "projectSlug": "my-project",
            "projectIconColor": "#3b82f6",
            "projectIconLetter": "M",
            "username": "johndoe",
            "startedAt": "2024-01-14T22:00:00Z",
            "completedAt": "2024-01-15T10:00:00Z",
            "createdAt": "2024-01-14T21:55:00Z",
            "metrics": {
                "mAP50": 0.85,
                "mAP50-95": 0.72,
                "precision": 0.88,
                "recall": 0.81
            }
        }
    ],
    "count": 1
}

Autoanotar conjunto de datos

POST /api/datasets/{datasetId}/predict

Ejecuta la inferencia de YOLO en las imágenes del conjunto de datos para generar anotaciones automáticamente. Utiliza un modelo seleccionado para predecir etiquetas para imágenes sin anotar.

Cuerpo:

CampoTipoRequeridoDescripción
imageHashcadenaHash de la imagen a anotar
modelIdcadenaNoID del modelo a utilizar para la inferencia
confidencefloatNoUmbral de confianza (predeterminado: 0.25)
ioufloatNoUmbral de IoU (predeterminado: 0.45)

Ingesta de conjunto de datos

POST /api/datasets/ingest

Crea un trabajo de ingesta de conjuntos de datos para procesar archivos ZIP o TAR cargados, incluidos .tar.gz y .tgz, que contengan imágenes y etiquetas.

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]

Imágenes del conjunto de datos

Listar imágenes

GET /api/datasets/{datasetId}/images

Parámetros de consulta:

ParámetroTipoDescripción
splitcadenaFiltrar por partición: train, val, test
offsetintDesplazamiento de paginación (predeterminado: 0)
limitintElementos por página (predeterminado: 50, máximo: 5000)
sortcadenaOrden de clasificación: newest, oldest, name-asc, name-desc, height-asc, height-desc, width-asc, width-desc, size-asc, size-desc, labels-asc, labels-desc (algunos deshabilitados para conjuntos de datos de más de 100 000 imágenes)
hasLabelcadenaFiltrar por estado de etiqueta (true o false)
hasErrorcadenaFiltrar por estado de error (true o false)
searchcadenaBuscar por nombre de archivo o hash de imagen
includeThumbnailscadenaIncluir URL de miniaturas firmadas (predeterminado: true)
includeImageUrlscadenaIncluir URL de imágenes completas firmadas (predeterminado: false)

Obtener URL de imágenes firmadas

POST /api/datasets/{datasetId}/images/urls

Obtener URL firmadas para un lote de hashes de imagen (para su visualización en el navegador).

Eliminar imagen

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

Obtener etiquetas de imagen

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

Devuelve las anotaciones y los nombres de las clases para una imagen específica.

Actualizar etiquetas de imagen

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

Cuerpo:

{
    "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

Las coordenadas de las etiquetas utilizan valores normalizados de YOLO entre 0 y 1. Los cuadros delimitadores (bounding boxes) utilizan [x_center, y_center, width, height]. Las etiquetas de segmentación utilizan segments, una lista aplanada de vértices de polígono [x1, y1, x2, y2, ...].

Operaciones masivas con imágenes

Mover imágenes entre particiones (train/val/test) dentro de un conjunto de datos:

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

Eliminar imágenes de forma masiva:

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

API de proyectos

Organiza tus modelos en proyectos. Cada modelo pertenece a un proyecto. Consulta la documentación de Proyectos.

Listar proyectos

GET /api/projects

Parámetros de consulta:

ParámetroTipoDescripción
usernamecadenaFiltrar por nombre de usuario
limitintElementos por página
ownercadenaNombre de usuario del propietario del área de trabajo

Obtener proyecto

GET /api/projects/{projectId}

Crear proyecto

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

Actualizar proyecto

PATCH /api/projects/{projectId}

Eliminar proyecto

DELETE /api/projects/{projectId}

Elimina el proyecto de forma lógica (movido a la papelera).

Clonar proyecto

POST /api/projects/{projectId}/clone

Clona un proyecto público (con todos sus modelos) en tu área de trabajo. Requiere una sesión activa en el navegador de la plataforma; no disponible a través de una clave API.

Icono del proyecto

Cargar un icono de proyecto (formulario multipart con archivo de imagen):

POST /api/projects/{projectId}/icon

Eliminar el icono del proyecto:

DELETE /api/projects/{projectId}/icon

Ambos requieren una sesión activa en el navegador de la plataforma; no disponibles a través de una clave API.


API de modelos

Gestiona modelos YOLO entrenados: consulta métricas, descarga pesos, ejecuta inferencia y exporta a otros formatos. Consulta la documentación de Modelos.

Listar modelos

GET /api/models

Parámetros de consulta:

ParámetroTipoRequeridoDescripción
projectIdcadenaID del proyecto (obligatorio)
fieldscadenaNoConjunto de campos: summary, charts
idscadenaNoIDs de modelo separados por comas
limitintNoResultados máximos (predeterminado 20, máximo 100)

Listar modelos completados

GET /api/models/completed

Devuelve los modelos que han terminado de entrenarse (para su uso en selectores de modelos y despliegue).

Obtener modelo

GET /api/models/{modelId}

Crear modelo

POST /api/models

Cuerpo JSON:

CampoTipoRequeridoDescripción
projectIdcadenaID del proyecto de destino
slugcadenaNoSlug de URL (alfanumérico en minúsculas/guiones)
namecadenaNoNombre visible (máximo 100 caracteres)
descriptioncadenaNoDescripción del modelo (máximo 1000 caracteres)
taskcadenaNoTipo de tarea (detect, segment, pose, obb, classify)
Carga de archivo de modelo

Las cargas de archivos de modelo .pt se gestionan por separado. Usa la interfaz de la plataforma para arrastrar y soltar archivos de modelo en un proyecto.

Actualizar modelo

PATCH /api/models/{modelId}

Eliminar modelo

DELETE /api/models/{modelId}

Descargar archivos de modelo

GET /api/models/{modelId}/files

Devuelve URLs de descarga firmadas para los archivos del modelo.

Clonar modelo

POST /api/models/{modelId}/clone

Clona un modelo público a uno de tus proyectos. Requiere una sesión activa en el navegador de la plataforma; no está disponible mediante clave API.

Cuerpo:

{
    "targetProjectSlug": "my-project",
    "modelName": "cloned-model",
    "description": "Cloned from public model",
    "owner": "team-username"
}
CampoTipoRequeridoDescripción
targetProjectSlugcadenaSlug del proyecto de destino
modelNamecadenaNoNombre para el modelo clonado
descriptioncadenaNoDescripción del modelo
ownercadenaNoNombre de usuario del equipo (para clonar áreas de trabajo)

Rastrear descarga

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

Rastrea las analíticas de descarga del modelo.

Ejecutar inferencia

POST /api/models/{modelId}/predict

Formulario multiparte:

CampoTipoDescripción
filearchivoArchivo de imagen (JPEG, PNG, WebP)
conffloatUmbral de confianza (predeterminado: 0.25)
ioufloatUmbral de IoU (predeterminado: 0.7)
imgszintTamaño de imagen en píxeles (predeterminado: 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

Respuesta:

{
    "images": [
        {
            "shape": [1080, 1920],
            "results": [
                {
                    "class": 0,
                    "name": "person",
                    "confidence": 0.92,
                    "box": { "x1": 100, "y1": 50, "x2": 300, "y2": 400 }
                }
            ]
        }
    ],
    "metadata": {
        "imageCount": 1
    }
}

Obtener token de predicción

POST /api/models/{modelId}/predict/token
Solo sesión en el navegador

Esta ruta la utiliza la pestaña de predicción dentro de la aplicación para emitir tokens de inferencia de corta duración para llamadas directas del navegador al servicio de predicción (menor latencia, sin proxy API). Requiere una sesión activa en el navegador de la plataforma y no está disponible mediante clave API. Para una inferencia programática, llama a POST /api/models/{modelId}/predict con tu clave API.

Calentar modelo

POST /api/models/{modelId}/predict/warmup
Solo sesión en el navegador

La ruta de calentamiento la utiliza la pestaña de predicción para precargar los pesos de un modelo en el servicio de predicción antes de la primera inferencia del usuario. Requiere una sesión activa en el navegador de la plataforma y no está disponible mediante clave API.


API de entrenamiento

Inicia el entrenamiento de YOLO en GPUs en la nube (24 tipos de GPU desde RTX 2000 Ada hasta B300) y supervisa el progreso en tiempo real. Consulta la documentación de Entrenamiento en la Nube.

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 entrenamiento

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

Los tipos de GPU disponibles incluyen rtx-4090, a100-80gb-pcie, a100-80gb-sxm, h100-sxm, rtx-pro-6000, b300 y otros. Consulta Entrenamiento en la Nube para ver la lista completa con precios.

Obtener estado del entrenamiento

GET /api/models/{modelId}/training

Devuelve el estado, las métricas y el progreso actuales del trabajo de entrenamiento de un modelo. Los proyectos públicos son accesibles de forma anónima; los proyectos privados requieren una sesión activa en el navegador de la plataforma (esta ruta no acepta autenticación mediante clave API).

Cancelar entrenamiento

DELETE /api/models/{modelId}/training

Finaliza la instancia de computación en ejecución y marca el trabajo como cancelado. Requiere una sesión activa en el navegador de la plataforma; no está disponible mediante clave API.


API de despliegues

Despliega modelos en endpoints de inferencia dedicados con comprobaciones de estado y supervisión. Los nuevos despliegues utilizan escala a cero por defecto, y la API acepta un objeto resources opcional. Consulta la documentación de Endpoints.

Soporte de clave API por ruta

Solo GET /api/deployments, POST /api/deployments, GET /api/deployments/{deploymentId} y DELETE /api/deployments/{deploymentId} admiten autenticación mediante clave API. Las subrutas predict, health, logs, metrics, start y stop requieren una sesión activa en el navegador de la plataforma; son proxies de conveniencia para la interfaz dentro de la aplicación. Para una inferencia programática, llama directamente a la URL del endpoint del despliegue (por ejemplo, https://predict-abc123.run.app/predict) con tu clave API. Los endpoints dedicados no están limitados por tasa.

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 despliegues

GET /api/deployments

Parámetros de consulta:

ParámetroTipoDescripción
modelIdcadenaFiltrar por modelo
statuscadenaFiltrar por estado
limitintResultados máximos (predeterminado: 20, máximo: 100)
ownercadenaNombre de usuario del propietario del área de trabajo

Crear despliegue

POST /api/deployments

Cuerpo:

{
    "modelId": "model_abc123",
    "name": "my-deployment",
    "region": "us-central1",
    "resources": {
        "cpu": 1,
        "memoryGi": 2,
        "minInstances": 0,
        "maxInstances": 1
    }
}
CampoTipoRequeridoDescripción
modelIdcadenaID del modelo a desplegar
namecadenaNombre del despliegue
regioncadenaRegión de despliegue
resourcesobjetoNoConfiguración de recursos (cpu, memoryGi, minInstances, maxInstances)

Crea un endpoint de inferencia dedicado en la región especificada. El endpoint es accesible globalmente a través de una URL única.

Recursos predeterminados

El diálogo de despliegue envía actualmente valores predeterminados fijos de cpu=1, memoryGi=2, minInstances=0 y maxInstances=1. La ruta de la API acepta un objeto resources, pero los límites del plan establecen minInstances en 0 y maxInstances en 1.

Selección de región

Elige una región cercana a tus usuarios para obtener la latencia más baja. La interfaz de la plataforma muestra estimaciones de latencia para las 43 regiones disponibles.

Obtener despliegue

GET /api/deployments/{deploymentId}

Eliminar despliegue

DELETE /api/deployments/{deploymentId}

Iniciar despliegue

POST /api/deployments/{deploymentId}/start

Reanuda un despliegue detenido.

Detener despliegue

POST /api/deployments/{deploymentId}/stop

Pausa un despliegue en ejecución (detiene la facturación).

Comprobación de estado

GET /api/deployments/{deploymentId}/health

Devuelve el estado de salud del endpoint de despliegue.

Ejecutar inferencia en despliegue

POST /api/deployments/{deploymentId}/predict

Envía una imagen directamente a un endpoint de despliegue para la inferencia. Funcionalmente equivalente a la predicción de modelo, pero enrutado a través del endpoint dedicado para una menor latencia.

Formulario multiparte:

CampoTipoDescripción
filearchivoArchivo de imagen (JPEG, PNG, WebP)
conffloatUmbral de confianza (predeterminado: 0.25)
ioufloatUmbral de IoU (predeterminado: 0.7)
imgszintTamaño de imagen en píxeles (predeterminado: 640)

Obtener métricas

GET /api/deployments/{deploymentId}/metrics

Devuelve métricas de recuento de solicitudes, latencia y tasa de error con datos de minigráficos.

Parámetros de consulta:

ParámetroTipoDescripción
rangecadenaRango de tiempo: 1h, 6h, 24h (predeterminado), 7d, 30d
sparklinecadenaEstablece en true para datos optimizados de minigráficos para la vista del panel de control

Obtener registros

GET /api/deployments/{deploymentId}/logs

Parámetros de consulta:

ParámetroTipoDescripción
severitycadenaFiltro separado por comas: DEBUG, INFO, WARNING, ERROR, CRITICAL
limitintNúmero de entradas (predeterminado: 50, máximo: 200)
pageTokencadenaToken de paginación de la respuesta anterior

API de monitorización

Solo sesión en el navegador

GET /api/monitoring es una ruta exclusiva de la interfaz de usuario y requiere una sesión de navegador activa en la plataforma. No acepta autenticación mediante clave API. Consulta las métricas de despliegue individuales a través de las rutas por despliegue (que también requieren sesión de navegador) o utiliza las exportaciones de Cloud Monitoring en el servicio Cloud Run desplegado para el acceso mediante programación.

Métricas agregadas

GET /api/monitoring

Devuelve métricas agregadas de todos los despliegues del usuario: total de solicitudes, despliegues activos, tasa de errores y latencia media.


API de exportación

Convierte modelos a formatos optimizados como ONNX, TensorRT, CoreML y TFLite para el despliegue en el borde (edge). Consulta la documentación de despliegue.

Listar exportaciones

GET /api/exports

Parámetros de consulta:

ParámetroTipoDescripción
modelIdcadenaID del modelo (obligatorio)
statuscadenaFiltrar por estado
limitintResultados máximos (predeterminado: 20, máximo: 100)

Crear exportación

POST /api/exports

Cuerpo:

CampoTipoRequeridoDescripción
modelIdcadenaID del modelo de origen
formatcadenaFormato de exportación (ver tabla más abajo)
gpuTypecadenaCondicionalObligatorio cuando el format es engine (TensorRT)
argsobjetoNoArgumentos de exportación (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 admitidos:

FormatoValorCaso de uso
ONNXonnxInferencia multiplataforma
TorchScripttorchscriptDespliegue de PyTorch
OpenVINOopenvinoHardware de Intel
TensorRTengineOptimización para NVIDIA GPU
CoreMLcoremlDispositivos Apple
TFLitetfliteDispositivos móviles y embebidos
TF SavedModelsaved_modelTensorFlow Serving
TF GraphDefpbGrafo congelado de TensorFlow
PaddlePaddlepaddleBaidu PaddlePaddle
NCNNncnnRed neuronal móvil
Edge TPUedgetpuDispositivos Google Coral
TF.jstfjsInferencia en navegador
MNNmnnInferencia móvil de Alibaba
RKNNrknnNPU Rockchip
IMXimxSensor Sony IMX500
AxeleraaxeleraAceleradores Axelera AI
ExecuTorchexecutorchEntorno de ejecución Meta ExecuTorch

Obtener estado de exportación

GET /api/exports/{exportId}

Cancelar exportación

DELETE /api/exports/{exportId}

Seguimiento de descarga de exportación

POST /api/exports/{exportId}/track-download

API de actividad

Consulta un feed de acciones recientes en tu cuenta: ejecuciones de entrenamiento, subidas y más. Consulta la documentación de actividad.

Solo para sesión de navegador

Las rutas de actividad funcionan mediante solicitudes autenticadas por el navegador desde la interfaz de usuario de la plataforma. No están expuestas como una API pública, no aceptan autenticación mediante clave API y las estructuras de ruta a continuación se documentan solo como referencia. Utiliza el feed de actividad en la interfaz de la plataforma para ver, marcar o archivar eventos.

Listar actividad

GET /api/activity

Parámetros de consulta:

ParámetroTipoDescripción
limitintTamaño de página (predeterminado: 20, máximo: 100)
pageintNúmero de página (predeterminado: 1)
archivedbooleanotrue para la pestaña Archivado, false para la Bandeja de entrada
searchcadenaBúsqueda que no distingue entre mayúsculas y minúsculas en campos de eventos

Marcar eventos como vistos

POST /api/activity/mark-seen

Cuerpo:

{
    "all": true
}

O pasa IDs específicos:

{
    "eventIds": ["EVENT_ID_1", "EVENT_ID_2"]
}

Archivar eventos

POST /api/activity/archive

Cuerpo:

{
    "all": true,
    "archive": true
}

O pasa IDs específicos:

{
    "eventIds": ["EVENT_ID_1", "EVENT_ID_2"],
    "archive": false
}

API de papelera

Ver y restaurar elementos eliminados. Los elementos se eliminan permanentemente después de 30 días. Consulta la documentación de la papelera.

Listar papelera

GET /api/trash

Parámetros de consulta:

ParámetroTipoDescripción
typecadenaFiltro: all, project, dataset, model
pageintNúmero de página (predeterminado: 1)
limitintElementos por página (predeterminado: 50, máximo: 200)
ownercadenaNombre de usuario del propietario del área de trabajo

Restaurar elemento

POST /api/trash

Cuerpo:

{
    "id": "item_abc123",
    "type": "dataset"
}

Eliminar elemento permanentemente

DELETE /api/trash

Cuerpo:

{
    "id": "item_abc123",
    "type": "dataset"
}
Irreversible

La eliminación permanente no se puede deshacer. El recurso y todos los datos asociados se eliminarán.

Vaciar papelera

DELETE /api/trash/empty

Elimina permanentemente todos los elementos de la papelera.

Autenticación

DELETE /api/trash/empty requiere una sesión de navegador autenticada y no está disponible mediante clave API. Utiliza el botón Vaciar papelera en la interfaz de usuario.


API de facturación

Consulta tu saldo de créditos, compra créditos, ve el historial de transacciones y configura la recarga automática. Consulta la documentación de facturación.

Unidades de moneda

Billing amounts use cents (creditsCents) where 100 = $1.00.

Obtener saldo

GET /api/billing/balance

Parámetros de consulta:

ParámetroTipoDescripción
ownercadenaNombre de usuario del propietario del área de trabajo

Respuesta:

{
    "creditsCents": 2500,
    "plan": "free",
    "cashBalance": 25,
    "creditBalance": 0,
    "reservedAmount": 0,
    "totalBalance": 25
}

Obtener resumen de uso

GET /api/billing/usage-summary

Devuelve detalles del plan, límites y métricas de uso.

Obtener transacciones

GET /api/billing/transactions

Devuelve el historial de transacciones (las más recientes primero).

Parámetros de consulta:

ParámetroTipoDescripción
ownercadenaNombre de usuario del propietario del área de trabajo

Crear sesión de pago

POST /api/billing/checkout-session

Cuerpo:

{
    "amount": 25,
    "owner": "team-username"
}
CampoTipoRequeridoDescripción
amountnúmeroImporte en dólares (5 $-1000 $)
ownercadenaNoNombre de usuario del equipo para recargas de espacio de trabajo (requiere rol de administrador)

Crea una sesión de pago para la compra de créditos.

Crear pago de suscripción

POST /api/billing/subscription-checkout

Crea una sesión de pago para la actualización a la suscripción Pro.

Cuerpo:

{
    "planId": "pro",
    "billingCycle": "monthly",
    "owner": "team-username"
}
CampoTipoRequeridoDescripción
planIdcadenaPlan al que suscribirse (pro)
billingCyclecadenaNoCiclo de facturación: monthly (predeterminado) o yearly
ownercadenaNoNombre de usuario del equipo para actualizaciones de espacio de trabajo (requiere rol de administrador)

Cancela o reanuda la suscripción

DELETE /api/billing/subscription-checkout

Cancela una suscripción Pro al final del periodo por defecto. Envía {"resume": true} para reanudar una cancelación ya programada antes de que finalice el periodo de facturación.

Cuerpo:

{
    "resume": true
}

Recarga automática

Añade créditos automáticamente cuando el saldo cae por debajo de un umbral.

Obtener configuración de recarga automática

GET /api/billing/auto-topup

Parámetros de consulta:

ParámetroTipoDescripción
ownercadenaNombre de usuario del propietario del área de trabajo

Actualizar configuración de recarga automática

PATCH /api/billing/auto-topup

Cuerpo:

{
    "enabled": true,
    "thresholdCents": 500,
    "amountCents": 2500
}

Métodos de pago

Listar métodos de pago

GET /api/billing/payment-methods

Crear intento de configuración

POST /api/billing/payment-methods/setup

Devuelve un secreto de cliente para añadir un nuevo método de pago.

Establecer método de pago predeterminado

POST /api/billing/payment-methods/default

Cuerpo:

{
    "paymentMethodId": "pm_123"
}

Actualizar información de facturación

PATCH /api/billing/payment-methods

Cuerpo:

{
    "name": "Jane Doe",
    "address": {
        "line1": "123 Main St",
        "city": "San Francisco",
        "state": "CA",
        "postal_code": "94105",
        "country": "US"
    }
}

Eliminar método de pago

DELETE /api/billing/payment-methods/{id}

API de almacenamiento

Consulta el desglose del uso de tu almacenamiento por categoría (datasets, modelos, exportaciones) y observa tus elementos de mayor tamaño.

Solo sesión en el navegador

Las rutas de almacenamiento requieren una sesión activa del navegador en la plataforma y no son accesibles mediante una clave de API. Utiliza la página Settings > Profile en la interfaz de usuario para obtener desgloses interactivos.

Obtener información de almacenamiento

GET /api/storage

Respuesta:

{
    "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 subida

Sube archivos directamente al almacenamiento en la nube mediante URLs firmadas para transferencias rápidas y fiables. Utiliza un flujo de dos pasos: obtén una URL firmada y luego sube el archivo. Consulta la Data documentation.

Obtener URL de subida firmada

POST /api/upload/signed-url

Solicita una URL firmada para subir un archivo directamente al almacenamiento en la nube. La URL firmada evita el servidor API para transferencias de archivos grandes.

Cuerpo:

{
    "assetType": "images",
    "assetId": "abc123",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "totalBytes": 5242880
}
CampoTipoDescripción
assetTypecadenaTipo de activo: models, datasets, images, videos
assetIdcadenaID del activo de destino
filenamecadenaNombre de archivo original
contentTypecadenaTipo MIME
totalBytesintTamaño del archivo en bytes

Respuesta:

{
    "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"
}

Completar subida

POST /api/upload/complete

Notifica a la plataforma que la subida de un archivo se ha completado para que pueda comenzar a procesarlo.

Cuerpo:

{
    "datasetId": "abc123",
    "objectPath": "datasets/abc123/images/my-image.jpg",
    "filename": "my-image.jpg",
    "contentType": "image/jpeg",
    "size": 5242880
}

API de claves API

Gestiona tus claves API para acceso programático. Consulta la API Keys documentation.

Listar claves API

GET /api/api-keys

Crear clave API

POST /api/api-keys

Cuerpo:

{
    "name": "training-server"
}

Eliminar clave API

DELETE /api/api-keys

Parámetros de consulta:

ParámetroTipoDescripción
keyIdcadenaID de la clave API a revocar

Ejemplo:

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/api-keys?keyId=KEY_ID"

API de equipos y miembros

Crea espacios de trabajo de equipo, invita a miembros y gestiona roles para colaborar. Consulta la Teams documentation.

Listar equipos

GET /api/teams

Crear equipo

POST /api/teams/create

Cuerpo:

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

Listar miembros

GET /api/members

Devuelve los miembros del espacio de trabajo actual.

Invitar miembro

POST /api/members

Cuerpo:

{
    "email": "user@example.com",
    "role": "editor"
}
Roles de miembros
RolPermisos
viewerAcceso de solo lectura a los recursos del espacio de trabajo
editorCrear, editar y eliminar recursos
adminGestionar miembros, facturación y todos los recursos (solo asignable por el propietario del equipo)

El owner del equipo es el creador y no puede ser invitado. La propiedad se transfiere por separado mediante POST /api/members/transfer-ownership. Consulta Teams para obtener detalles completos sobre los roles.

Actualizar rol de miembro

PATCH /api/members/{userId}

Eliminar miembro

DELETE /api/members/{userId}

Transferir propiedad

POST /api/members/transfer-ownership

Invitaciones

Aceptar invitación

POST /api/invites/accept

Obtener información de invitación

GET /api/invites/info

Parámetros de consulta:

ParámetroTipoDescripción
tokencadenaToken de invitación

Revocar invitación

DELETE /api/invites/{inviteId}

Reenviar invitación

POST /api/invites/{inviteId}/resend

API de Explore

Busca y explora datasets públicos y proyectos compartidos por la comunidad. Consulta la Explore documentation.

Buscar contenido público

GET /api/explore/search

Parámetros de consulta:

ParámetroTipoDescripción
qcadenaConsulta de búsqueda
typecadenaTipo de recurso: all (por defecto), projects, datasets
sortcadenaOrden de clasificación: stars (por defecto), newest, oldest, name-asc, name-desc, count-desc, count-asc
offsetintDesplazamiento de paginación (por defecto: 0). Los resultados devuelven 20 elementos por página.

Datos de la barra lateral

GET /api/explore/sidebar

Devuelve contenido curado para la barra lateral de Explore.


APIs de usuario y ajustes

Gestiona tu perfil, claves API, uso de almacenamiento y ajustes de privacidad de datos. Consulta la Settings documentation.

Obtener usuario por nombre de usuario

GET /api/users

Parámetros de consulta:

ParámetroTipoDescripción
usernamecadenaNombre de usuario a buscar

Seguir o dejar de seguir a un usuario

PATCH /api/users

Cuerpo:

{
    "username": "target-user",
    "followed": true
}

Comprobar disponibilidad de nombre de usuario

GET /api/username/check

Parámetros de consulta:

ParámetroTipoDescripción
usernamecadenaNombre de usuario a comprobar
suggestboolOpcional: true para incluir una sugerencia si ya está ocupado

Ajustes

GET /api/settings
POST /api/settings

Obtener o actualizar los ajustes del perfil de usuario (nombre visible, biografía, enlaces sociales, etc.).

Icono de perfil

POST /api/settings/icon
DELETE /api/settings/icon

Sube o elimina el avatar del perfil.

Onboarding

POST /api/onboarding

Completa el flujo de onboarding (configurar región de datos, nombre de usuario).


API de GDPR

Solicita una exportación de todos tus datos o elimina permanentemente tu cuenta. Consulta la Settings documentation.

Obtener estado del trabajo de GDPR

GET /api/gdpr

Parámetros de consulta:

ParámetroTipoDescripción
jobIdcadenaID del trabajo de GDPR a comprobar

Devuelve el estado del trabajo. Para trabajos de exportación completados, la respuesta incluye una downloadUrl.

Iniciar flujo de exportación o eliminación

POST /api/gdpr

Cuerpo:

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

Opcional para espacios de trabajo de equipo:

{
    "action": "delete",
    "confirmationWord": "DELETE",
    "teamUsername": "my-team"
}
Acción irreversible

La eliminación de la cuenta es permanente y no se puede deshacer. Se borrarán todos los datos, modelos y despliegues.


Códigos de error

CódigoEstado HTTPDescripción
UNAUTHORIZED401Clave API no válida o ausente
FORBIDDEN403Permisos insuficientes
NOT_FOUND404Recurso no encontrado
VALIDATION_ERROR400Datos de solicitud no válidos
RATE_LIMITED429Demasiadas solicitudes
INTERNAL_ERROR500Error del servidor

Integración con Python

Para una integración más sencilla, utiliza el paquete Python de Ultralytics, que gestiona automáticamente la autenticación, las subidas y el streaming de métricas en tiempo real.

Instalación y configuración

pip install ultralytics

Verifica la instalación:

yolo check
Requisito de versión del paquete

La integración de la plataforma requiere ultralytics>=8.4.35. Las versiones inferiores NO funcionarán con la plataforma.

Autenticación

yolo settings api_key=YOUR_API_KEY

Uso de Datasets de la plataforma

Referencia conjuntos de datos con 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:

PatrónDescripción
ul://username/datasets/slugDataset
ul://username/project-nameProyecto
ul://username/project/model-nameModelo específico
ul://ultralytics/yolo26/yolo26nModelo oficial

Envío a la plataforma

Envía resultados a un proyecto de la 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",
)

Qué se sincroniza:

  • Métricas de entrenamiento (tiempo real)
  • Pesos finales del modelo
  • Gráficos de validación
  • Salida de la consola
  • Métricas del sistema

Ejemplos de API

Carga un modelo desde la plataforma:

# Your own model
model = YOLO("ul://username/project/model-name")

# Official model
model = YOLO("ul://ultralytics/yolo26/yolo26n")

Ejecuta inferencia:

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)

Validación:

metrics = model.val(data="ul://username/datasets/my-dataset")

print(f"mAP50: {metrics.box.map50}")
print(f"mAP50-95: {metrics.box.map}")

Webhooks

La plataforma utiliza webhooks internos para transmitir métricas de entrenamiento en tiempo real desde el SDK de Python de ultralytics (ejecutándose en GPUs en la nube o en máquinas remotas/locales) de vuelta a la plataforma: pérdida por época, mAP, estadísticas del sistema y estado de finalización. Estos webhooks están autenticados mediante el webhookSecret HMAC proporcionado por trabajo de entrenamiento y no están destinados a ser consumidos por aplicaciones de usuario.

Cómo funciona por tu parte

Todos los planes: El progreso del entrenamiento a través del SDK de ultralytics (métricas en tiempo real, notificaciones de finalización) funciona automáticamente en todos los planes; simplemente establece project=username/my-project name=my-run al entrenar y el SDK transmitirá los eventos de vuelta a la plataforma. No se requiere registro de webhooks por parte del usuario.

Las suscripciones a webhooks orientadas al usuario (devoluciones de llamada POST a una URL que tú controles) están en la hoja de ruta de Enterprise y no están disponibles actualmente. Mientras tanto, consulta GET /api/models/{modelId}/training para conocer el estado o usa el feed de actividad en la interfaz de usuario.


Preguntas frecuentes

¿Cómo pagino grandes resultados?

La mayoría de los puntos finales utilizan un parámetro limit para controlar cuántos resultados se devuelven por solicitud:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/datasets?limit=50"

Los puntos finales de Actividad y Papelera también admiten un parámetro page para la paginación basada en páginas:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://platform.ultralytics.com/api/activity?page=2&limit=20"

El punto final de búsqueda Explore utiliza offset en lugar de page, con un tamaño de página fijo de 20:

curl "https://platform.ultralytics.com/api/explore/search?type=datasets&offset=20&sort=stars"

¿Puedo utilizar la API sin un SDK?

Sí, toda la funcionalidad está disponible a través de REST. El SDK de Python es una envoltura de conveniencia que añade características como el streaming de métricas en tiempo real y las subidas automáticas de modelos. También puedes explorar todos los puntos finales de forma interactiva en platform.ultralytics.com/api/docs.

¿Existen bibliotecas de cliente para la API?

Actualmente, utiliza el paquete Python de Ultralytics o realiza solicitudes HTTP directas. Se planean bibliotecas de cliente oficiales para otros lenguajes.

¿Cómo gestiono los límites de tasa?

Utiliza la cabecera Retry-After de la respuesta 429 para esperar la cantidad de tiempo adecuada:

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")

¿Cómo encuentro mi ID de modelo o conjunto de datos?

Los IDs de recursos se devuelven cuando creas recursos a través de la API. También puedes encontrarlos en la URL de la plataforma:

https://platform.ultralytics.com/username/project/model-name
                                  ^^^^^^^^ ^^^^^^^ ^^^^^^^^^^
                                  username project   model

Utiliza los puntos finales de lista para buscar por nombre o filtrar por proyecto.

Comentarios