Authentication And Partner Keys
Vortex authenticates partners with two key types and accepts a third principal (Supabase Bearer) for first-party user flows.Public Keys#
Public keys use the pk_live_* or pk_test_* prefix. They are used for partner attribution, tracking, and partner-specific quote behavior. Public keys may be included in SDK configuration, in request bodies as apiKey, or in the ?apiKey= query string.Public keys do not authenticate sensitive partner operations. An invalid or expired public key, however, is rejected with HTTP 401 on routes that validate it — it is not silently ignored.Secret Keys#
Secret keys use the sk_live_* or sk_test_* prefix. They authenticate partner operations through the X-API-Key header.Secret keys must be treated as server-side credentials. Do not expose them in browser bundles, mobile app binaries, URLs, screenshots, analytics tools, logs, or support tickets.When a request includes partnerId (in quote creation), the API requires a matching secret key in X-API-Key. partnerId may be either the partner's UUID or its name; matching is performed by partner name. If the authenticated partner does not match the requested partner, Vortex rejects the request with HTTP 403.Ramp endpoints (/v1/ramp/register, /update, /start, GET /v1/ramp/{id}, history, errors) require authentication unconditionally — either an sk_* key OR a Supabase Bearer token. Anonymous requests are rejected with HTTP 401.Webhook endpoints require sk_* and do not accept Supabase Bearer tokens.Supabase Bearer tokens#
Some endpoints — currently /v1/brla/* — accept only Supabase Bearer tokens, not sk_*. These are intended for first-party flows where the end user has authenticated with Vortex directly. Partner SDK integrations cannot drive BRL KYC through these endpoints with only sk_* / pk_*; the user must complete onboarding through the Vortex application or hosted widget first.Recommended Handling#
Store secret keys in a secret manager or encrypted environment configuration. Rotate keys if they are exposed, no longer needed, or tied to a retired integration. Use test keys in sandbox and live keys only in production. Modified at 2026-05-16 09:38:15