curl -sX POST $BASE/v1/sessions \
-H "authorization: Bearer $KEY" -H "content-type: application/json" \
-H "idempotency-key: drpost-sess-42" \
-d '{"pipeline":"animated-explainer","budget_credits":500,"format":"9:16",
"brief":"Explain how our invoicing API works, 60s, friendly"}' REST + MCP · MEDIDO EN CRÉDITOS
La API de creación de video para agentes de IA.
Abre una sesión, conversa, aprueba el guion en el gate, recibe un enlace MP4 alojado. REST y MCP, 1:1. Medido en créditos — las fallas del sistema se reembolsan automáticamente.
Enlace entregado, o reembolso automático — solo fallas del sistema.
animated-explainer · certificado · 16:9 — un render entregado real. hold 500 → capture 308 → release 192.
ABRIR → CONVERSAR → GATE → ENTREGAR
Tu agente ejecuta la sesión. Cada estado tiene nombre.
-
01 Abrir
POST /v1/sessions(open_sessionvía MCP) con un pipeline, un brief ybudget_credits. El presupuesto queda retenido, no gastado —credits: {budget, held, spent}en cada consulta desde ese momento. -
02 Conversar
POST …/messagesdevuelve202 {turn_id}; el motor investiga, escribe el guion y prepara los assets mientras tu agente consultaget_sessiono recibe eventos por streaming. Todo es asíncrono — no existe una llamada síncrona de "dame un video". -
03 Gate
En
status: awaiting_gate, tu agente lee elartifact_excerpt(o el artefacto completo enGET …/artifacts/:name) y luegoPOST …/gates/:gateId—approve, orevisecon feedback. Nada se renderiza hasta que el gate se resuelve. -
04 Entregar
video_urlaparece en el momento en que un render alojado realmente existe — el punto se llena.POST …/closelibera la retención no gastada.
Si el sistema no puede entregar, el turno se reembolsa automáticamente. No pagas por un render que falla de nuestro lado.
QUICKSTART
Conectarse es una línea. El primer render son 10–30 minutos de trabajo asíncrono. Ambas cosas son ciertas.
REST
curl -sX POST $BASE/v1/sessions/$SID/messages \
-H "authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"message":"Explain how our invoicing API works, 60s, friendly tone"}' MCP
claude mcp add --transport http macaroni \
https://api.macaroni.video/mcp \
--header "Authorization: Bearer $MAC_KEY" {
"mcpServers": {
"macaroni": {
"type": "http",
"url": "https://api.macaroni.video/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
} EL CONTRATO, PUNTO POR PUNTO
Con qué puede contar tu agente.
- Honestidad en la entrega
video_url— no nulo si y solo si existe un video reproduciblevideo_urlse asigna si y solo si existe un MP4 alojado resoluble por el gateway — nunca un placeholder, nunca obsoleto.video.readyse emite solo entonces; de lo contrario el turno se liquida comono_deliverabley se reembolsa automáticamente. Tu agente nunca tiene que detectar un enlace muerto, porque un enlace muerto nunca recibe URL. - Sesiones y gates
Una conversación con un punto de control
abrir → conversar → gate → enlace entregado. En
awaiting_gate, tu agente lee elartifact_excerpt— guion y escenas — y resuelve el gate:approve, orevisecon feedback, antes de que un crédito se renderice. Las aprobaciones son manuales por diseño; tu agente las resuelve de forma programática — el punto de decisión es la funcionalidad. - Economía de créditos
hold → capture → release → auto-refund
Abrir una sesión retiene tu presupuesto; cada turno captura solo el gasto real;
closelibera el resto — visible comocredits: {budget, held, spent}en cada consulta. Una falla del sistema reembolsa el turno automáticamente: una entradarefundenGET /v1/credits. Tus acciones —user_interrupted,budget_exceeded— facturan el gasto real y no se reembolsan. Cada falla lleva unfailure_class;engine_errorse reembolsa automáticamente junto conno_deliverable. - Desatendido por diseño
Fail-closed, en sandbox, seguro ante reintentos
Los topes de gasto de modelo por sesión fallan cerrados: si el proxy que aplica el tope no está disponible, los turnos se niegan a iniciar en lugar de correr sin límite. El motor de cada sesión corre en su propio sandbox aislado y efímero — terminado con
POST …/interrupt, nunca compartido entre cuentas.Idempotency-Keyhace que cada reintento sea seguro de repetir. El default seguro es "no hacer nada", nunca "gastar libremente". - Un catálogo honesto
Un pipeline certificado. Doce etiquetados experimental.
animated-explainerestá certificado para entrega alojada. Los otros 12 pipelines son experimentales y están marcados como tales en todos los lugares donde aparecen — una ejecución experimental que termina sin video alojado se liquida comono_deliverabley se reembolsa automáticamente.list_pipelineste dice cuál es cuál; este sitio también. - BYOK
Tus claves de proveedor, cifradas, nunca devueltas
POST /v1/providers/keysalmacena tus claves de proveedor — AES-256-GCM en reposo;byok: trueenopen_sessionejecuta el pipeline con ellas. Nunca se devuelven y nunca recurren a las claves de la plataforma — almacena una clave para cada proveedor que el pipeline necesite o la ejecución falla. Una excepción: sin tu propia clave de Anthropic, el modelo de razonamiento corre medido con la nuestra. - Formato autodescriptivo
16:9 y 9:16, certificados — y el archivo mismo lo dice
Horizontal para YouTube, LinkedIn, X y embeds — o vertical para TikTok, Reels y Shorts. Cada video entregado es un MP4 alojado.
get_videodevuelvewidth,heightyaspect_ratio, así que quien llama enruta por plataforma sin sondear el archivo. Los enlaces para compartir se transmiten a través del gateway, con seek vía Range, y están pensados para ser de larga vida (alrededor de un año). Vertical 9:16 víaformatenopen_session— horizontal y vertical desde la misma sesión. - Conéctate en una línea
14 herramientas MCP, 1:1 con REST
claude mcp add --transport http macaroni …y tu agente tiene la superficie completa: 14 herramientas, cada una espejo de un endpoint REST vivo, sobre Streamable HTTP sin estado enPOST /mcp.
GET /v1/credits
El turno que falla de nuestro lado es el turno que no pagas.
Todo se mide en créditos enteros. Abrir una sesión → una retención del presupuesto. Cada turno captura solo su gasto real. Cerrar → la retención no gastada se libera. Una falla causada por el sistema reembolsa automáticamente el turno. Todo es visible: credits: {budget, held, spent} en cada consulta, el libro mayor completo en GET /v1/credits.
| entrada | tipo | créditos |
|---|---|---|
| open_session · budget_credits reservados, no gastados | hold | 500 |
| turno liquidado · solo el gasto real | capture | 308 |
| close · la retención no gastada, devuelta | release | 192 |
solo fallas del sistema — user_interrupted y budget_exceeded facturan el gasto real.
FAQ
FAQ
¿Cuánto cuesta un video?
Créditos, nunca dólares. Una sesión retiene un presupuesto que tú defines — el default es una estimación por pipeline, unos 500 créditos para un explainer. Los turnos capturan el gasto real; la retención no gastada se libera al cerrar. Consulta GET /v1/credits en cualquier momento — cada retención, captura, liberación y reembolso es una entrada del libro mayor. Detalles: /docs/api.
¿Qué pasa cuando algo falla?
Cada falla está tipificada. Las fallas causadas por el sistema (infra_error, engine_error, no_deliverable) no te cuestan nada — nunca se facturan, o se reembolsan automáticamente. Tus acciones (user_interrupted, budget_exceeded) facturan el gasto real y no se reembolsan. La tabla de fallas completa, con recuperación documentada por tipo: /docs/integration.
¿Alguna vez pago por un video que no recibí?
No cuando la falla es nuestra. Un turno que termina sin un enlace alojado y reproducible se liquida como no_deliverable y reembolsa sus créditos automáticamente — la entrada refund aparece en GET /v1/credits. Si interrumpes un turno o excedes tu presupuesto, se factura el gasto real hasta ese punto; esas son decisiones tuyas, no fallas nuestras. /docs/integration.
¿Cómo se conecta mi agente?
MCP sobre Streamable HTTP en POST /mcp: un bloque de configuración o un comando claude mcp add — mira el quickstart arriba. 14 herramientas, cada una espejo de un endpoint REST vivo; REST es 1:1 si prefieres curl. /docs/mcp.
¿Qué pipelines están listos para producción?
animated-explainer está certificado para entrega alojada. Doce más son experimentales y están etiquetados como tales — pueden terminar el trabajo creativo sin producir un video alojado, lo que se liquida como no_deliverable y se reembolsa automáticamente. El catálogo con marcadores de estabilidad: /docs/api.
¿Puedo usar mis propias claves de proveedor (BYOK)?
Sí. POST /v1/providers/keys las almacena — AES-256-GCM en reposo, nunca devueltas, sin fallback a claves de la plataforma, así que almacena una clave para cada proveedor que tu pipeline necesite. Establece byok: true en open_session para ejecutar con ellas. Una excepción: sin tu propia clave de Anthropic, el modelo de razonamiento corre medido con la nuestra. La gestión de claves es solo REST. /docs/api.
¿Qué formatos?
16:9 horizontal o 9:16 vertical — eliges por sesión. Cada video entregado es un MP4 alojado, y get_video devuelve width, height y aspect_ratio para que tu agente enrute por plataforma sin sondear el archivo. /docs/api. Vertical 9:16 disponible vía format en open_session — misma sesión, mismo contrato.
¿Puedo recibir el progreso por streaming desde un navegador?
La autenticación es solo Bearer, sin cookies — un EventSource nativo no puede enviar el encabezado Authorization. Usa fetch con streaming para SSE (GET /v1/sessions/:id/events, reanudable vía Last-Event-ID), o el ciclo de consulta documentado, que es la integración correcta más simple. /docs/integration.
¿Cuánto viven los enlaces para compartir?
Son URLs estables, no adivinables, con noindex, que transmiten el MP4 a través de nuestro gateway — con seek vía Range, sin clave de API para ver. Están pensados para ser de larga vida, del orden de un año. Declaramos la intención en lugar de prometer una garantía que no ofrecemos. /docs/api.
¿Hay una prueba gratuita?
Hoy no. Contáctanos para créditos de evaluación — los créditos se aprovisionan a tu cuenta.
POST /v1/sessions
El próximo video que tu agente publique, lo habrá revisado primero.
Lee la documentación primero — la tabla de fallas y el contrato de video_url son lo que estás evaluando. Cuando un turno entrega, el enlace abre. Cuando el sistema falla, el libro mayor muestra el reembolso. Enviamos tus claves por correo y hacemos el onboarding de cada cuenta directamente.