POST /webhooks using a signed-in
account session. Choose a public HTTPS URL and the events you need:
secret. Store the secret
before dismissing it. GET /webhooks lists active event subscriptions;
DELETE /webhooks/{id} disables a subscription. Accounts can have ten active
subscriptions. API keys cannot manage destinations.
Notifications
recordings:read. They contain no transcript or audio.
Created means the recording text item was saved; a pending local capture alone
does not emit it. Notifications include changes made by existing app clients.
Verify the Italic-Signature header before processing. It has the form
t=<unix-seconds>,v1=<hex-hmac>. Compute HMAC-SHA256 with your webhook secret over
timestamp + "." + rawRequestBody, compare in constant time, and reject timestamps
more than five minutes from your clock. Use the original bytes, not reserialized JSON.
Catch up with events
If you need polling or recovery, useGET /events?limit=100. It returns events
and nextCursor. After processing a page, save nextCursor and supply it as
cursor on the next request. An empty page means you are caught up. Cursors have
gaps and should be treated as opaque values. Events remain until account deletion.