The states
The state belongs to one environment. A Development link never counts as linked, or as a conflict, in Production.
Link
The person links the account. Nothing else can.- Your page shows the offer to a person you have just signed in, with your stable user ID in
platform-user-ref. See Quickstart. - The person taps Link with BotShield ID. BotShield names your platform, and the person confirms with their passkey in the BotShield app. The passkey prompt never appears on your page.
- The account is linked.
Store the
handle beside your user. Match it to your user through the request_id on gate.human_verified, which is the request your page started.
When a link is refused
An active link is never overwritten. On your platform one BotShield ID links one account, and one account is linked to one BotShield ID.
A refused link arrives as
botshield:failure on the page and gate.unavailable on your webhook. See Token and webhooks.
Check the status
Ask at any time, without a tap:- In the page: the widget fires
botshield:presencewith{ state, fresh_until }on every change. - On your server:
GET /secured-accounts/statuswith your API key returns the same answer. See Server API. - On every pass: the token’s
trustedclaim is the signed answer at that moment.
Unlink
A link ends in one of four ways. Each sendsaccount.unlinked with the account’s handle.
Whoever ends it, BotShield also removes your company’s agents for that person in the same environment, moves open widgets for the account to
none, and tells the person in the app.
Unlink when a sign-in detail changes
The link says a live human runs this account. When the account’s email, password, phone number or MFA changes, that statement has to be made again. Call:Link again
An unlinked account is an ordinary account. The person links it again from your page, exactly as the first time. The handle is the same when the same person links it again, so your stored handle still matches. The new link has a new linked date, and you receiveaccount.secured and gate.human_verified with first_time: true again.
A person cannot link an account from the app alone. The request always starts on your page, where your sign-in shows which account it is.
Your responsibilities
Next steps
Server API
Status, list and revoke with your API key.
Staying in sync
The live widget, webhooks and the token together.
Token and webhooks
Every claim and event field.
Managing accounts
The Console registry and what the person controls.
