cordyxRelaySign inGet started

Cordyx Relay for ER:LC

Stop handing out your server key.

Relay holds your ER:LC server key and gives every bot and developer a key of its own, with only the permissions it needs. Revoke one without touching the rest.

Free · Sign in with Discord · Works with API v1 and v2

Give each bot only what it needs.

A queue panel needs to read the queue. It doesn't need to ban anyone. Tick the data a key can read and the command groups it can run. Everything else is refused.

Know who did what.

Every call is logged with the key, what it asked for, the IP it came from and how ER:LC answered. Refused calls are logged too, so a leaked key shows up the first time someone tries it.

Change one line.

Point your bot at Relay and use the Relay key where the server key used to go. Paths, request bodies and responses stay exactly the same.

Before
const BASE = "https://api.erlc.gg/v1";
const KEY  = process.env.ERLC_SERVER_KEY;

await fetch(`${BASE}/server/command`, {
  method: "POST",
  headers: { "Server-Key": KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ command: ":h Shift starts now" }),
});
After
const BASE = "https://relay.cordyx.xyz/api/v1";
const KEY  = process.env.RELAY_KEY; // cxr_…

await fetch(`${BASE}/server/command`, {
  method: "POST",
  headers: { "Server-Key": KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ command: ":h Shift starts now" }),
});

Prefer a bearer token? Authorization: Bearer cxr_… works too.

Encrypted at rest

Your server key is stored with AES-256-GCM. The dashboard never shows it again and it never appears in a log.

Closed by default

An endpoint, data field or command that isn't on the allow list is refused before it reaches ER:LC.

Inside ER:LC's limits

Commands are spaced five seconds apart per server and identical reads are shared for five seconds, so your bots stop tripping 429s.

Lock a key to an IP

Give a key the address of the machine your bot runs on. Anywhere else, it's refused.

Keys that expire

Hand a developer a key for a week. It stops working by itself.

Export the log

Every call is kept for 30 days. Filter by key or result and download it as a CSV.

Set up in a minute.

  1. Add your serverSign in with Discord and paste your server key from ER:LC's server settings. Relay checks it with ER:LC before saving it.
  2. Make a key per botName it after the bot, tick what it may do, and copy the key. It's shown once.
  3. Swap the base URLYour bot keeps working. You watch the activity log and revoke whatever you like.

Questions

Is it free?

Yes. There is no paid plan.

Can Relay read my server key?

It has to, to make calls for you. The key is encrypted with a secret only the Relay service holds, it is decrypted only for the moment a call goes out, and nobody can view it in the dashboard, including you.

Will my bot need new code?

No. Relay answers on the same paths with the same responses as ER:LC's v1 and v2 APIs. Change the base URL and put the Relay key where the server key was.

What happens if a key leaks?

Revoke it from the dashboard. It stops working on the next request. Your server key and every other key keep working.

What if I regenerate my server key in game?

ER:LC starts refusing the old one. After three refusals Relay stops using it, so our shared IPs don't get banned, and shows a notice on the dashboard. Paste the new key and every sub-key works again.

Can a key run any command?

Only the groups you tick. Commands Relay doesn't recognise are refused for every key.

Keep your server key to yourself.

Add your server