Overview
La REST API de C21 Live Control expone cada recurso visible en la UI del operador. Úsala para guionizar aprovisionamientos, integrar con sistemas de playout, construir dashboards internos o disparar operaciones desde un scheduler externo. El servidor MCP documentado en MCP server envuelve las mismas operaciones para cualquier agente de IA o automatización compatible con MCP.
Base URL
https://<host>/c21apiv2
<host> es el hostname de tu deploy de C21 Live Control. Cada operación vive bajo /c21apiv2.
Recursos
La API se organiza alrededor de los mismos recursos que aparecen en la UI. Cada recurso expone normalmente dos scopes: un scope operacional (e.g. /livestreams, /livestreams/{id}/start) y un scope CRUD (/crud/livestreams). Consulta el spec OpenAPI para la lista completa de operaciones por recurso.
| Recurso | Ruta operacional | Sección UI |
|---|---|---|
| Channels | /c21apiv2/channels | Sources |
| Encodings | /c21apiv2/encodings | Encodings |
| Encoding groups | /c21apiv2/encodings/groups | Encodings |
| Destinations | /c21apiv2/publishings | Destinations |
| Destination groups | /c21apiv2/publishings/groups | Destinations |
| Live streams | /c21apiv2/livestreams | Live streams |
| Schedules | /c21apiv2/schedules | Scheduler |
| Recordings | /c21apiv2/recordings | Recordings |
| Devices | /c21apiv2/devices | Devices |
| Device groups | /c21apiv2/devices/groups | Devices |
| Assets | /c21apiv2/assets (con ?fileType=logos|files|clips) | Assets |
| Users | /c21apiv2/users | Users |
| User groups | /c21apiv2/usergroups | Users |
| API tokens | /c21apiv2/security/tokens | (solo API — sin UI Interface) |
| DRM providers | /c21apiv2/settings/integrations/drmproviders | Integrations → DRM Providers |
| C21 Live Cloud accounts | /c21apiv2/settings/integrations/c21livecloud | Integrations → C21 Live Cloud |
| MediaCopilot | /c21apiv2/settings/integrations/mediacopilot | Integrations → MediaCopilot |
| System | /c21apiv2/system | (solo API — superficie System Administrator) |
Las rutas de recurso siguen literalmente el spec OpenAPI. Donde una ruta contiene un segmento de plantilla entre llaves ({livestreamId}, etc.), sustituye el valor concreto al llamar.
Content types
| Dirección | Tipo |
|---|---|
| Cuerpo de petición | application/json |
| Cuerpo de respuesta | application/json |
| Subidas de fichero (Assets, licencias) | multipart/form-data |
Verbos HTTP
| Verbo | Uso |
|---|---|
GET | Lee un recurso único o una lista. |
POST | Crea un recurso o dispara una acción (/livestreams/{id}/start, /livestreams/{id}/stop). |
PUT | Reemplazo completo. |
PATCH | Actualización parcial (usada por patchSystemPreferences). |
DELETE | Elimina un recurso. |
Los endpoints de acción bajo POST usan un sufijo verbal (/start, /stop, /validate) en lugar de un verbo separado.
Idempotencia
Los clientes pueden enviar un header Idempotency-Key opcional en operaciones mutantes; si el deploy lo soporta, las llamadas con la misma clave en la misma ventana de retención devuelven la respuesta cacheada de la primera. Consulta con tu equipo de plataforma antes de basar un cliente en este comportamiento. Las claves, cuando aplican, deben ser opacas, únicas por operación lógica y de como mucho 64 caracteres.
Ejemplo completo
Arrancar un Live stream contra la API pública:
curl -X POST "https://<host>/c21apiv2/livestreams/{livestreamId}/start" \
-H "Authorization: Bearer $LIVECONTROL_TOKEN" \
-H "Idempotency-Key: ops-2026-05-15-news-start-01" \
-H "Content-Type: application/json"
La respuesta lleva un header X-Request-Id que correlaciona la llamada con sus eventos en el servidor. Los clientes deben llamar primero a GET /c21apiv2/livestreams/{livestreamId}/start/config (operación getLivestreamStartConfig) para obtener un idEncoderGroup válido y el último startConfig[] guardado antes de hacer POST al arranque.
FAQ
https://<host>/c21doc/openapi.yaml y una UI Swagger interactiva en https://<host>/c21doc/swagger/. Cada operación, esquema y enum citados en estas páginas de referencia trazan a ahí.