Skip to Content

Documentation

Risk Cloud API: Webhook Delivery Replay

Manually re-send the payload from the most recent delivery attempt for a job execution, and record a new attempt with the result.

Use this endpoint to recover from a failed webhook delivery, or to re-verify a fix, without needing to trigger the job again. The original payload is resent byte-for-byte to the webhook’s current URL; a new attempt is recorded alongside the one being replayed, which is left untouched. For a list of past attempts, see Webhook Delivery Attempts.

Replay a Webhook Delivery endpoint

POST /api/v1/jobs/webhook-history/{job-execution-operation-id}/replay

Requirements

  • Build permission. Your user must have the Build or Admin – All entitlement. Requests without it are rejected with 403.
  • Entitlement to the triggering Application. Same rule as the Webhook Delivery Attempts endpoint: with Build permission only, you can replay a job execution when the job runs on a fixed schedule, its triggering Workflow has no permissions restrictions, or you’re entitled to that Application. A job execution ID you’re not entitled to responds the same as one that doesn’t exist. See Errors.
  • A saved request payload on the attempt. Only attempts recorded after Webhook Observability was enabled have a saved payload. An attempt from before the feature was turned on can’t be replayed.

Path parameter

ParameterTypeRequiredDescription
job-execution-operation-idstringYesThe jobExecutionOperationId of the job execution whose most recent delivery attempt you want to replay. This is the same value returned in the jobExecutionOperationId field by the Webhook Delivery Attempts endpoint.

Request body: none.

What happens on replay

  • The most recent delivery attempt for the given execution is looked up, and its exact original payload is resent to the webhook’s current URL, not the URL that was in effect at the time of the original attempt.
  • A new attempt is recorded with attemptType: REPLAY. It does not overwrite or modify the attempt it replayed.
  • Exactly one delivery is attempted. A failed replay is not retried automatically.
  • If the resend succeeds, the webhook’s status changes from FAILING to ACTIVE (if it was FAILING).

A replay whose delivery fails is still a 200 from this endpoint, because the delivery attempt failed, not the API request. Check the responseBody and httpStatusCode fields on lastWebhookDeliveryAttempt to determine the actual result of the replay.

Response

200 OK.

{
  "jeoId": "FJr4xLId",
  "jeoStatus": "FAILED",
  "webhookName": "test",
  "webhookUrl": "https://testing.com",
  "webhookId": "123",
  "jobId": "234",
  "jobName": "webhook job",
  "recordId": "456",
  "recordName": "record 54",
  "recordExists": true,
  "webhookExists": true,
  "jobExecutionId": "678",
  "lastWebhookDeliveryAttempt": {
    "status": "FAILED",
    "attemptType": "REPLAY",
    "responseBody": "{\"error\":\"bad request\"}",
    "httpStatusCode": 400,
    "fireDate": "2026-08-14T13:05:22.000+00:00"
  }
}
FieldDescription
jeoIdThe job execution operation that was replayed.
jeoStatusThe job execution’s status after the replay: SUCCESS or FAILED.
webhookNameThe webhook’s name.
webhookUrlThe URL the payload was sent to.
webhookIdThe webhook the payload was sent to.
jobIdThe job that triggered the delivery.
jobNameThe job’s name.
recordIdThe record that triggered the job.
recordNameThe record’s name.
recordExistsfalse if the record has been deleted.
webhookExistsfalse if the webhook has been deleted.
jobExecutionIdThe job execution that holds the operation being replayed.
lastWebhookDeliveryAttemptThe attempt this call just created. See below.

lastWebhookDeliveryAttempt fields:

FieldDescription
statusDELIVERED if the webhook endpoint returned a success response, FAILED otherwise.
attemptTypeAlways REPLAY for a response from this endpoint.
httpStatusCodeInteger, may be null. The HTTP status the webhook endpoint responded with. null on a timeout, DNS failure, or refused connection.
responseBodyString, may be null. The response body the webhook endpoint returned. null under the same conditions as httpStatusCode.
fireDateTimestamp when the replay was sent.

Errors

StatusReason
400 Bad RequestThe Webhook Observability feature is not enabled on your account.
401 UnauthorizedThe request could not be associated with a user.
403 ForbiddenYour user does not have the Build or Admin – All entitlement.
404 Not FoundThe job execution operation ID doesn’t exist, or you’re not entitled to it. Also returned if the webhook the attempt was sent to has since been deleted.
409 ConflictThe most recent attempt for this execution has no saved payload (it predates Webhook Observability), so there is nothing to replay.

Unlike the list-style Webhook Delivery Attempts endpoint, this endpoint does return 404. There’s no page of results to come back empty, just one execution that either resolves or doesn’t.