Skip to main content

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_created
  • requisition_approved
  • requisition_received
  • assignment_created
  • assignment_confirmed
  • timesheet_approval_requested
  • timesheet_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

  • POST request 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

HeaderDescription
Content-TypeAlways application/json.
X-Requidex-EventEvent type (for example requisition_created).
X-Requidex-Event-IdUnique event delivery id.
X-Requidex-SignatureHMAC SHA-256 signature of raw request body.
X-Requidex-TimestampUTC timestamp when event was signed.

Signature Verification

Use the webhook signing secret provided during onboarding.

  1. Read the raw request body bytes.
  2. Build signed payload as: timestamp + '.' + rawBody.
  3. Compute HMAC SHA-256 using the signing secret.
  4. Compare the computed digest with X-Requidex-Signature.
  5. 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.