Entrega por webhook
Un canal con Entrega por webhook activada entrega cada publicación a una dirección que usted elige, como una solicitud firmada, y su propio sistema sigue desde ahí, sin nadie en medio. (Para que Reelwire la publique en la propia plataforma, consulte Publicado por conector de plataforma.) Esta página trata lo que todos esos sistemas comparten: la configuración, qué llega, cómo confiar en ello y cómo decirle a Reelwire qué pasó. Lo que su sistema hace después con cada publicación es una de tres cosas:
| Guía | Cuándo conviene |
|---|---|
| Publicar mediante las API de las plataformas | Su propio script publica cada canal a través de la API de desarrollador de la propia plataforma: Instagram, TikTok, YouTube, Facebook, LinkedIn y las demás. |
| Que una sesión de IA lo publique | Su propio script inicia una sesión de un asistente de IA por cada publicación, que maneja un navegador y la publica por usted, sin supervisión. |
| Publicar mediante la API de un servicio de publicación | Su script o una automatización (Make, n8n, Zapier) pasa cada publicación a la API de un servicio de publicación, que la publica en las plataformas. |
Reelwire no entrega ni ejecuta ninguno de ellos. Lo que sigue es la forma que tienen todos los receptores, y el contrato en sí está en Webhooks.
Configuración
- En la pantalla Webhook (en Conexiones), escriba la dirección en la que escucha su receptor en Dirección del webhook y pulse Guardar. Debe empezar por
https://y ser accesible desde internet. Establecerla requiere el permiso Administración. - Dé a su receptor el secreto de firma. La pantalla solo muestra su principio y su final: pulse Copiar el secreto, escriba la contraseña con la que inicia sesión y muestra el secreto entero con Copiar. Guárdelo en un lugar que su receptor pueda leer; es todo lo que su receptor necesita. Rotar el secreto, junto a él, crea uno nuevo y detiene el antiguo al instante, así que rótelo solo cuando pueda dar el nuevo a su receptor.
- Escriba el receptor, o empiece por el de la misma pantalla: la tarjeta Obtener su código (Webhook) tiene un receptor que funciona en Node.js, Python, PHP y C# que comprueba la firma, rechaza una solicitud obsoleta, omite una entrega que ya ha tratado e informa de cada publicación. Ponga su secreto de firma en lugar de
YOUR_SIGNING_SECRET, y una clave de API con escritura en Publicaciones en lugar deYOUR_API_KEY. - Pulse Probar la entrega. Su receptor recibe una solicitud firmada con
"event": "ping", y la pantalla muestra lo que respondió. Úselo hasta que pase la comprobación de la firma. - En cada canal cuyas publicaciones deban llegarle, active Entrega por webhook en sus Ajustes (Canales). Deje también activada Entrega por correo si una persona debe recibir además cada publicación.
Qué llega
Cuando toca una publicación, una solicitud por entrega: una publicación que va a tres canales con Entrega por webhook activada y que no necesitan aprobación llega una vez, con los tres en channels; un canal que necesita aprobación llega por su cuenta una vez aprobado. Un canal con el webhook desactivado nunca está en channels, aunque salga en la misma entrega por correo o por su conector de plataforma. Cada canal lleva su video (y su imagen de portada), su texto tal como lo admite esa plataforma (en cuatro longitudes, en captions, en un canal en Sin plataforma específica), sus ajustes de publicación en posting y los ID con los que informar de vuelta. Los canales de la misma publicación que quedan fuera de esta solicitud se nombran en omitted, con el motivo y si siguen.

Más tarde, la misma dirección recibe post.update cuando alguien cambia una publicación entregada, y post.delete cuando alguien pide retirarla, cada vez con Webhook activado en el diálogo de la solicitud en Publicaciones. La cabecera x-reelwire-event dice cuál. Reenviar solicitud de publicación envía allí la publicación de nuevo como un post.publish nuevo, con un ID de entrega nuevo, de modo que su receptor actúa de nuevo sobre ella.
Confíe en ello
- Compruebe la firma sobre el cuerpo sin procesar, antes de analizarlo:
x-reelwire-signatureest=<unix seconds>,v1=<hex>, yv1es el HMAC-SHA256 de<t>.<raw body>con su secreto de firma. Compare en tiempo constante. - Rechace una marca de tiempo obsoleta: a más de 300 segundos de su reloj es una repetición.
- Actúe una sola vez por entrega:
x-reelwire-deliveryes igual en cada reintento de una misma entrega. Regístrela solo cuando haya terminado con ella, para que un fallo a medias deje pasar el reintento. - Verifique el video tras descargarlo con su
sha256. Los enlaces funcionan siete días desde cada envío.
En Node, la comprobación son unas pocas líneas:
import { createHmac, timingSafeEqual } from "node:crypto";
export const fromReelwire = (rawBody, header, secret) => {
const parts = Object.fromEntries(header.split(",").map((part) => part.split("=")));
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false;
const expected = createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
return parts.v1?.length === expected.length && timingSafeEqual(Buffer.from(parts.v1), Buffer.from(expected));
};
Responder y luego trabajar
Responda enseguida con cualquier 2xx y publique después. La respuesta solo dice que la solicitud llegó: no publica nada, y una que tarde más de 30 segundos cuenta como fallo y se envía de nuevo. Lo mismo ocurre con una redirección: Reelwire no la sigue, así que dé la dirección que responde por sí misma. Una solicitud que falla se reintenta tras 10 segundos, un minuto, cinco minutos, un cuarto de hora, una hora y dos horas, y luego se abandona; una publicación que ninguna vía sacó aparece entonces como PUBLICACIÓN FALLIDA en Publicaciones, con el motivo, y Reenviar solicitud de publicación, en Más, la intenta de nuevo allí. Lo que salió en la pantalla Actividad muestra cada intento, Detalles muestra lo que llevaba una solicitud y lo que volvió, y Entregar de nuevo envía una otra vez, con el mismo ID de entrega.
Diga lo que pasó
Reelwire muestra la publicación de un canal como Entregada hasta que alguien dice qué fue de ella. Su receptor lo dice, por canal, con una clave de API, creada en la pantalla Claves de API, que tenga escritura en Publicaciones:
POST https://app.reelwire.io/v1/posts/{postId}/report
Authorization: Bearer rw_...
Content-Type: application/json
{ "status": "published", "url": "https://www.youtube.com/shorts/...", "platformPostId": "..." }

postId es channels[].postId de la solicitud. El estado es uno de:
| Estado | Cuándo |
|---|---|
published | Está en línea. Envíe su url, y el ID propio de la plataforma como platformPostId si lo tiene: ambos le vuelven en un post.update o post.delete posterior, como permalink y platformPostId, para que pueda volver a encontrar la publicación. |
skipped | Decidió no publicarla. |
failed | No se pudo publicar. Envíe un reason: la pantalla Publicaciones lo muestra, y una persona puede publicarla a mano. |
deleted | La retiró tras un post.delete. |
Decir lo mismo dos veces no pasa nada. Todo lo que el estado de la publicación no permite se responde con 409 y el estado en el que está, como omitir una publicación que ya se informó como publicada.