POST /api/admin/orgs/:id/api-access {blocked} (orgs.api_access: owner/support, step-up, X-Admin-Reason; §8) → {orgId, apiBlocked, changed}.Staff cookie session; permission orgs.api_access; fresh password + TOTP step-up (10 minutes); X-Admin-Reason required (3–300 characters). Write requests need same-origin JSON and X-Admin-CSRF from this session.Source snapshot: admin/src/app/api/admin/orgs/[id]/api-access/route.ts. This reference describes the current working tree, not proof of deployment. The response service types and validators remain authoritative.Current-source enforcement limitation (not live-verified): setting apiBlocked is not proof that every organisation-owned token stops authenticating. In the captured checkout, http.ts policyGate skips enforceCredential for caller.orgToken, and developer.ts orgTokenCaller does not check subscription.apiBlocked. During containment, inspect and revoke affected organisation-owned keys and verify denial separately; do not rely on the block flag alone.