Onboarding and auth

Start claiming a provisional workspace (email OTP)

POST
/v1/orgs/{org_id}/claim/start

First half of attaching a human owner to an anonymously minted workspace. Org-key authed — holding the workspace's key is the possession proof that decides who may attach an owner. The org must be provisional and unclaimed. Emails a six-digit OTP with a 5-minute expiry to owner_email; 10 requests per minute.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

An organization API key. Its scopes decide what it may call; decision:shadow is the narrowest: SHADOW evaluations through POST /v1/authority/grants or its alias POST /v1/authority/enforce-and-bind only (DECISION_SHADOW_MODE_DENIED in any other mode; DECISION_SHADOW_FIELD_DENIED for a body carrying context.decionis_policy, evidence or escalation), with no integration dispatch. A key whose only scope is decision:shadow (an AgentSafe hosted gateway's) reaches exactly those two, POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm and POST /v1/hosted-gateway/keys/revoke-self; every other route answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED. decision:enforce is an enforced hosted gateway's key: evaluations in SHADOW or ENFORCEMENT through POST /v1/authority/grants or its alias (400 DECISION_ENFORCE_FIELD_DENIED for a body carrying context.decionis_policy; it never holds policy:write), and the grants and managed escalations they bind. A key whose scopes are decision:enforce (with or without decision:shadow) reaches exactly POST /v1/authority/enforce-and-bind, POST /v1/authority/grants, GET /v1/authority/grants/{grant_id}, POST /v1/authority/grants/{grant_id}/claims, POST /v1/authority/grants/{grant_id}/receipts, POST /v1/authority/grants/{grant_id}/reconciliations, POST /v1/execution/verify-token, POST /v1/execution/claim-token, POST /v1/execution/consume-token, POST /v1/execution/finalize-token, GET /v1/authority/escalations/{escalation_id}, DELETE /v1/authority/escalations/{escalation_id}, POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm and POST /v1/hosted-gateway/keys/revoke-self, each id a UUID; every other route answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED.

In: header

Path Parameters

org_id*string
Formatuuid

Request Body

application/json

owner_email*string
Formatemail
Lengthlength <= 200

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/orgs/497f6eca-6276-4993-bfeb-53cbbbba6f08/claim/start" \  -H "Content-Type: application/json" \  -d '{    "owner_email": "user@example.com"  }'
{  "verification": {    "channel": "email",    "owner_email": "user@example.com",    "expires_at": "2019-08-24T14:15:22Z",    "email_sent": true,    "email_delivery_mode": "string"  }}

Mint a provisional anonymous workspace and API key POST

Zero-human onboarding entry point. Mints a provisional workspace, its org API key, and a seeded shadow-mode default policy — no account, no email. Hard caps: 10 requests per minute, 5 provisional workspaces per network per 24 hours, and an exploration allowance of 50 governed decisions per month. The raw key is returned exactly once. Every dossier a provisional workspace mints carries a SIGNED issuer_context tier of "provisional_anonymous" inside the dossier claims, so a verifier can always distinguish it from an owned org's dossier. Claiming (POST /v1/orgs/{org_id}/claim/start then /claim/verify) attaches a human owner; the key and the dossier ledger survive the claim. The workspace is stamped with what the caller's User-Agent says about where it came from and nothing else: the product and version, and for the open-source runtime's `agent-safe-pipeline/<version> (repo=<owner/name>; example=<name>; surface=github)` form and Govern's `govern/<version> (example=govern@<version>; surface=<runner>; repo=<owner/name>)` form, the repository, example and surface. The stamp is accounting for the acquisition funnel; it is never decision input and never verified.

Finish claiming a provisional workspace POST

Second half of the claim: org-key authed, with a timing-safe check of the emailed OTP (3 attempts per challenge). Attaches an existing account by email or creates one — a new account requires a password so the claimed identity can sign back in. The claim is atomic; the API key and every dossier minted before the claim survive. 10 requests per minute.