---
title: Send your first request
description: Send a test delivery through Stormedo, confirm durable acceptance, and inspect the completed attempt.
---

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

You need a [Stormedo account](https://app.stormedo.com/auth/register), a project, and a project API key. You do not need to create a destination endpoint for this quickstart.

Keep the API key in server-side configuration. The examples use `STORMEDO_TOKEN`:

```bash
export STORMEDO_TOKEN='sm_key_...'
```

## 1. Create a durable request

Send a message to Stormedo's test destination:

```bash
curl --request POST \
  'https://api.stormedo.com/send?url=https://api.stormedo.com/ping&retry=3' \
  --header "Authorization: Bearer $STORMEDO_TOKEN" \
  --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.

## 2. Keep the request ID

Stormedo responds with `202 Accepted`:

```json
{
  "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.

:::note
`202 Accepted` confirms that Stormedo accepted the request for delivery. It does not mean the destination has responded yet.
:::

## 3. Follow the delivery

Open [Requests](https://app.stormedo.com/dashboard/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:

```text
queued → delivering → succeeded
```

A newly accepted request can take a short time to appear in request history.

## 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

Replace `https://api.stormedo.com/ping` in the `url` parameter with your public destination URL. Stormedo will deliver the same body and `Content-Type` to that endpoint.

For application code, continue with the [JavaScript SDK](/docs/sdks/javascript/) or [Python SDK](/docs/sdks/python/). For direct HTTP integration, see [Send a request](/docs/api-reference/send/). To understand other outcomes, read [Request lifecycle](/docs/concepts/request-lifecycle/) and [Retries](/docs/concepts/retries/).
