Skip to main content
Relay enforces rate limits to keep the platform reliable for every integrator. You manage API keys in the Relay Dashboard — create new API keys, rotate existing ones, and inspect individual requests. Default limits listed below apply to self-serve API keys.

Apps and API keys

An App represents one integration, for example a product or an environment. The App owns the configuration that Relay applies to that integration: the rate limit tier, features, the webhook, IP and origin restrictions, the fee sponsorship wallet, and App Fees settings. An API key is a credential that authenticates requests for one App. All keys in an App use the App’s configuration. An App can have a maximum of two active API keys. You manage Apps and their keys in the Relay Dashboard. You need the admin role in your Dashboard organization to create Apps and keys.

Create an App

  1. Sign in to the Relay Dashboard.
  2. Open Apps in the sidebar.
  3. Click Create an App, enter a name (e.g. Production, Staging), and click Create.
Relay creates the App with its first API key, named after the App. The App page opens with the key listed under API keys, where you can copy it.

Add or rotate an API key

Rotate a key to replace it without downtime and without reconfiguration. The replacement key is in the same App, so it uses the App’s configuration immediately. The old key continues to work until you deactivate it.
  • If the App has no active key, click Create an API key under API keys.
  • If the App has one active key, rotate it:
    1. Open Apps and select the App.
    2. Under API keys, open the actions menu on the key and select Rotate Key.
    3. Click Rotate API key, then optionally rename the new key and click Save.
    4. Change your integration to use the new key. When the old key’s in-progress requests are complete, deactivate the old key from the same menu.
  • If the App has two active keys, deactivate one key first.
If your App uses a webhook, accept signatures from both keys until you deactivate the old key.
Create a separate App per environment (production, staging, local). Each environment then gets its own configuration and request history, so you can spot a misbehaving deploy without deactivating the wrong key.

Tracking requests

The Relay Dashboard is also where you observe what your integration is doing in production:
  • Requests — full history of quotes and intents for each App, with status, route, amounts, and timing.
  • Advanced filtering — narrow the table by chain, currency, amount, status, time, and more, combining conditions with AND/OR logic to isolate exactly the requests you care about.
  • Custom views — save any combination of filters, sort order, and columns as a reusable view for your team, each with its own name, icon, and color.
  • Apps — create Apps, and rename, rotate, and deactivate their API keys.
  • Webhooks — configure a per-App webhook endpoint so transaction status updates are pushed to your backend instead of polling.
When debugging a specific transaction, paste the requestId from your application into the dashboard’s search to jump straight to the matching record.

Default Rate Limits

The following limits apply per App. All API keys in the App share these limits:

Elevated Rate Limits

Higher limits are available on request. They apply per App: /requests and /requests/v2 share the 5 rps bucket; /requests/v3 has its own 20 rps bucket. /authorize is bucketed by the wallet field in the request body alongside your API key, so concurrent authorizations from different end-users don’t compete for the same bucket. The aggregate per-key ceiling still applies across all wallets and bounds total volume of the on-chain authorization path. To request higher limits, get in touch through the support widget in the Relay Dashboard.
Already hitting a limit? See Handling Rate Limits for how to recover from 429 responses and reduce your request volume before requesting an upgrade.

How to Use an API key

Quote requests that set a referrer must be authenticated: pass your API key in the x-api-key header on POST /quote and POST /quote/v2. Requests with a referrer but no valid key return 401 with errorCode: "UNAUTHORIZED_QUOTE". Starting October 2, 2026, every quote/v2 request will require a valid API key. quote/v2 remains fully supported for authenticated requests.

HTTP requests

Pass the key in the request headers on every request:

SDK usage

Proxy API

If you’re calling the SDK from the browser, stand up a proxy that appends the key server-side and point baseApiUrl at it. This keeps the key out of client bundles and keeps your App’s rate limits.

Keeping Your API key Secure

Treat your API key like a password. A person who has your key can make requests as your App. These requests use your App’s rate limits and are attributed to you.
If your key is leaked, anyone holding it can consume your rate limits or make requests on your behalf. If you think that a key is compromised, rotate it in the Relay Dashboard. Change your integration to use the replacement key. Then deactivate the compromised key. Do not activate it again.
Best practices:
  • Keep it server-side only — never expose it in client-side or frontend code. Use a proxy API if calling Relay from the browser.
  • Use environment variables — store the key in environment variables, not hardcoded in source code.
  • Don’t commit it to version control — add it to .gitignore or use a secrets manager.
  • Restrict access — only share the key with team members who need it.
  • Rotate keys — rotate a key on a regular schedule. Also rotate it immediately when a team member with access leaves.