Skip to content

Create an advanced request

Use the advanced endpoint when the request definition is easier to express as structured JSON.

POST https://api.stormedo.com/requests
Content-Type: application/json
Header Required Description
Authorization: Bearer <token> Yes Project API key. It is never sent to the destination.
Idempotency-Key No Stable project-scoped key containing 1 to 255 bytes. Retained for 24 hours.
Field Type Required Default Description
url string Yes None Public HTTPS destination, up to 2048 bytes.
method string No POST GET, POST, PUT, PATCH, or DELETE.
headers object No {} Destination headers sent directly without an X-Forward- prefix.
body any JSON value No No body Serialized as JSON and delivered with Content-Type: application/json.
delay string No Immediate Relative delay from 1s through 30d. Use an integer followed by s, m, h, or d.
deliver_at RFC 3339 string No Immediate Absolute time within 30 days of the current time. Cannot be combined with delay.
timeout string No 50s Per-attempt timeout from 1s through 5m, using whole seconds or minutes.
retry.max_attempts integer No 3 Total attempts including the first, from 1 through 20.
retry.backoff string No exponential Currently only exponential is accepted.
queue string No default Queue label containing 1 to 64 allowed characters.
metadata object No {} String values stored for inspection and never forwarded.

Unknown fields are rejected.

A valid deliver_at timestamp that is already in the past starts delivery immediately.

Terminal window
curl --request POST \
'https://api.stormedo.com/requests' \
--header "Authorization: Bearer $STORMEDO_TOKEN" \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: order-123-created' \
--data '{
"url": "https://your-app.example/webhooks/orders",
"method": "POST",
"headers": {
"Authorization": "Bearer destination-token"
},
"body": {
"type": "order.created",
"order_id": "ord_123"
},
"retry": {
"max_attempts": 4,
"backoff": "exponential"
},
"timeout": "45s",
"metadata": {
"order_id": "ord_123"
}
}'
  • The serialized destination body may contain up to 256 KiB.
  • The complete structured API request may contain up to 512 KiB.
  • Destination headers are limited to 64 entries and 32 KiB combined.
  • Metadata is limited to 32 entries, 64-byte keys, 1024-byte values, and 16 KiB combined.
  • Metadata keys and queue names accept letters, numbers, dots, hyphens, and underscores.

Destination header values are stored securely and returned as [REDACTED] by read APIs. Request bodies are never returned by the API.

The endpoint returns the same 202 Accepted object as quick send. retry.max_attempts counts total attempts, unlike the quick-send retry query parameter, which counts additional retries.

Status When it occurs
401 The project API key is missing or invalid.
409 The idempotency key was reused with different input.
413 The complete structured API request exceeds 512 KiB.
422 A field, destination header, timing value, body, or metadata entry is invalid.
429 The workspace monthly request allowance has been reached.
502 or 503 Stormedo could not durably accept the request.