Skip to main content
This is the shortest complete server-side integration path, running on the free test environment. Use the test API at https://api-staging.attesso.com with an att_test_ key. The live environment at https://api.attesso.com requires att_live_ keys, which are enabled only after linking Stripe Billing.

Prerequisites

  • An Attesso organization and test API key
  • Approval trust configured with your issuer, exact return origin, and ES256 public JWK
  • A backend that keeps both the Attesso API key and your identity-signing key secret
  • Node.js 22 or later for the shell helpers below
Never expose an Attesso API key to a browser, end user, or agent.

1. Configure the test request

Use one idempotency key per logical write. Reuse it only when retrying the same operation with the same input.

2. Create the Mandate

The response must start in PENDING_APPROVAL.

3. Collect hosted approval

Create a short-lived identity assertion whose sub equals user_$RUN_ID. The hosted approval guide includes TypeScript and Python signing examples. Read the assertion without putting it in shell history:
Create the session from your backend:
Redirect the authenticated browser to the returned approval_url without logging or storing it. After approval, retrieve the Mandate server-to-server and continue only when it is ACTIVE.

4. Authorize the concrete action

An HTTP success is not permission. The guard above fails unless can_execute is exactly true.

5. Execute, commit, and verify

Execute through your own system before execute_before. Commit only after the executor accepts the action:
The Authorization becomes COMMITTED and the Mandate becomes CONSUMED. Finish by following Verify evidence.