https://api.vulcx.xyz) — /quote,
/swap, /instructions, and /price all work with no key. Without one, you’re on a small shared
anonymous budget of 2 cost units/second; send a key and you get your plan’s own budget — 20 cost
units/second on Free, more on paid plans. Keys
look like vulcx_ followed by a long hex string, and you send them in the standard Authorization: Bearer header (or as a ?key= query parameter).
The WebSocket stream is the exception:
GET /api/v1/stream always requires a key, passed as
?key= since a browser WS handshake can’t carry custom headers, and the key’s plan must include
stream connections. See WebSocket streaming below.Getting a key is worthwhile even on Free: anonymous access is capped at 2 cost units per second,
burst 20, against the 20/40 a Free key gets (see Rate limits), and a
key is what gives you your own budget rather than a bucket shared with every anonymous caller on
your IP. Paid plans raise the budget and add stream connections.
Get an API key
1
Create a key
Sign in to the portal with Google or GitHub and create a key. It works against mainnet
immediately on the Free plan; upgrade there when you need a larger budget or the stream.Need something the plans don’t cover? Ask on Telegram.
Open the Vulcx Portal
Keys, per-key fee defaults, usage and earnings.
2
Store it as an environment variable
Never hard-code a key in source. Keep it in an environment variable:
Authenticate a request
Send your key in theAuthorization header on every request:
SDK
The SDK takes the key directly — you don’t set headers yourself.SDK
WebSocket streaming
Browsers can’t set custom headers on a WebSocket connection, so the streaming endpoint accepts the key as akey query parameter instead:
Keep your key secret
- Server-side keys stay on the server. Don’t commit keys to git or ship them in a public repo.
- Browser usage exposes the key in client code. For client-side embeds, use a key you’ve provisioned for that purpose and rotate it if it leaks.
- Rotate compromised keys by requesting a new one and retiring the old.
Errors
The SDK surfaces these as
AuthError — see SDK error handling. For
throughput limits — including the tighter anonymous-tier limit — and the 429 response, see
Rate limits.