Why this is safe
- A saved login is real account access, so Crossmint treats it as sensitive.
- Crossmint stores metadata only. A profile record is an id, your label, and timestamps. The saved browser state itself is held by our browser infrastructure as an opaque blob that Crossmint never reads.
- Its contents never reach a model. The state is loaded into the browser for that user’s checkout and nowhere else; it is never included in a prompt.
- The API returns metadata only. No cookies or tokens ever come back.
- Each run gets its own browser, released when the run finishes.
- Deleting erases the stored browser state, not just our record of it.
Quickstart
This walks the full path: create a profile, run a checkout where the user logs in, then run a second checkout that reuses that login. It reuses theBASE_URL and headers from the Agent Checkouts quickstart.
Browser profiles are scoped to one user. Identify that user with x-crossmint-user-id on a server-side key, or with the user’s JWT on a client-side key.
1
Create the profile
Create the profile once for the user. The optional The profile comes back as metadata only. Crossmint stores the browser state itself, so no cookie or token is ever returned.Store
label is for your own bookkeeping.id against the user in your own system. A user has one profile, so you create it once and reuse the id from then on.2
Run a checkout where the user logs in
Pass The profile is empty on this first run, so the merchant asks for a login and the user signs in inside the run.When the checkout finishes cleanly, the login is saved into the profile.
browserProfileId when you create the checkout. Everything else works as it does in the Agent Checkouts quickstart.3
Run a second checkout that reuses the login
Create the next checkout the same way, passing the same This run loads the saved state, so it starts signed in and goes straight to the purchase with no login prompt.The profile itself reports no login activity: what a checkout did with it is reported on that checkout, so read the checkout to see whether the run still needed a login.
browserProfileId.Manage a profile
Every browser profile route lives underhttps://www.crossmint.com/api/unstable/agent-checkouts/browser-profiles and is documented in the Agent Checkouts API reference, alongside the checkout routes. A few behaviors are worth knowing before you call them:
- A user holds at most one profile, so creating a second one returns
409and listing needs no pagination. - A profile owned by another user returns
404, not403, so an id cannot be probed for existence. - The label is the only editable field. Everything else about a profile is set by Crossmint.
- Deleting is irreversible and erases the stored browser state, not just the record. It does not cancel checkouts already running with the profile: those runs continue to completion, and erasure finishes once they end.

