Referencia de la API
Todo lo que hacen los paneles, pueden hacerlo sus propios sistemas. Es la misma API sobre la que está construido el producto: no hay una segunda API menor para los clientes.

- URL base:
https://app.reelwire.io. Los ejemplos de este manual se ejecutaron contra una copia de desarrollo enhttp://localhost:4000; las rutas son las mismas, solo cambia el host. - Autenticación: un token bearer en cada solicitud. Consulte Autenticación.
- Límites: cada solicitud que lleva una clave o una sesión cuenta contra esa única credencial, 600 por minuto sea cual sea la ruta a la que llame, y algunas rutas, entre ellas el inicio de sesión, tienen un límite propio más estricto. Un
429indica cuánto esperar. Consulte Límites de frecuencia. - Formato: JSON de entrada, JSON de salida, UTF-8. Los fallos son envoltorios de problema.
- Versionado: todas las rutas están bajo
/v1/. - ID de solicitud: cada respuesta lleva
x-request-id. Regístrelo. Envíe su propio ULID en ese encabezado y Reelwire lo usa, de modo que sus logs y los nuestros comparten un id.
Su primera solicitud
Quién soy: la única llamada que puede hacer toda clave, sean cuales sean sus permisos.
curl http://localhost:4000/v1/whoami \
-H "Authorization: Bearer rw_your_key_here"
{
"accountId": "01M1VFRWE3A35H892VAAEKKDA6",
"accountName": "Enterprise 2",
"scopes": ["ingest:write", "posts:read", "media:write"],
"permissions": [
{ "scope": "ingest:write", "label": "Custom feeds - Send raw data: write" },
{ "scope": "posts:read", "label": "Posts: read" },
{ "scope": "media:write", "label": "Media: write" }
],
"kind": "apikey",
"resource": null
}
permissions nombra lo que puede hacer la clave con las palabras que usan el selector de claves y todos los rechazos. Qué versión de Reelwire respondió lo indica GET /v1/version, que no necesita clave.
Enviar un evento
La integración más habitual. Su sistema introduce algo que ocurrió; Reelwire lo renderiza como un clip para cada canal suscrito a ese stream y entrega cada publicación por las vías que su canal tiene activadas: por correo electrónico, por webhook o a través del conector de plataforma del canal, que la publica por sí mismo.
curl http://localhost:4000/v1/stream \
-H "Authorization: Bearer rw_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"streamId": "st_30472168d941",
"eventId": "01M2SQMKK3G1NVFXV31DCBVB92",
"occurredAt": "2026-09-18T07:55:00Z",
"locale": "en",
"data": {
"clipData": {
"headline": "Bund yields close at a three-week high",
"subline": "The ten-year settled at 2.41 per cent"
},
"metaData": { "title": "Bund yields close at a three-week high" }
}
}'
Cuatro cosas que conviene saber sobre ese cuerpo:
eventIdes un ULID y es la clave de idempotencia. Enviar el mismo dos veces no crea una segunda publicación, y eso es lo que hace seguro un reintento.- Lo que va en
dataes lo que acepta la plantilla del stream, publicado como esquema en/v1/formats/template/{templateId}. Envíe ese formato y se renderiza; envíe otra cosa y recibirá un rechazo que nombra el campo. Un stream con un mapa de campos acepta en su lugar su propio formato y lo asigna al de la plantilla. occurredAtes cuándo ocurrió el hecho, no cuándo lo envió.- Una imagen es un archivo de su biblioteca multimedia, escrito como
media://y su id o nombre. Una dirección web se rechaza.
Antes de enviar nada real, POST /v1/stream/validate acepta el mismo cuerpo y responde si habría funcionado, sin crear nada.
El ejemplo completo, con las respuestas reales, está en Enviar eventos.
Adónde ir después
| Si usted | Lea |
|---|---|
| Introduce datos desde un productor | Enviar eventos, y después Streams y feeds |
| Recibe publicaciones terminadas e informa de lo que ha sido de ellas | Webhooks |
| Transmite sus publicaciones a sus propios participantes (Enterprise) | Sindicación |
| Gestiona colegas o lee el plan | Equipo y plan |
| Observa lo que ocurrió y pide una actualización, un reenvío o una eliminación | Publicaciones y trabajos |
| Demuestra lo que salió y quién lo aprobó, para una auditoría (Enterprise) | Cumplimiento |
| Retiene todos los canales a la vez, o durante un período programado | Canales: Detener todo |
| Programa publicaciones que alguien escribió | Listas de publicaciones |
| Configura un espacio de trabajo mediante una máquina | Marcas, Canales, Biblioteca multimedia |
| Crea imágenes, videos, música, fuentes o textos con IA | Asistente de IA |
| Renderiza un clip por sí solo | Renders y exportación directa |
| Genera un cliente | Plantillas y formatos |
| Busca una ruta concreta | Todos los endpoints |
| Elige lo que puede hacer una clave | Permisos |
| Crea una clave, la muestra de nuevo o comprueba un límite de frecuencia | Autenticación |
| Gestiona un rechazo | Errores |
| Lee una lista larga página a página | Listas y paginación |
Dos convenciones que conviene conocer de antemano
Una modificación es un POST a un verbo, no un DELETE. Eliminar una marca es POST /v1/brands/{id}/delete. Así cada acción sigue siendo direccionable mediante un prefijo de permiso y los cuerpos siguen disponibles en las acciones que necesitan uno, como el moveTo que admite la eliminación de una marca.
Las listas son de dos clases. Los registros los pagina el servidor; la configuración vuelve completa. Consulte Listas y paginación.