Webhooks

Create a webhook endpoint

The secret is returned in THIS RESPONSE ONLY — the gateway stores a hash and cannot show it again (use rotate-secret if it is lost).

DATA MINIMIZATION: memory text is never sent unless include_content is explicitly true (default false). Ingest-originated memory events are coalesced into ingest.completed unless include_ingest_memories is true, and even then arrive batched (events[], ≤100 per delivery).

Event types: memory.created, memory.deleted, namespace.deleted, ingest.completed, ingest.failed, usage.threshold_reached, key.created, key.revoked, member.added, member.removed, webhook.test, or ["*"] for all. Envelopes are pinned at api_version: 2026-07-25.

Every delivery carries X-InfoLang-Signature: t=<unix>,v1=<hex hmac_sha256(secret, "{t}.{raw_body}")> (Stripe's scheme), plus X-InfoLang-Event-Id and X-InfoLang-Delivery-Id. Verify with a constant-time compare against the RAW body and reject timestamps outside ±5 minutes. During a secret rotation overlap the header carries TWO space-separated v1= values — accept either.

Delivery is AT-LEAST-ONCE: dedupe on X-InfoLang-Event-Id. Success is a 2xx within 10s; anything else retries on the ladder immediate, 30s, 120s, 600s, 3600s, 21600s (jittered). An endpoint that fails every delivery for 72h straight flips to auto_disabled.

Requires the webhooks:write scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an il_* machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying webhooks:write is still refused where the role does not permit it.

A credential with no scope record resolves to LEGACY_DEFAULT, which does NOT include webhooks:write — mint a key with it explicitly (POST /v2/workspaces/{id}/keys).

post/v2/workspaces/{id}/webhooks

Request

  • Base URL: https://api.infolang.ai
  • URL: https://api.infolang.ai/v2/workspaces/{id}/webhooks
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer

Path parameters

idstring required

Request body

urlstring uri required
enabled_eventsstring[]
include_contentboolean
include_ingest_memoriesboolean
coord_event_kindsstring[]
descriptionstring
status'enabled' | 'disabled'

Response

Created endpoint, including the one-time secret

webhook_idstring required
workspace_idstring required
urlstring required
enabled_eventsstring[] required
status'enabled' | 'disabled' | 'auto_disabled' required
include_contentboolean required
include_ingest_memoriesboolean required
coord_event_kindsstring[]
coord_cursorstring
descriptionstring
auto_disabled_reasonstring
createdstring required
updatedstring required
secretstring
previous_secret_expires_atstring

Changes

No recorded changes to this operation across all 1 revision of this API.