LIVE and sandboxes
Sandboxes are enabled per organization. Ask your Endstate contact to turn them on.
What a sandbox isolates
Each environment has its own:- Credentials. A server key or publishable key works only in the environment it was created in. The key you send selects the environment; there is no environment header, query parameter or separate host. Existing
end_sk_keys created before environments remain LIVE keys and keep working. - Data. Units, collections and everything attached to them, including chip pairings, taps, claims and transfers. External IDs are unique per environment, so the same
external_idcan exist in LIVE and in a sandbox. - Settings. Allowed browser origins, browser tap access, the default tap redirect URL and your sign-in provider settings. A new sandbox starts with no allowed origins and browser taps disabled, and never inherits LIVE sign-in settings.
- Wallet identities. Signing in to a sandbox creates separate wallet identities, even when a person uses the same email address as in LIVE.
Manage environments
To create, rename, archive, reactivate or delete a sandbox, or to create, rotate or revoke an environment’s server keys and publishable keys, contact your Endstate contact. Environments and keys cannot be managed through the API, and no API key can create an environment or another key.- Archive a sandbox to free a slot while keeping its data, history and identity mappings. Its keys stop working for data access but can still be revoked.
- Reactivate an archived sandbox when your allowance has room for it.
- Delete a sandbox only when it has no data, credentials or identities left. Archive a populated sandbox instead.
- LIVE can be renamed but never archived or deleted.
Base URL
Send your requests to production unless your Endstate contact has set you up on staging. Staging runs separate data and separate credentials, so a production key will not authenticate there.
Developing without hardware
You can exercise the full tap flow before you have physical chips, in a sandbox or in LIVE. Pair a test chip withPOST /v1/chips (is_test: true), generate a fresh single-use e value with POST /v1/test-helpers/taps, then exchange it for a session token with POST /v1/taps. Test chips behave identically to encoded chips in every API call.
See Testing without hardware for a step-by-step walkthrough.
HTTPS
HTTPS is required. Plain HTTP requests return426 Upgrade Required.
OpenAPI spec
The OpenAPI specification is served athttps://api2.endstate.io/openapi.json.
Credentials and limits
See Organization settings for what you can read and change through the API. If you plan to call the API from a browser, two things are self-serve: your publishable key and your CORS origins. Confirm any rate limits with your Endstate contact.Next steps
Quickstart
Make your first API call end to end.
Credentials
Learn how API keys and session tokens work.

