---
title: Introduction
description: Understand what Stormedo does, which reliability guarantees it provides, and when to use the quick or advanced request API.
---

Stormedo is a managed outbound HTTP delivery service. Your application submits an HTTP request definition, Stormedo accepts it durably, and delivery continues independently from the process that created it.

Use Stormedo when an HTTP call must happen now, later, or repeatedly and your application needs a durable outcome instead of a best-effort network call.

## What Stormedo owns

After Stormedo accepts a request, it owns:

- Durable request acceptance
- Immediate or delayed delivery
- Temporary failure classification
- Retry timing and `Retry-After` handling
- Per-attempt timeouts
- Cancellation and replay
- Request state and attempt history
- A delivery signature for every outbound attempt

Your application does not need to operate a message broker, scheduler, worker fleet, or custom retry loop for this work.

## What Stormedo does not do

Your destination remains responsible for validating each request, running the business logic, making duplicate deliveries safe, and returning an appropriate HTTP response.

## The delivery contract

Stormedo provides **at-least-once delivery**. A destination can process a request successfully before Stormedo records the result, so a later retry can deliver the same stable request ID again.

Start by learning the basic send and delivery flow. Handling repeated deliveries safely is covered later under Advanced.

## Two ways to create the same request

### Quick send

Use `POST /send` when you have a raw body and a small number of controls such as `retry`, `delay`, `deliver_at`, or `timeout`.

### Advanced request

Use `POST /requests` when you need structured destination headers, metadata, and an explicit retry policy.

Both endpoints create the same request resource and use the same status, cancellation, replay, and attempt-history APIs.

## Next step

[Send your first request](/docs/get-started/first-request/) with cURL, then inspect the returned request ID.
