Every authenticated endpoint expects a bearer token:
Getting a token
Call Login with the email and
password you registered with:
Use data.token as the bearer credential on every subsequent call — the
onboarding endpoints (business info, representative, documents…) and
the service-call endpoints (virtual accounts and transfers) all check the
exact same token.
This token currently gates everything — the API key described below
does not. Read on before you build anything long-running against this.
Token lifetime — read this before you integrate
expires_in is seconds, and today that’s 7200 (2 hours) by default. There
is no refresh-token endpoint. When a token expires, requests fail with
401 Unauthenticated and the only way to get a new one is to call
Login again with your email and password.
For a quick dashboard session this is normal. For a server-to-server
integration that needs to keep working unattended, it means your backend
needs one of:
- a small wrapper that catches
401s and transparently re-authenticates
with a stored email/password before retrying, or
- a scheduled re-login every ~90 minutes to keep a warm token on hand.
Neither is how most bank APIs expect you to integrate, and it does mean
your service needs to hold your login password in a place your own backend
can read it. We’re calling this out explicitly rather than letting you
discover it the first time a long-running job 401s at 2am.
About the API key endpoint
Issue an API Key exists and
returns a real-looking sk_live_... / sk_sandbox_... secret. As of this
writing, no endpoint actually checks this key for anything — every
endpoint, including the ones you’d expect a static key to protect, only
accepts the login-issued bearer token above. Don’t build an integration
that authenticates with this key; it won’t work in production today.
If you’re seeing this and are a Rex-side reader: this is the one thing in
this whole reference worth resolving before onboarding an external partner —
either wire the key into the baas.partner.auth guard as a real
alternative credential, or pull the endpoint until it’s ready. Shipping a
secret key that silently does nothing is worse than not offering one.
Sandbox vs. live tokens
Your account has one environment setting (sandbox or live), switched
with Switch Environment. A
token is valid regardless of environment — it’s the account-level
environment field that decides which ledger your service calls hit, not
the token itself. See Sandbox vs. Live for the
full picture.
Two-factor authentication
You can require a second factor on login via
Toggle Two-Factor Authentication.
This reference doesn’t yet cover the 2FA challenge flow in detail — if
you’ve enabled it, reach out to support for the exact request shape.