Skip to content

Read requests and attempts

Read endpoints use the project selected by the bearer API key. A request belonging to another project is returned as 404 Not Found.

GET https://api.stormedo.com/requests
Parameter Description
status scheduled, queued, delivering, succeeded, failed, or cancelled.
search Exact req_ ID or case-insensitive destination URL fragment, up to 2048 bytes.
method GET, POST, PUT, PATCH, or DELETE.
source api, recurring, or replay.
from Inclusive RFC 3339 creation-time boundary.
to Exclusive RFC 3339 creation-time boundary. Must be later than from.
cursor Opaque cursor returned by the previous page.
limit Items per page from 1 through 100. Defaults to 50.

Requests are ordered newest first.

Terminal window
curl \
'https://api.stormedo.com/requests?status=failed&method=POST&limit=25' \
--header "Authorization: Bearer $STORMEDO_TOKEN"
{
"success": true,
"data": {
"items": [
{
"id": "req_33uZSQsVaf8aZjDuzkuAq",
"replayed_from_request_id": null,
"schedule_id": null,
"url": "https://your-app.example/webhooks/orders",
"method": "POST",
"queue": "default",
"status": "failed",
"scheduled_at": null,
"created_at": "2026-08-28T10:15:30Z",
"started_at": "2026-08-28T10:15:31Z",
"completed_at": "2026-08-28T10:16:20Z"
}
],
"next_cursor": "AZv4h7Q2AACW2hJvR8WmC1p0YK9sP3nLqT5eX8aB2cQ",
"history_retention_days": 30,
"history_cutoff_at": "2026-07-29T10:20:00Z",
"has_hidden_history": false
},
"error": null,
"meta": null,
"request_id": "95c07a5c-3d44-4b89-84a6-c5a71313bff2"
}

Pass next_cursor unchanged to retrieve the next page. A null cursor means there is no next page.

Terminal history older than the workspace retention period is not returned. Active requests remain visible even when they were created before the cutoff.

GET https://api.stormedo.com/requests/{request_id}
Terminal window
curl \
'https://api.stormedo.com/requests/req_33uZSQsVaf8aZjDuzkuAq' \
--header "Authorization: Bearer $STORMEDO_TOKEN"

The response includes the request definition, lifecycle timestamps, metadata, header names with redacted values, and completed attempts:

{
"success": true,
"data": {
"id": "req_33uZSQsVaf8aZjDuzkuAq",
"replayed_from_request_id": null,
"schedule_id": null,
"url": "https://your-app.example/webhooks/orders",
"method": "POST",
"max_attempts": 4,
"timeout_seconds": 45,
"queue": "default",
"metadata": {
"order_id": "ord_123"
},
"content_type": "application/json",
"headers": {
"authorization": "[REDACTED]"
},
"status": "succeeded",
"scheduled_at": null,
"created_at": "2026-08-28T10:15:30Z",
"updated_at": "2026-08-28T10:15:32Z",
"started_at": "2026-08-28T10:15:31Z",
"completed_at": "2026-08-28T10:15:32Z",
"cancelled_at": null,
"attempts": [
{
"attempt_number": 1,
"status": "succeeded",
"response_status_code": 204,
"error_message": null,
"duration_ms": 412,
"started_at": "2026-08-28T10:15:31Z",
"completed_at": "2026-08-28T10:15:32Z",
"retry": null
}
]
},
"error": null,
"meta": null,
"request_id": "95c07a5c-3d44-4b89-84a6-c5a71313bff2"
}

Stored request bodies and destination header values are never returned.

GET https://api.stormedo.com/requests/{request_id}/attempts

This endpoint returns the same completed attempt objects without the surrounding request definition. It returns an empty array until the first attempt completes.

When another attempt is scheduled, retry contains the decision:

{
"reason": "http_429",
"retry_after_raw": "120",
"retry_after_truncated": false,
"retry_after_escaped": false,
"retry_after_status": "valid",
"retry_after_delay_ms": 120000,
"backoff_delay_ms": 30000,
"selected_delay_ms": 120000,
"delay_source": "retry_after",
"next_attempt_at": "2026-08-28T10:17:32Z"
}

A newly accepted request can take a short time to appear in list and detail responses. The original 202 Accepted response remains confirmation that Stormedo accepted it durably.

  • 401 indicates a missing or invalid API key.
  • 404 indicates a missing, malformed, cross-project, or expired-retention request ID.
  • 422 indicates invalid filters, timestamps, cursor, method, or limit.