API de descripción de video Documentación
Genere títulos, descripciones y etiquetas impulsados por IA para cualquier video. Procesamiento asíncrono con entrega webhook, sandbox gratuito para pruebas. ¿Prefiere una interfaz? Use el portal web Descrideo para subir videos y gestionar tareas.
¿Prefiere una interfaz? Use nuestro Generador de video para subir videos y obtener resultados sin escribir código.
Inicio rápido
Comience con la API Descrideo en 3 simples pasos. Genere su primera descripción de video en menos de 5 minutos.
Obtenga su clave API
Cree una cuenta y obtenga su clave API desde el panel. Cada clave tiene el prefijo nxt_.
Cree una tarea de descripción
Envíe una URL de video y especifique su endpoint webhook para recibir resultados.
curl -X POST https://api.descrideo.com/v1/video-descriptions \
-H "X-API-Key: nxt_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"source": {
"type": "direct_url",
"url": "https://example.com/video.mp4"
},
"frames": 20,
"generation_mode": "vision",
"webhook": {
"url": "https://your-app.com/webhooks/video"
},
"client_context": {
"lang": "en",
"output_fields": ["title", "description", "tags"]
}
}'
Reciba el webhook con resultados
Una vez completado el procesamiento, enviaremos los resultados a su URL webhook con firma HMAC.
{
"job_id": "01HXYZ123ABC",
"status": "succeeded",
"result": {
"title": "Mountain Hiking Adventure in Swiss Alps",
"description": "A breathtaking journey through...",
"tags": ["hiking", "mountains", "switzerland", "nature"]
},
"billing": {
"token_cost": 1.23,
"base_cost": 1.0,
"transcription_cost": 0.23,
"franchise_cost": 0.0
},
"meta": {
"generation_mode": "vision_audio",
"transcription": {
"enabled": true,
"status": "completed",
"seconds": 45.5
}
},
"timing_ms": {
"probe": 500,
"audio": 3200,
"frames": 2100,
"ai": 8100,
"webhook": 120
}
}
Autenticación
Todas las solicitudes API requieren autenticación mediante token Bearer en el encabezado Authorization.
Authorization: Bearer nxt_your_api_key_here
Seguridad: Nunca exponga su clave API en código del lado cliente. Realice siempre las llamadas API desde su servidor backend.
Pruebas Sandbox
Pruebe su integración webhook gratis usando nuestro entorno sandbox. Las tareas sandbox simulan el flujo de trabajo completo sin procesamiento de video real.
Beneficios del Sandbox
- Cuota diaria gratuita - no se requieren tokens
- Entregas webhook reales con firmas HMAC
- No se requiere URL de video
- Reproducción webhook para depuración
POST /v1/sandbox/video-descriptions
{
"frames": 10,
"webhook": {
"url": "https://your-app.com/webhooks/video"
},
"client_context": {
"lang": "en",
"output_fields": ["title", "description", "tags"],
"custom_instructions": "Focus on technical details"
}
}
API demo (puerta de enlace)
La API demo le permite integrar con un flujo de trabajo asíncrono real con entrega webhook antes de la producción. Úsela para validar el acceso directo a URL de video y el receptor webhook.
Límites: 1 tarea/día por clave API demo, solo frames=10, solo lang=en (otros idiomas devuelven 422). Se permiten instrucciones personalizadas.
Endpoints
POST /api/demo/v1/video-descriptions— crear tarea demo (solo URL directa)GET /api/demo/v1/video-descriptions/{job_id}— obtener estado/resultadoPOST /api/demo/v1/video-descriptions/{job_id}/replay-webhook— reproducir webhook reenviado a su receptorGET /api/demo/v1/webhook-secret— obtener secreto webhook para verificación de firma
Crear tarea demo (ejemplo)
curl -X POST https://your-portal.com/api/demo/v1/video-descriptions \
-H "X-API-Key: demo_your_demo_api_key" \
-H "Content-Type: application/json" \
-d '{
"source": {
"type": "direct_url",
"url": "https://example.com/video.mp4"
},
"frames": 10,
"webhook": {
"url": "https://your-app.com/webhooks/demo"
},
"client_context": {
"lang": "en",
"output_fields": ["title", "description", "tags"],
"custom_instructions": "Make the description more detailed"
}
}'
Firmas webhook
La API demo reenvía webhooks a su URL usando los mismos encabezados de firma que la API principal: X-Nxt-Timestamp y X-Nxt-Signature. Use GET /api/demo/v1/webhook-secret para recuperar el secreto usado para verificación.
Crear tarea de descripción
/v1/video-descriptions
Cuerpo de solicitud
| Parameter | Type | Required | Description |
|---|---|---|---|
source |
object | Yes | Configuración de fuente de video |
type |
string | * | direct_url o source_provider |
url |
string | * | URL directa al archivo de video (cuando type=direct_url) |
provider |
object | * | Configuración endpoint Source Provider (cuando type=source_provider) |
webhook.url |
string | Yes | URL para recibir resultados |
client_context.output_fields |
array | No | Campos a generar: título, descripción, etiquetas |
client_context.lang |
string | No | Idioma de salida (ISO 639-1), predeterminado: en |
frames |
integer | Yes | Número de fotogramas a extraer: 10, 20 o 30. Requerido para modos vision y vision_audio. No usado en modo audio. |
generation_mode |
string | No | vision (predeterminado), vision_audio o audio. Determina el modo de análisis. |
transcription |
object | No | Configuración de transcripción de audio. Los campos requeridos dependen de generation_mode. |
enabled |
boolean | * | Habilitar transcripción de audio. Auto-habilitado para modos vision_audio/audio. |
segments |
integer | * | Número de segmentos de audio a muestrear: 10, 20 o 30 |
segment_sec |
number | * | Duración de cada segmento en segundos (5–60) |
client_context.custom_instructions |
string | No | Instrucciones IA personalizadas para estilo de salida |
Respuesta
Devuelve 202 Accepted con ID de tarea.
{
"job_id": "01HXYZ123ABC",
"status": "queued"
}
Obtener estado de tarea
/v1/video-descriptions/{job_id}
Consulte el estado de la tarea. Útil para monitorear el progreso si los webhooks no son adecuados.
Estados de tarea
queued
Tarea esperando procesamiento
resolving_source
Resolviendo acceso a video
probing
Analizando metadatos de video
extracting_audio
Extrayendo segmentos de audio
transcribing_audio
Transcribiendo audio a texto
extracting_frames
Extrayendo fotogramas de video
ai_request
IA generando descripciones
succeeded
Procesamiento completado
failed
Procesamiento fallido
Seguridad de webhooks
Todos los webhooks están firmados usando HMAC-SHA256. Verifique las firmas para garantizar autenticidad.
Encabezados de firma
X-Nxt-Timestamp: 1707400000
X-Nxt-Signature: sha256=abc123def456...
Ejemplo de verificación (Python)
import hmac
import hashlib
def verify_webhook(raw_body: bytes, timestamp: str, signature_header: str, secret: str) -> bool:
# Signature header format: "sha256="
expected_sig = signature_header.removeprefix("sha256=")
message = raw_body + timestamp.encode()
computed = hmac.new(secret.encode(), message, hashlib.sha256).hexdigest()
return hmac.compare_digest(computed, expected_sig)
Consejo: Obtenga su secreto webhook desde GET /v1/webhook-secret
Patrón Source Provider
Para videos privados, use el patrón Source Provider. Su endpoint actúa como intermediario de acceso, devolviendo URL pre-firmadas cuando nuestra API necesita recuperar el video.
Flujo
-
1
Envíe una tarea con configuración
source.provider - 2 Nuestra API llama a su endpoint con solicitud firmada
- 3 Verifique la firma y devuelva la URL pre-firmada
- 4 Nuestra API obtiene el video desde la URL pre-firmada
Seguridad: Sus videos permanecen privados. Solo accedemos a ellos mediante URL pre-firmadas temporales que usted controla.
Manejo de errores
La API devuelve códigos de estado HTTP estándar con mensajes de error detallados.
| Status | Meaning |
|---|---|
400 |
Solicitud incorrecta - Parámetros inválidos |
401 |
No autorizado - Clave API inválida |
402 |
Pago requerido - Tokens insuficientes |
404 |
No encontrado - El recurso no existe |
429 |
Límite de tasa - Demasiadas solicitudes |
500 |
Error interno - Problema del servidor |
Facturación y tokens
El costo base por tarea exitosa es 1 token. La transcripción de audio es un complemento facturado por cada 10 segundos de audio muestreado. El costo final se informa en el campo webhook billing.token_cost.
Modo prepago
Compre paquetes de tokens por adelantado. Los tokens se reservan al crear la tarea y se capturan en caso de éxito.
Modo pospago
Pague al final del ciclo de facturación. Establezca límites mensuales opcionales para controlar el gasto.