Skip to main content
Get notified when an interview completes. Configure a webhook URL and we’ll POST a signed payload with interview results every time a respondent finishes.

PUT /v1/webhooks

Create or update the webhook configuration for your project. One webhook per project. Returns the webhook configuration. On first creation, includes the signing_secret.

Request

string
required
Bearer token. See Authentication.
string
required
HTTPS endpoint to receive events.
string[]
required
Event types to subscribe to. Currently: ["interview.completed"].
The signing_secret is only returned on first creation (201). Store it securely — you’ll need it to verify payloads. Lost or need to rotate your secret? Delete the webhook and create a new one. Deletion only requires your API key.

GET /v1/webhooks

Retrieve the current webhook configuration. Returns the URL and subscribed events. Does not return the signing secret.
Returns 404 if no webhook is configured.

DELETE /v1/webhooks

Remove the webhook configuration.
Returns 204 on success.

Event: interview.completed

Sent after interview processing completes, typically 5–30 seconds after the respondent finishes.

Headers

Payload

string
"interview.completed"
string
ISO 8601 timestamp of when the event was sent.
object

Retries

If your endpoint returns a non-2xx status or times out (10s limit), we retry up to 3 times: After all retries are exhausted, the event is dropped.
Use session_id to deduplicate in case you receive the same event more than once.

Verifying signatures

Every webhook includes an X-Webhook-Signature header. Verify it to confirm the request came from userjourneys.ai.
Node.js
Python
Use timing-safe comparison (crypto.timingSafeEqual, hmac.compare_digest) to prevent timing attacks.

Typical integration

Mark users after they complete an interview so you stop showing the prompt: