Skip to main content
Hookie exposes three HTTP surfaces: the public ingest + streaming API (authenticated by a path-form endpoint URL or an ik_live_… ingest key), the token-authed customer portal API for your end customers, and the admin API that drives the console — authenticated by your session in the browser, or by an OAuth access token when a connected agent is acting on your behalf.

Ingest

Bodies may be JSON, application/x-www-form-urlencoded, or multipart/form-data — so an HTML form can post straight to an endpoint with no JavaScript (see the quickstart). Anything else is read as JSON regardless of its Content-Type, which is what most webhook providers send. Whenever the URL names a dataset — a path-form endpoint, or a trailing {dataset} — the payload is stored whole into it and project mapping rules are not evaluated. Rules run on exactly one shape: POST /v1/ingest/{ingest_key} with no dataset, where every matching rule writes its own record and none matching leaves routed empty. A /v1/webhooks/{key}/{slug} request is evaluated against that webhook’s own criteria and mappings, not the project’s rules. Endpoints can additionally require an HMAC signature and an IP allowlist.

Streaming

See Live streaming for SSE/WebSocket details and resume.

Customer portal API

A separate, token-authed surface for your end customers, scoped to one portal + customer — see Customer portal for issuing tokens and embedding.

Admin API

The console’s admin API lives at /admin/api/projects/{pid}/… and drives everything you see in the app — sign in to explore it. It accepts either a browser session or Authorization: Bearer with an OAuth access token, which is how a connected agent reaches the very same routes. Project-scoped resources: Workspace-level resources sit directly under /admin/api/… with no {pid} segment:

Request headers

Response codes

Outbound (to your endpoints)

Deliveries are signed and carry Hookie-Signature, Hookie-Event-Id, and Hookie-Delivery-Id. Delivery is at-least-once and unordered — dedupe on the event id and verify the signature.