Integración sin servidor
Recibe el webhook de cualquier sistema y entrégalo en el tuyo, en el formato que espera
Te damos una URL. Apunta hacia ella el disparo de quien quieras, escribe el mapeo en una caja de texto, y nosotros entregamos en tu endpoint — firmado, con reintento y sin que levantes nada.
Quien dispara
recibe
APIBrasil
reescribe el cuerpo
Tu sistema
entrega y reintenta
Cuándo esto resuelve
Todo caso de abajo es el mismo problema: un sistema avisa de una forma, el otro solo entiende otra.
El cobro fue pagado
La pasarela avisa con sus campos; tu ERP espera los campos que definiste cuando lo escribiste.
Salió un pedido en la tienda
La plataforma dispara un evento enorme, y tu sistema interno solo necesita tres campos de él.
El socio solo dispara GET
Manda todo en la querystring; tu endpoint espera POST con JSON. Ninguno de los dos lados va a cambiar.
Necesitas confiar en lo que llega
Exige una cabecera acordada en la entrada, y recibe todo firmado en HMAC de nuestro lado para verificar en la llegada.
Cómo funciona
Tres pasos, y el único que exige atención es el tercero.
Crea la ruta
Recibes una URL pública, con un secreto embebido, solo tuya.
Apunta el disparo hacia ella
En el panel de quien envía, pega la URL donde hoy está la de tu servidor.
Escribe el mapeo
Un JSON con claves entre llaves para los valores que llegan. La vista previa muestra el resultado mientras escribes.
El mapeo es un JSON con huecos
Escribes el cuerpo que TU sistema espera y marcas entre llaves los lugares donde entra lo que llegó. La vista previa corre en el navegador, así que responde mientras escribes.
Lo que llega
{
"event": "charge.paid",
"data": {
"id": "ch_9f2",
"amount": 14990,
"customer": { "name": "Ana Ribeiro" }
}
}Tu plantilla
{
"pedido": "{data.id}",
"valor": "{data.amount}",
"cliente": "{data.customer.name}",
"observacao": "{data.note}",
"recebido_em": "{_received_at}"
}Lo que sale
{
"pedido": "ch_9f2",
"valor": "14990",
"cliente": "Ana Ribeiro",
"observacao": "",
"recebido_em": "2026-08-28T03:14:07Z"
}Las tres reglas que evitan la mayoría de los errores
El punto baja un nivel
Para llegar a un campo anidado escribes la ruta con punto. No hay una segunda sintaxis que aprender.
Campo que no vino sale vacío
El reenvío no falla por un campo faltante: su lugar sale vacío y el resto se entrega.
Una lista no se aplana
Una lista llega entera, como JSON, en el lugar donde la pediste. El índice de un array no es estable entre un disparo y otro — una plantilla que apunta al primer elemento acierta en la prueba y falla en producción.
Dos campos que nadie disparó, y que puedes usar
{_raw}El cuerpo recibido entero, para quien quiere reenviar sin reescribir nada.
{_received_at}El instante en que llegó la llamada — que el destino casi nunca puede saber solo.
El guion bajo delante existe para no chocar con un campo del mismo nombre venido de quien disparó.
Cómo sabes que fuimos nosotros
Todo lo que sale de aquí puede ir firmado. Verificas la firma en la llegada y descartas lo que no coincida — es lo que separa un webhook tuyo de cualquiera que descubrió tu dirección.
HMAC SHA-256 en la cabecera
La firma va en una cabecera fija, calculada sobre el cuerpo exacto que sale. Mismo esquema del callback de workflow: quien ya integró con uno, no escribe la verificación dos veces.
La entrada también está protegida
La URL que recibe ya viene con un secreto embebido, y puedes exigir una cabecera acordada. Quien no sepa las dos cosas no entra.
GET firma el vacío
Una petición sin cuerpo firma cadena vacía de los dos lados. Es la divergencia clásica — un lado firmando nada, el otro firmando llaves — y está resuelta en el origen.
Qué acepta en las dos puntas
La entrada acompaña a quien dispara. La salida acompaña a tu sistema. Las dos no necesitan coincidir.
| Qué | En la entrada | En la salida |
|---|---|---|
| Método | POST, GET, PUT o PATCH | POST, GET, PUT o PATCH |
| Dónde va el contenido | Cuerpo o querystring, como llegue | Cuerpo o querystring, como elijas |
| Cabeceras | Exige las que quieras | Arma las que el destino pida |
| Firma | Secreto en la URL | HMAC SHA-256, opcional |
DELETE no está en la lista, y es a propósito
Un webhook es una notificación: quien dispara está diciendo que algo pasó, y los cuatro verbos de arriba son los que llevan contenido para describir el qué. DELETE como disparador de notificación no existe en el campo — ofrecerlo crearía una combinación que nunca llega.
No cuesta nada
El reenviador no tiene plan propio, no consume saldo y no cobra por disparo. Necesita cuenta en APIBrasil, y es todo.
Gratis con la cuenta
La misma cuenta que usas para las APIs abre el reenviador. No hay upgrade que hacer ni producto que contratar.
No toca tu saldo
Reenviar no es una consulta: nada de lo que pasa por aquí aparece en la factura de las APIs.
Y ahorra un servidor
Lo que esto sustituye es un endpoint tuyo en el aire, con dominio, certificado y alguien de guardia cuando se caiga.
La primera ruta lleva unos dos minutos
Crea la cuenta, abre el reenviador y apunta un disparo de prueba. Si el mapeo está bien, ves el resultado antes de guardar.
Gratis con cuenta APIBrasil.
Registro sin tarjeta. Sin contrato de permanencia: cancele cuando quiera.

