api.openfx.com). Which environment you hit is determined entirely by the API key you authenticate with — each key is bound to one environment server-side. Sandbox API keys carry a sandbox_ prefix; Live keys are unprefixed, so you can tell the two apart at a glance. Sandbox and Live use the same endpoints and code paths, but differ in real-vs-simulated funds, the key prefix, and rate limits. Code validated in Sandbox therefore follows the same API contract in Live, but its traffic pattern must also be tested against Live’s lower rate limit.
Sandbox vs Live
Sandbox’s ceiling is 2× Live’s, so code that stays comfortably under the Sandbox limit still has headroom to check against the tighter Live limit before going live. See Rate limiting for the back-off pattern.
Sample request
A Sandbox call differs from a Live call only by thesandbox_-prefixed key; everything else, including the required X-Request-Signature, is the same.
sandbox_ prefix; Live keys don’t). See Authentication for the minting flow.
Safety net: wrong-environment errors
If your key doesn’t match the environment you’re trying to reach, OpenFX rejects the request instead of silently doing the wrong thing — you can’t accidentally execute a Live trade with Sandbox credentials, or vice versa.
Both codes return
AUTHORIZATION_ERROR / 403 — the request authenticated successfully, but the key isn’t valid for this environment. Full entries live in the v3 error catalog.
Going live
The full pre-launch list lives in the Live checklist. The minimum cutover from a working Sandbox integration is:1
Swap credentials
Replace the Sandbox
name and privateKey in your secrets store with the
Live values from the dashboard.2
Update webhook signing key
Live webhook signing secrets are prefixed
whsec_ (Sandbox secrets are
sandbox_whsec_…). Point your verifier at the Live signing secret.Common mistakes
- Mixing credentials in the same process. Two key pairs (one Sandbox, one Live) stored in two distinctly-named secrets. Never read
OPENFX_KEYand hope it’s the right one. - Assuming Sandbox data persists. Sandbox may be reset periodically; don’t seed long-running test workflows with Sandbox IDs you expect to still exist next month.
- Hard-coding the base URL. It’s the same in both environments, but writing
api.openfx.comas a literal in two places will trip you up the day OpenFX adds a regional endpoint. - Load-testing only against Sandbox’s rate limit. Sandbox’s 600 req/10s ceiling is 2× Live’s 300 req/10s — a burst pattern that passes in Sandbox can still 429 on Live. Test against Live’s tighter limit before cutover, not just Sandbox’s.
What’s next
Live checklist
Full pre-launch checklist: keys, IP allowlist, monitoring.
Authentication
JWT minting flow with code samples in JS, TS, Python, and Go.
Errors
AUTH_* codes and recovery patterns.