Webhooks de agentes
Los webhooks de agentes permiten que un sistema externo inicie un agente configurado. Crea un agente activado por webhook, envíale una solicitud y Almirant creará un único trabajo canónico para ella.
Ruta rápida
- Abre Agents y selecciona Create agent.
- Completa los pasos Base, Prompt y, si corresponde, MCP.
- En Trigger, elige Webhook y guarda el agente. Almirant mostrará una URL de producción y otra de prueba.
- Guarda la URL de producción como secreto en el sistema que llama y envía una solicitud
POSTconIdempotency-Key.
La URL de producción tiene esta forma:
https://<your-almirant-host>/webhooks/agents/<agent-id>?token=<webhook-token>
El token forma parte de la credencial. No lo incluyas en el control de versiones, registros ni tickets públicos.
Enviar una solicitud POST
POST inicia un trabajo del agente con el prompt de sistema guardado, además de un prompt y metadatos opcionales de quien llama.
curl --request POST \
--url 'https://almirant.example.com/webhooks/agents/agent_123?token=replace-with-secret-token' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: order-9182-import-v1' \
--data '{
"prompt": "Importa el pedido e informa de cualquier error de validación.",
"metadata": {
"orderId": "9182",
"source": "warehouse"
}
}'
La primera entrega correcta devuelve el trabajo creado:
{
"success": true,
"data": {
"jobId": "job_123",
"status": "queued",
"created": true,
"replayed": false
}
}
Envía de nuevo la misma Idempotency-Key si un fallo de red deja dudas sobre si Almirant recibió la solicitud. Una repetición devuelve el mismo trabajo canónico en lugar de iniciar otro:
{
"success": true,
"data": {
"jobId": "job_123",
"status": "queued",
"created": false,
"replayed": true
}
}
Contrato de la solicitud
| Parte | Requisito |
|---|---|
| URL | Se requieren agent-id y el parámetro de consulta token. Las credenciales no válidas o ausentes devuelven 401. |
Idempotency-Key | Opcional en POST; usa un valor opaco y estable por evento lógico. Debe tener entre 1 y 255 bytes UTF-8, no puede estar vacío ni contener caracteres de control. Los valores no válidos devuelven 400 con invalid_idempotency_key. |
prompt | Cadena opcional que se añade como entrada de quien llama en esta ejecución. |
metadata | Objeto opcional. Los prompts guardados del agente pueden interpolar valores de metadatos como {{metadata.orderId}}. |
outputBinding | Valores opcionales de cadena a cadena para un destino de salida ya configurado en el agente. No puede seleccionar una URL de entrega nueva. |
El cuerpo solo acepta prompt, metadata y outputBinding. Se rechaza un deliveryUrl controlado por quien llama.
Comportamiento de prueba, GET y POST
El endpoint de prueba comprueba que se puede alcanzar la URL. No pone ningún trabajo en cola:
POST https://<your-almirant-host>/webhook-test/agents/<agent-id>?token=<webhook-token>
El endpoint GET de producción inicia un trabajo con el prompt de sistema guardado. GET no acepta entrada de quien llama ni proporciona la semántica de respuesta idempotente de POST. Usa POST en integraciones que puedan reintentar.
Los agentes activados por webhook usan una programación manual porque los inician solicitudes entrantes, no el planificador. Un agente de webhook debe permanecer habilitado y configurado para ese activador; de lo contrario, el endpoint devuelve 409.
Resolución de problemas
| Respuesta | Significado | Acción |
|---|---|---|
400 invalid_idempotency_key | La clave POST está vacía, es demasiado larga o contiene un carácter de control. | Genera un identificador de evento breve y estable. |
400 invalid_output_binding | La vinculación proporcionada no coincide con la configuración de salida del agente. | Comprueba el destino de salida configurado y los nombres de los campos de vinculación. |
401 invalid_webhook_credentials | El token de la URL falta, es incorrecto o ya no es válido. | Copia la URL actual del agente y sustituye el secreto guardado. |
409 | El agente no se puede ejecutar como agente de webhook. | Vuelve a habilitarlo y confirma que su activador es Webhook. |