echorelay.dev

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

CodeMeaning
202queued for delivery
401key revoked / expired
404unknown tenant / line / endpoint, or missing key
422payload failed your endpoint's validation
429over 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.

← Docs index