SolidHooksSolidHooks
Empezar
Casos de usoConfiguración de webhooks con agentes de IA

Deja que un agente aprovisione todo el pipeline

Todo lo que hace SolidHooks está disponible por REST, documentado en una especificación OpenAPI y descrito de nuevo en prosa sencilla escrita para modelos. Lo que un agente no puede hacer es darse acceso a sí mismo. Tú creas la cuenta y generas una clave, eligiendo lo que esa clave alcanza; a partir de ahí, el agente configura orígenes, destinos y conexiones, y después lee cada evento y cada entrega que ha producido.
Una clave y luego sin supervisiónOpenAPI + llms.txt600 solicitudes/min por clave
Qué cubre esta guía
  1. 01Por qué la cuenta y la clave las creas tú
  2. 02Generar una clave y elegir lo que alcanza
  3. 03Qué puede ver y qué no una clave vinculada a un proyecto
  4. 04Aprovisionar un pipeline en tres llamadas
  5. 05Leer el registro cuando algo falla

La parte que te corresponde a ti

Un agente no hace nada aquí hasta que le das una clave. Crear la cuenta, verificar el correo del propietario y generar esa clave son pasos en el navegador, y mantenerlo así es justo la idea: quien es titular de la relación de facturación decide lo que puede alcanzar el agente, y el agente tiene una sola credencial que puedes ver en una lista y revocar con un clic.

También significa que no hay que hacer malabares con tokens. El agente nunca toca un endpoint de cuenta, nunca tiene una sesión y no puede ampliar su propio acceso. Todo lo que hace se ejecuta en /v1/* con la clave que le diste.

You sign up
in the browser
You mint a key
scoped how you like
Agent gets the key
sdhk_sk_...
Pipeline live
REST, unattended
Una entrega de credenciales, una vez por agente. Desde la clave en adelante funciona sin ti.

Generar una clave y limitar lo que alcanza

En el panel, en Organización → Claves de API, Nueva clave te pide un nombre, una caducidad opcional y Acceso a proyectos. Si lo dejas en Todos los proyectos, la clave alcanza todo lo de la organización. Si eliges uno, la clave queda vinculada a él, que es como mantienes una ejecución sin supervisión dentro de un radio de impacto que tú has elegido. El valor aparece una sola vez, así que cópialo directamente en el entorno del agente.

clave sin vincularUsa por defecto el proyecto más antiguo. X-Project-Id selecciona otro.
clave vinculadaIgnora las reglas de cabecera. Ninguna cabecera selecciona el proyecto vinculado y cualquier otro id devuelve 404.
/v1/projectsLa lista devuelve solo el proyecto vinculado. Crear uno devuelve 403.
límite de tasa600 solicitudes por minuto por clave.

El panel crea y revoca claves, pero no cambia su alcance, así que ampliar o reducir una vinculación más adelante supone generar una clave nueva y retirar la anterior. Los permisos de acción por clave están previstos. Hasta entonces, una clave tiene permisos de miembro: lee todo lo que está en su alcance y crea, actualiza, activa o desactiva, reintenta y repite libremente, mientras que eliminar, revelar y rotar el secreto de firma, rotar la máscara, aprovisionar conectores y cambiar la facturación quedan en manos de un administrador o propietario desde el panel.

Aprovisionar un pipeline

Tres llamadas: un origen para recibir, un destino al que enviar y una conexión que los une. La respuesta del origen incluye la ingestUrl, que es lo único que necesita tu proveedor.

curl
# Source. The ingestUrl is what your provider gets.curl -s "$API/v1/sources" -H "authorization: Bearer $SDHK_KEY" \  -H 'content-type: application/json' \  -d '{ "name": "Stripe", "provider": "stripe", "verifierConfig": { "secret": "whsec_..." } }'→ { "id": "src_...", "ingestUrl": "https://sdhk.events/<maskId>", ... } # Destination, then a connection joining the two.curl -s "$API/v1/destinations" -H "authorization: Bearer $SDHK_KEY" \  -H 'content-type: application/json' \  -d '{ "name": "Billing", "type": "http", "url": "https://acme.example/hooks" }' curl -s "$API/v1/connections" -H "authorization: Bearer $SDHK_KEY" \  -H 'content-type: application/json' \  -d '{ "name": "Stripe → Billing", "sourceId": "src_...", "destinationId": "dest_..." }'

Indicar un proveedor conocido trae consigo su esquema de firma, así que el agente aporta un secreto en lugar de investigar un formato de firma. Los orígenes también aceptan correo entrante, que se explica en la guía de correo.

Leer el registro

Un agente que solo puede escribir está adivinando. La misma API devuelve cada evento con su resultado de verificación y cada entrega con sus intentos, y eso es lo que permite depurar una ejecución sin supervisión.

Un fallo de firma devuelve al emisor un 401 deliberadamente vago, porque explicarle a un emisor no autenticado qué comprobación falló convertiría la respuesta en un oráculo. En su lugar, el motivo se registra en el evento, donde un agente autenticado puede leerlo.

curl
# Why did nothing arrive?curl -s "$API/v1/events?status=rejected" -H "authorization: Bearer $SDHK_KEY"→ rejectionReason: "signature_mismatch" | "timestamp_out_of_tolerance" | ... # Re-send one failed delivery. Free, creates nothing new.curl -s -X POST "$API/v1/deliveries/dlv_.../retry" -H "authorization: Bearer $SDHK_KEY" # Run an event through its connections again. Billable.curl -s -X POST "$API/v1/events/evt_.../replay" -H "authorization: Bearer $SDHK_KEY"
Los registros de eventos rechazados son una muestra
Esas filas tienen un límite de tasa por origen, así que ante una avalancha el registro es una muestra representativa y no un registro completo de cada 401.

La superficie legible por máquinas

  • /v1/spec.json es el esquema OpenAPI 3 de cada endpoint, y /v1 es la referencia interactiva sobre la misma especificación.
  • /llms.txt orienta rápidamente a un modelo. /llms-full.txt es la guía completa, incluida la semántica de los errores y los límites que importan.
  • Los errores tienen tipo en lugar de ser prosa. QUOTA_EXCEEDED y RATE_LIMITED son códigos distintos con los que ramificar directamente. Los errores de límite del plan, como el tope de conectores, siguen en FORBIDDEN, con un payload data (limit, current) que lleva los detalles.

Prácticas que conviene adoptar

  • Dale a cada agente su propia clave. Así, revocar una no te cuesta nada más, y la columna de último uso te dice qué agente ha dejado de actuar.
  • Vincula la clave a un proyecto salvo que el agente gestione proyectos de verdad. Es el único alcance disponible hoy y no se puede cambiar una vez generada la clave.
  • Ramifica según el código de error, nunca según el texto del mensaje. Los mensajes están escritos para personas y el 401 de la ingesta no da información a propósito.
  • Consulta ?status=rejected antes de reenviar nada. Una firma que nunca se verificó tampoco se verificará en el segundo intento.
  • Si falló un solo consumidor, mejor reintentar la entrega que repetir el evento. El reintento es gratis y la repetición se factura.

Preguntas

Dale una clave a tu agente y deja que construya el pipeline

Genera una clave, entrégala y todo lo demás es una llamada a la API.