Create export
const url = 'https://api.hookbridge.io/v1/exports';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"start_time":"2025-12-01T00:00:00Z","end_time":"2025-12-06T23:59:59Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.hookbridge.io/v1/exports \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "start_time": "2025-12-01T00:00:00Z", "end_time": "2025-12-06T23:59:59Z" }'Create a CSV export job for webhook delivery data. The export runs asynchronously; poll GET /v1/exports/{id} to check status and use GET /v1/exports/{id}/download to retrieve the file when complete.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Start of the export time range (RFC 3339)
End of the export time range (RFC 3339). Must be after start_time.
Optional filter by message status
Optional filter by outbound endpoint ID (only for direction=outbound)
Export direction:
outbound: Export outbound webhook delivery data (default)inbound: Export inbound webhook delivery data
Optional filter by inbound endpoint ID (only for direction=inbound)
Examples
Export all messages in a time range
{ "start_time": "2025-12-01T00:00:00Z", "end_time": "2025-12-06T23:59:59Z"}Export failed messages for a specific endpoint
{ "start_time": "2025-12-01T00:00:00Z", "end_time": "2025-12-06T23:59:59Z", "status": "failed_permanent", "endpoint_id": "ep_550e8400e29b41d4a716446655440000"}Responses
Section titled “Responses”Export job created successfully
object
object
Export job identifier
Project that owns this export
Export job status:
pending: Queued for processingprocessing: Currently generating the CSVcompleted: Ready for downloadfailed: Generation failedexpired: Download link has expired
Start of the export time range
End of the export time range
Message status filter (if specified)
Outbound endpoint ID filter (if specified, stored as UUID)
Inbound endpoint ID filter (if specified, when direction=inbound)
Export direction
Number of rows in the export (populated after completion)
File size in bytes (populated after completion)
Error description (if failed)
When processing started
When processing completed
When the download link expires
When the export was requested
object
Unique identifier for this request (useful for support)
Example
{ "data": { "id": "01935abc-def0-7123-4567-890abcdef012", "project_id": "proj_abc123", "status": "pending", "filter_start_time": "2025-12-01T00:00:00Z", "filter_end_time": "2025-12-06T23:59:59Z", "created_at": "2025-12-06T12:00:00Z" }, "meta": { "request_id": "req_xyz123" }}Invalid request
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Examples
Endpoint not found
{ "error": { "code": "ENDPOINT_NOT_FOUND", "message": "endpoint not found" }, "meta": { "request_id": "req_xyz123" }}Invalid endpoint ID format
{ "error": { "code": "INVALID_REQUEST", "message": "endpoint_id must be in format ep_xxx" }, "meta": { "request_id": "req_xyz123" }}Invalid payload
{ "error": { "code": "INVALID_REQUEST", "message": "payload must be valid JSON" }, "meta": { "request_id": "req_xyz123" }}Invalid headers
{ "error": { "code": "INVALID_HEADERS", "message": "header 'Host' is forbidden and cannot be overridden" }, "meta": { "request_id": "req_xyz123" }}Unauthorized - Invalid or missing API key
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Example
{ "error": { "code": "UNAUTHORIZED", "message": "Invalid or missing API key" }, "meta": { "request_id": "req_xyz123" }}Export rate or concurrency limit exceeded
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Example
{ "error": { "code": "EXPORT_LIMIT_EXCEEDED", "message": "An export is already in progress. Please wait for it to complete." }, "meta": { "request_id": "req_xyz123" }}Enter your credentials to populate code examples throughout the docs.