Quickstart
Your first call in three steps
EchoRelay sits in front of your endpoints: a caller POSTs to your project's URL, EchoRelay
authenticates, validates, fans out to your targets, retries, and returns 202.
Here's the shortest path to that first 202.
1 — Create a project, line & endpoint
In the panel, create a project, add a
line (a version key like v1), then an endpoint
(a path + the targets it fans out to). Each endpoint's page shows a ready-to-run Example request you can copy.
2 — Mint an API key
Open API keys in the project and create one. The er_live_… secret is
shown exactly once — copy it then. One key authenticates every endpoint in the project. See
key lifecycle for rotation & revoke.
3 — Make the call
POST to {your-project}.echorelay.cloud/{line}/{endpoint} with your key as a Bearer token:
curl -X POST https://your-project.echorelay.cloud/v1/your-endpoint \
-H "Authorization: Bearer er_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "field": "value" }'
A success returns 202 — EchoRelay has queued the request and will deliver it to your
targets with retries:
HTTP/1.1 202 Accepted
{ "status": "queued", "requestId": "…" }
Watch it land
Open Request log in the project to see the request, its status, and the per-target delivery attempts. Free-tier projects relay live traffic unmetered — no credits needed for your first calls.
Common responses
| Code | Meaning |
|---|---|
| 202 | queued for delivery |
| 401 | key revoked / expired |
| 404 | unknown tenant / line / endpoint, or missing key |
| 422 | payload failed your endpoint's validation |
| 429 | over your rate limit (raise it on a paid plan) |
Streaming & sync endpoints
The 202 above is the queued (async) path. If a target is
configured sync or stream, EchoRelay returns the target's own response
instead — its real status (usually 200), not a 202.
A stream target (SSE or chunked) is forwarded to your caller as the target produces it,
chunk by chunk. Consume it with an SSE client (browser EventSource) or, with curl,
disable buffering so chunks appear as they arrive:
curl -N https://your-project.echorelay.cloud/v1/your-stream-endpoint \
-H "Authorization: Bearer er_live_YOUR_KEY"
One stream target per endpoint. Streams aren't retried; if the target can't be reached you get a
502 and aren't charged for it.
A stream is billed by the size of the response it streams back (heartbeats are free); a stream that's cut short only bills for what was delivered.