Skip to content

Webhook setup

Use callbacks as the primary way to receive screening progress and completion. Follow the status meanings and flow for your organization’s configuration:

Use POST /api/ApiClient/updateWebHook with your private API key. The request body is a JSON string containing your callback URL, not a JSON object.

Terminal window
curl --fail -sS -X POST https://api.ferretly.com/api/ApiClient/updateWebHook \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '"https://example.com/hooks/ferretly"'

This changes the API client’s callback setting. Verify the saved statusUpdateCallbackUrl through GET /api/ApiClient.

Ferretly calls the URL with HTTP GET, adding three URL-encoded query parameters. There is no JSON event body.

GET /hooks/ferretly?subjectId=11111111-1111-4111-8111-111111111111&status=Complete&externalSystemId=candidate-001 HTTP/1.1
Host: example.com
ParameterMeaning
subjectIdFerretly subject UUID
statusScreening or review event from BackgroundCheckStatus; see your workflow’s status guide
externalSystemIdIdentifier supplied when creating the subject; empty when none was supplied

An existing callback query string is preserved; Ferretly appends its parameters with &. Do not register your own query parameters with the same three names.

Return a successful 2xx response promptly. Queue longer work in your application and retrieve results after the completion notification.

Use the status supplied by the webhook. Rechecking that status after every notification is unnecessary. Make processing idempotent: notifications do not contain an event ID or run ID, and delivery should not be treated as exactly once or strictly ordered. In the Analyst Assistance flow, handle Redressed and Complete without duplicating the completion action.

Delivery retries and their timing can change without notice and may vary by organization. Do not depend on a fixed retry count, schedule or specific set of retried response codes. Keep your receiver available, acknowledge accepted notifications promptly, and contact Ferretly Integrations if an expected update is missing.

Use HTTPS. Ferretly does not currently send an Authorization header or cryptographic signature with these callbacks. Your Ferretly API key authenticates requests you make to Ferretly; it is not sent to your receiver.

Customers can use a dedicated, unpredictable token in the callback URL or restrict incoming requests to Ferretly’s sending IP addresses. Request the current IP address list and coordinate your receiver configuration with Ferretly Integrations. Keep callback tokens out of logs and support messages, and never put your Ferretly API key in the callback URL.

See Set the webhook URL for registration details. The OpenAPI specification includes the current screening-status callback definition.