Webhooks
Requidex webhooks provide push-based notifications for near real-time integration workflows.
Webhooks can be scoped to a hiring company or an agency. requisition_created and
requisition_approved are company-only events. requisition_received is agency-only and is sent
when a requisition is released to that agency manually, after final approval, or by a scheduled
tier transition. Merely selecting an agency on a draft or internally pending requisition does not
send an event. Assignment and timesheet events are available in both scopes, with agency delivery
limited to work supplied by that agency.
Supported Domain
Webhooks are available for requisitions, assignments, and selected timesheet lifecycle events.
Event Types
requisition_createdrequisition_approvedrequisition_receivedassignment_createdassignment_confirmedtimesheet_approval_requestedtimesheet_approved
Detailed event reference pages (payload fields and examples) are generated from the OpenAPI x-webhooks contract and appear under this section in the sidebar.
Delivery Model
POSTrequest is sent to your configured webhook URL for each event.- Payload is JSON.
- Events are delivered at-least-once; consumers must handle duplicates safely.
Headers
| Header | Description |
|---|---|
Content-Type | Always application/json. |
X-Requidex-Event | Event type (for example requisition_created). |
X-Requidex-Event-Id | Unique event delivery id. |
X-Requidex-Signature | HMAC SHA-256 signature of raw request body. |
X-Requidex-Timestamp | UTC timestamp when event was signed. |
Signature Verification
Use the webhook signing secret provided during onboarding.
- Read the raw request body bytes.
- Build signed payload as:
timestamp + '.' + rawBody. - Compute HMAC SHA-256 using the signing secret.
- Compare the computed digest with
X-Requidex-Signature. - Reject if timestamp is too old (recommended: 5 minutes).
Event Envelope
{
"id": "evt_01HYZ4KQJ4A9H2J7QZ8A4R7X9M",
"type": "requisition_created",
"createdAt": "2026-02-24T15:05:43.455Z",
"data": {
"requisition": {
"id": "507f1f77bcf86cd799439011"
}
}
}
Event Payloads
requisition_created
Company-only. Triggered when a new requisition is created.
The payload includes only the requisition's full object ID. Fetch full details from:
GET /api/open/v1/requisitions/{id}
{
"id": "evt_01HYZ4KQJ4A9H2J7QZ8A4R7X9M",
"type": "requisition_created",
"createdAt": "2026-02-24T15:05:43.455Z",
"data": {
"requisition": {
"id": "507f1f77bcf86cd799439011"
}
}
}
requisition_approved
Company-only. Triggered whenever an approval stage is completed.
The payload includes only the requisition's full object ID. Fetch full details from:
GET /api/open/v1/requisitions/{id}
{
"id": "evt_01HYZ4KXQ45Y8RD6MKJJ6RRA5S",
"type": "requisition_approved",
"createdAt": "2026-02-24T16:11:02.003Z",
"data": {
"requisition": {
"id": "507f1f77bcf86cd799439011"
}
}
}
requisition_received
Agency-only. Triggered when a requisition is released to the agency, whether manually, after final approval, or through a scheduled tier transition.
The payload includes only the requisition's full object ID. Fetch full details from:
GET /api/open/v1/requisitions/{id}
{
"id": "evt_01K1RECEIVED7R6Q5P4N3M2L1",
"type": "requisition_received",
"createdAt": "2026-07-28T10:30:00.000Z",
"data": {
"requisition": {
"id": "507f1f77bcf86cd799439011"
}
}
}
assignment_created
Triggered when an assignment is created.
The payload includes only the assignment's full object ID. Fetch full details from:
GET /api/open/v1/assignments/{id}
{
"id": "evt_01J0BB2DD7L3T0X9UM5Z6N8R9S",
"type": "assignment_created",
"createdAt": "2026-04-16T14:00:00.000Z",
"data": {
"assignment": {
"id": "507f1f77bcf86cd799439012"
}
}
}
assignment_confirmed
Triggered when an assignment is confirmed.
The payload includes only the assignment's full object ID. Fetch full details from:
GET /api/open/v1/assignments/{id}
{
"id": "evt_01HZAZ8AA4H9P7T6QJ2W3K4M5N",
"type": "assignment_confirmed",
"createdAt": "2026-03-09T10:15:00.000Z",
"data": {
"assignment": {
"id": "507f1f77bcf86cd799439012"
}
}
}
timesheet_approval_requested
Triggered when a timesheet is submitted for approval.
The payload includes only the timesheet's full object ID. Fetch full details from:
GET /api/open/v1/timesheets/{id}
{
"id": "evt_01J0AA1CC6K2S9W8TL4Y5M7Q8R",
"type": "timesheet_approval_requested",
"createdAt": "2026-04-16T12:00:00.000Z",
"data": {
"timesheet": {
"id": "507f1f77bcf86cd799439013"
}
}
}
timesheet_approved
Triggered when a timesheet is approved.
The payload includes only the timesheet's full object ID.
{
"id": "evt_01HZAZ9BB5J1R8V7SK3X4L6P7Q",
"type": "timesheet_approved",
"createdAt": "2026-03-09T10:45:00.000Z",
"data": {
"timesheet": {
"id": "507f1f77bcf86cd799439013"
}
}
}
Retry and Failure Behavior
- 2xx response: delivery is marked successful.
- Non-2xx or timeout: delivery is retried with exponential backoff.
- Recommended consumer timeout: respond within 10 seconds.
- Deduplicate events using
X-Requidex-Event-Id.
Idempotency Guidance
Your webhook handler should be idempotent by event id:
- Store processed event ids.
- Ignore already-processed ids.
- Treat out-of-order arrival as expected.