Choose your integration path and follow the setup for your layer. See the
Packages overview for installation, package descriptions, and peer dependencies.
All new partner apps start in testing mode — a sandboxed state that lets you build and
verify your integration without committing to the full live-mode agreement. Two hard caps apply
while an app is in testing mode:
Limit
Cap
Applies to
Users
20
Unique users who sign in to your app
Trades
100
Orders placed (excluding failed orders)
Existing users can always sign in — the user cap only blocks new account creation once the
limit is reached. No data is lost when the cap is hit.
When a new user tries to sign in and the app has already registered 20 users, the sign-in
endpoint (POST /auth/verify) returns a 403 with a plain-language message explaining the
situation. Likewise, when a new trade is submitted after 100 trades have been placed, the
execution endpoint returns a 403. Both error responses use the message field of the standard
{ message: string } error body — you can surface this text directly in your UI without any
special-casing.
// POST /auth/verify — over the user cap{ "statusCode": 403, "message": "This app has reached its testing limit of 20 users. Sign the partner agreement to enable live mode and continue adding users."}// POST /execution/fill — over the trade cap{ "statusCode": 403, "message": "This app has reached its testing limit of 100 trades. Sign the partner agreement to enable live mode and continue placing trades."}
For OAuth and magic-link sign-in flows, the same error is surfaced as a message query
parameter on the redirect URL (alongside an error=testing_user_limit_reached param your
frontend can key off).
Lifting the limits — signing the partner agreement
Once you are ready to go live, sign the partner agreement from the admin dashboard
(Apps → your app → Go Live). Signing sets partnerAgreementSigned = true on your app and
immediately removes both caps — no restart or config change needed. The agreement is a one-time
action; it cannot be reversed from the dashboard.After signing:
New users can sign in without restriction.
New trades can be placed without restriction.
Existing testing-mode users and trades are preserved; the historical counts are not reset.