Send a request
Use the quick send endpoint when the body should be forwarded without transformation and the request needs only query-string delivery controls.
POST https://api.stormedo.com/sendHeaders
Section titled “Headers”| Header | Required | Description |
|---|---|---|
Authorization: Bearer <token> |
Yes | Project API key used to authenticate with Stormedo. It is never forwarded. |
Content-Type |
No | Forwarded unchanged to the destination. Maximum 255 bytes. |
Idempotency-Key |
No | Stable project-scoped key containing 1 to 255 bytes. Retained for 24 hours. |
X-Forward-<name> |
No | Sends <name> to the destination. For example, X-Forward-Authorization becomes Authorization. |
Stormedo accepts up to 64 destination headers with at most 32 KiB of combined names and values. Transport-controlled headers and Stormedo-* delivery headers cannot be supplied.
Query parameters
Section titled “Query parameters”| Parameter | Required | Default | Description |
|---|---|---|---|
url |
Yes | None | Public HTTPS destination, up to 2048 bytes. Credentials and fragments are not allowed. |
method |
No | POST |
Destination method: GET, POST, PUT, PATCH, or DELETE. |
retry |
No | 0 |
Additional retries after the first attempt, from 0 through 19. |
delay |
No | Immediate | Relative delay from 1s through 30d. Use an integer followed by s, m, h, or d. |
deliver_at |
No | Immediate | RFC 3339 delivery time within 30 days of the current time. Cannot be combined with delay. |
timeout |
No | 50s |
Per-attempt timeout from 1s through 5m. Whole seconds and minutes are accepted. |
queue |
No | default |
Queue label containing 1 to 64 letters, numbers, dots, hyphens, or underscores. |
retry=3 allows four total attempts: the first attempt and up to three retries.
A valid deliver_at timestamp that is already in the past starts delivery immediately.
Request body
Section titled “Request body”The complete incoming body is forwarded as exact bytes and may contain up to 256 KiB. Stormedo does not parse or re-serialize it.
Example
Section titled “Example”curl --request POST \ 'https://api.stormedo.com/send?url=https://your-app.example/webhooks/orders&retry=3&timeout=45s' \ --header "Authorization: Bearer $STORMEDO_TOKEN" \ --header 'Content-Type: application/json' \ --header 'X-Forward-Authorization: Bearer destination-token' \ --data '{"type":"order.created","order_id":"ord_123"}'The destination receives the JSON body, Content-Type, and destination Authorization header. It does not receive the Stormedo project API key.
Response
Section titled “Response”Stormedo returns 202 Accepted after durable handoff:
{ "success": true, "data": { "id": "req_33uZSQsVaf8aZjDuzkuAq", "project_id": "prj_2Z5mQe7cB9kP4sV8xH1nD", "replayed_from_request_id": null, "status": "queued", "scheduled_at": null, "created_at": "2026-08-28T10:15:30Z" }, "error": null, "meta": null, "request_id": "95c07a5c-3d44-4b89-84a6-c5a71313bff2"}Delayed requests initially use status: "scheduled" and include an absolute scheduled_at value. A 202 response confirms acceptance, not destination completion.
Errors
Section titled “Errors”| Status | When it occurs |
|---|---|
401 |
The project API key is missing or invalid. |
409 |
The idempotency key was already used with different request input. |
413 |
The HTTP body exceeds 256 KiB. |
422 |
The destination, method, timing, timeout, headers, queue, or key is invalid. |
429 |
The workspace monthly request allowance has been reached. |
502 or 503 |
Stormedo could not durably accept the request. |
Continue with Read requests to retrieve request state and completed attempts.