Skip to main content
Suki sends Ambient and Form filling completion (and related) notifications as an HTTPS POST to the callback URL on your partner record. If your app never sees events, check reachability, TLS, a handler that returns non-200 (or takes too long), or HMAC verification that rejects the request before you log it. Dictation does not send completion webhooks. Your app gets Dictation text on the live WebSocket.

Endpoint requirements

Your callback URL must:
  • Accept POST over HTTPS with TLS 1.2 or higher (Suki does not send webhooks to HTTP URLs)
  • Be publicly reachable (no localhost or private IPs in production)
  • Respond with HTTP 200 (โ€œOKโ€) within 30 seconds
If delivery fails (server unavailable, response time exceeds 30 seconds, or a non-200 status), Suki retries the push up to four more times, for a total of 5 attempts. You cannot register or change the callback URL through a self-service API. Share it during Partner onboarding so Suki stores it on your partner record with your secret key.

Verify the request signature

Suki signs each notification. Verify before you parse JSON.
Reject requests where generated-at is older than two minutes to prevent replay attacks. If signature verification fails, return 4xx and stop.
Pseudocode
Read the raw body before JSON parsing. Middleware that auto-parses JSON first changes bytes and breaks HMAC verification.

Fix

1

Confirm the Registered HTTPS URL

Match the path Suki stored on your partner record. Confirm the endpoint is publicly reachable over HTTPS with TLS 1.2 or higher.
2

Verify HMAC on the Raw Body

Compute HMAC-SHA-256 over generated-at + : + raw body with your partner secret. Compare to X-API-Key with a constant-time compare. See Signature verification.
3

Return 200 Quickly

After a valid signature, return HTTP 200 (โ€œOKโ€) so Suki treats the notification as delivered. Do follow-up API or database work after you acknowledge.
4

Log Rejected Requests

Log missing headers, signature mismatches, and non-200 responses. A handler that returns 4xx/5xx or exceeds 30 seconds can look like โ€œnothing arrivedโ€ in your product logs even though Suki retried.
5

Trigger a Known Session Event

Complete an Ambient or Form filling session that should emit a webhook. Dictation workflows do not send completion webhooks.
Return 200 after you receive and validate the webhook. That tells Suki the notification was delivered.

Next steps

Signature verification - HMAC steps, headers, and code samples Webhook overview - Push delivery, endpoint rules, and retries Build a webhook notification receiver - End-to-end HTTPS receiver tutorial Webhook configuration - Register the callback URL during onboarding Form filling session returns no results - Use webhooks when the browser closes early
Last modified on September 29, 2026