Send your first request
This quickstart sends a JSON message to Stormedo’s test destination. You will create one durable request, follow its delivery state, and inspect the completed attempt.
Before you begin
Section titled “Before you begin”You need a Stormedo account, a project, and a project API key. You do not need to create a destination endpoint for this quickstart.
After signing up, complete workspace/project setup, select the project, and open API keys in the dashboard to create a key. Use the same project when inspecting the request.
Keep the API key in server-side configuration. The examples use STORMEDO_TOKEN:
export STORMEDO_TOKEN='sm_key_...'1. Create a durable request
Section titled “1. Create a durable request”Send a message to Stormedo’s test destination:
curl --request POST \ 'https://api.stormedo.com/send?url=https://api.stormedo.com/ping&retry=3' \ --header "Authorization: Bearer $STORMEDO_TOKEN" \ --header 'Idempotency-Key: first-ping-001' \ --header 'Content-Type: application/json' \ --data '{"message":"Hello from Stormedo"}'Stormedo stores the request before starting delivery. The test destination accepts the JSON body and returns 200 OK, so the request should succeed on its first attempt. If a temporary failure occurs, retry=3 allows up to three retries.
If the call times out or returns a server error, reuse first-ping-001 with the same input to recover this submission. Use a different key for a new logical test. See Idempotency.
2. Keep the request ID
Section titled “2. Keep the request ID”Stormedo responds with 202 Accepted:
{ "success": true, "data": { "id": "req_33uZSQsVaf8aZjDuzkuAq", "project_id": "prj_2Z5mQe7cB9kP4sV8xH1nD", "replayed_from_request_id": null, "status": "queued", "scheduled_at": null, "created_at": "2026-08-24T10:15:30Z" }, "error": null, "meta": null, "request_id": "95c07a5c-3d44-4b89-84a6-c5a71313bff2"}data.id identifies the durable request and every delivery attempt that belongs to it. Keep this req_... value when logging or storing the operation in your application.
The top-level request_id identifies only this API call and is useful when contacting Stormedo support.
3. Follow the delivery
Section titled “3. Follow the delivery”Open Requests in the Stormedo dashboard and search for the data.id value.
The test request should reach succeeded after one attempt. You may briefly see queued or delivering before it completes:
queued → delivering → succeededA newly accepted request can take a short time to appear in request history.
You can also inspect it through the API. Set REQUEST_ID to your actual data.id, not the illustrative ID above:
export REQUEST_ID='req_...'curl "https://api.stormedo.com/requests/$REQUEST_ID" \ --header "Authorization: Bearer $STORMEDO_TOKEN"Expect data.status: "succeeded" and an attempt with response_status_code: 200. If the first read returns 404, wait one second and try again, up to 30 times. Stop and investigate a persistent 404; do not submit a duplicate request to make history appear.
4. Inspect the attempt
Section titled “4. Inspect the attempt”Open the request in the dashboard to see its destination, timing, and completed attempt. A successful test delivery shows an HTTP 200 response with no retry scheduled.
The attempt confirms that Stormedo delivered the request. The earlier 202 Accepted response confirmed only that Stormedo accepted responsibility for it.
Send to your application
Section titled “Send to your application”Follow Receive deliveries to prepare an endpoint you control, then replace https://api.stormedo.com/ping with its public HTTPS URL. Percent-encode destination query strings in the outer url parameter. Stormedo will deliver the same body and Content-Type to that endpoint.
For application code, continue with the JavaScript SDK or Python SDK. For direct HTTP integration, see Send a request. To understand other outcomes, read Request lifecycle and Retries.