Resend event by ID
curl --location --request POST 'https://sandbox.crbcos.com/webhooks/v1/events/8d6115c0-2a88-4a58-b731-b306002e8bc2/resend' \Overview
Use the Resend Event by ID endpoint to manually retry delivering a webhook event to your configured callback URL. This helps when the initial delivery failed or timed out. It also helps you recover from a missed event.
When to Use
Use this endpoint in the following scenarios:
- Failed delivery recovery: When an event delivery failed due to network issues or your endpoint downtime
- Timeout recovery: When the initial webhook delivery timed out
- Manual retry: When support teams need to retry specific webhook deliveries
- Testing: To verify webhook processing after you fix your endpoint or during development
Requirements
Before using this endpoint, ensure:
- Event exists: The event ID must be valid (returns 404 if not found)
- Active registration - you must have an active webhook registration for that event type
- Push type only: The registration must be Push type - you cannot resend Poll-type or File-type webhooks
- Permissions: Requires Permissions.Events.Resend permission
How It Works
When you call this endpoint:
- Event Retrieval: The system retrieves the event by its ID from the database
- Asynchronous queueing - the resend request is queued for asynchronous processing via NServiceBus (IssueEventCallback command)
- Immediate Response: The endpoint returns immediately with the current event information - it does not wait for the delivery attempt to complete
- Background Delivery: The event is delivered to the registered callback URL in the background
- Status Update: After the delivery attempt, the event's status and lastAttemptedAt timestamp are updated accordingly
Important: This is an asynchronous operation. The 200 OK response means the resend was successfully queued. It doesn't mean the event was delivered. Check the event status after a few seconds using GET /v1/events/{id} to verify delivery.
Error Codes
This endpoint may return the following application-specific error codes:
Error Code | Description |
|---|---|
Events.RegistrationNotFoundForEvent | No webhook registration found for this event type |
Events.CanOnlyResendPush | Can only resend push-type webhooks (not poll or file types) |
404 Not Found | Event ID does not exist |
403 Forbidden | Missing required permissions |
Important Notes
- Asynchronous Operation: This endpoint returns immediately before the resend completes. The response shows the event status when you call the API. It doesn't show status after the resend attempt.
- Check Delivery Status: To verify if the resend was successful, use the GET /v1/events/{id} endpoint or GET /v1/events/{id}/logs endpoint after a few seconds to check the updated status and delivery logs.
- Any Status Eligible: You can resend events in any status (Pending, Success, Failed, or Expired).
- No Idempotency Protection: Calling resend multiple times will queue multiple deliveries - the system does not prevent duplicate event deliveries.
- Partner Endpoint: Ensure the partner's callback URL is available before resending.
- Registration Status: If the webhook registration is suspended, the resend may fail.
Response Fields Explained
Status Values
The status field in the response indicates the current state of the event:
Status | Description |
|---|---|
Pending | Event is queued and waiting for delivery |
Success | The system successfully delivered the event to the callback URL |
Failed | Event delivery failed (temporary failure, will retry) |
Expired | Event exceeded maximum retry attempts and expired |
After calling resend, the event typically returns to Pending status while the delivery attempt is processed in the background.
Resources Array
The resources array contains identifiers for entities affected by the event, formatted as resourceType:guid:
"resources": [
"card:12345678-1234-1234-1234-123456789012",
"account:98765432-8765-4321-8765-987654321098"
]Details Array
The details array contains event-specific metadata as key-value pairs:
"details": [
{
"cardId": "12345678-1234-1234-1234-123456789012",
"status": "Activated",
"activationMethod": "API"
}
]Best Practices
- Verify registration: Confirm the webhook registration is active and properly configured using GET /v1/registrations
- Monitor delivery: After resending, wait a few seconds then check your callback to confirm successful delivery
- Avoid rapid retries: Don't repeatedly call resend in quick succession - allow time for asynchronous processing. We recommend 5-10 second intervals.