Your API can own
every identity flow.
One identity platform for people, teams, and services. One API handles multi-tenancy, machine credentials, and signed identity events as first-class operations.
- POST /v1/organizations201
org_acmeorganization created - POST /v1/organizations/org_acme/invitations202
inv_8d2fmember invited - POST /v1/organizations/org_acme/api_keys201
key_live_7f3aorg-scoped key issued - EVENT user.created
evt_01J5K8M9N2delivered to your webhook
Model identity the way your product actually works.
Users belong to organizations, services authenticate with scoped credentials, and agents act on behalf of real users. Every identity action becomes an auditable event. AuthPI keeps this in one model — no stitching together disconnected services.
Built to be managed through code.
Configure everything through the Core API, use standards at runtime, and react to changes via webhooks — without treating a dashboard as the source of truth.
Create issuers, clients, organizations, and credentials through the Core API.
Use OAuth 2.0 and OIDC at each issuer's runtime endpoints — standard tokens, standard validation.
Subscribe to identity events through webhooks instead of polling for changes.
Typed TypeScript and Python SDKs, generated from the same API schema.
import { AuthPIAdmin } from "@authpi/admin";
const admin = new AuthPIAdmin({
apiKey: { id: process.env.AUTHPI_KEY_ID!, secret: process.env.AUTHPI_KEY_SECRET! },
});
const iss = admin.issuer("iss_authpi");
// One model: a tenant, a member, and a scoped machine credential.
const org = await iss.organizations.create({ name: "Acme", type: "business" });
await iss.organization(org.id).invitations.create({
email: "amir@acme.com",
role: "member",
});
const key = await iss.organization(org.id).apiKeys.create({
name: "CI pipeline",
scopes: ["users:read", "events:read"],
});
// Every change above already emitted an event to your webhooks. from authpi_admin import AuthPIAdmin
async with AuthPIAdmin(api_key=(KEY_ID, KEY_SECRET)) as admin:
iss = admin.issuer("iss_authpi")
# One model: a tenant, a member, and a scoped machine credential.
org = await iss.organizations.create({"name": "Acme", "type": "business"})
await iss.organization(org.id).invitations.create({
"email": "amir@acme.com",
"role": "member",
})
key = await iss.organization(org.id).api_keys.create({
"name": "CI pipeline",
"scopes": ["users:read", "events:read"],
})
# Every change above already emitted an event to your webhooks.
Real @authpi/admin · authpi-admin calls — copy, run, ship.
One API for your entire identity layer
Users, organizations, sessions, credentials, and events — managed through a single API.
Users & Sessions
CRUD + PortalFull user lifecycle with a branded self-service portal. Users manage their own profile and credentials — less code for you.
Organizations
Multi-TenantNative multi-tenancy with custom domains per issuer and SSO per organization. Custom org types, flexible fields, and metadata.
Social & Enterprise SSO
OAuth / OIDCGoogle, GitHub, Microsoft, Apple included. Connect any OIDC provider for enterprise single sign-on.
Passkeys
WebAuthnPasswordless authentication that syncs across devices. Phishing-resistant by design — built on WebAuthn.
Webhooks
CloudEvents90+ event types covering every identity action. Signed payloads, automatic retries, and guaranteed delivery.
API Keys
M2MMachine-to-machine auth scoped to organizations. Rate limits, rotation, and instant revocation when needed.
Personal Access Tokens
User-OwnedLet users create their own tokens for CLI tools and scripts. You control the scopes, they manage the rest.
Global runtime. Regional identity data.
Each issuer is globally distributed. When a user signs up, their PII is placed in the regional storage location nearest them — deliberate data placement, not replication tricks or compliance theater.
Globally reachable runtime
Token issuance, JWKS, and OAuth/OIDC endpoints respond from the edge location nearest each request. Every issuer is reachable everywhere.
Regional identity data
User PII is written to a single regional store at signup — across the US, Europe, Asia-Pacific, the Middle East, and South America — and stays there.
Honest about boundaries
European users can be pinned to EU-jurisdiction storage. Concrete placement and routing you can read — not a blanket “compliant everywhere” claim.
Let users sign in however they want
Any combination. Social for consumers, enterprise SSO for B2B, passkeys for the security-conscious.
Social Logins
Google, GitHub, Microsoft, Apple. Users sign in with accounts they already have.
Enterprise SSO
Connect Okta, Azure AD, or any OIDC provider. Your enterprise customers expect it.
Passkeys
No passwords, no phishing. Syncs across all their devices, backed by the platform authenticator.
Magic Links
One click in their inbox, they're signed in. Simple, secure, no password to forget.
Passwords
When you need them. Industry-leading hashing, breach detection, strength requirements.
Two-Factor Auth
TOTP codes from any authenticator app, plus backup codes for recovery.
API keys and tokens, sorted
Two credential types for two use cases. API keys for your services, personal tokens for your users' scripts.
API Keys
Organization-scopedFor backend services and integrations. Scoped to organizations so each tenant's keys only access their data.
- — Rate limits that alert before they block
- — Rotate secrets without breaking integrations
- — Block instantly when something goes wrong
- — Every verification logged for audit trails
Personal Tokens
User-ownedFor your users' CLI tools and scripts. They create tokens in their settings, you define what scopes are available.
- — Built for CLI tools and automation
- — You define scopes, users pick what they need
- — Users create and revoke their own tokens
- — Get notified when tokens are used or revoked
Identity changes arrive as events.
Every meaningful change emits a signed event with full issuer and organization context — delivered to your webhooks with retries and at-least-once guarantees. Not a polling job.
An organization is a product resource
Organizations are built into the core, not bolted on. Each issuer gets its own portal with custom domains, and organizations support SSO out of the box.
Organization Types
Business, nonprofit, government, agency — define types that match your domain. Each can have different defaults.
Invitations
Email invitations that work. Approval workflows, expiration, resend, revoke — all the edge cases handled.
Domain Auto-Join
Users with @acme.com emails join the Acme org automatically. Enterprise onboarding without the friction.
Roles & Permissions
Define what each role can do. Users can have different access in different organizations.
Custom Fields
Store whatever data you need on organizations. Industry, plan tier, Salesforce ID — 100 fields available.
Session security, on by default
Refresh-token reuse is detected, the session is killed, and you get an event. Device patterns are tracked, timeouts are enforced, and revocation is one API call. Strong defaults you don't have to wire up.
Stolen Token Detection
RFC 6819 §5.2.2.3If a refresh token is used twice, we kill the session immediately. Stolen tokens are useless tokens.
Device Fingerprinting
Per-SessionTrack which devices access each account. Spot suspicious patterns before they become incidents.
Session Timeouts
ConfigurableSet idle timeouts, absolute limits, or extend sessions based on activity. Your rules, enforced automatically.
Instant Revocation
One API callOne API call to log out a user everywhere. One call to revoke an entire organization. Incident response without a runbook.
Refresh token reused? Session killed. You get a webhook. Attacker gets nothing.
Whatever you're building
From a single API to a multi-party platform — the same primitives model both people and machines.
API-first SaaS
Multi-TenantYour product is an API whose customers are companies. Organizations, memberships, and scoped keys are primitives — multi-tenancy in days, not quarters.
- Organizations & memberships
- Domain auto-join onboarding
- Webhook-driven provisioning
- Org-scoped API keys
Developer platforms
Multi-PartyYou host other people's services and integrations. Dedicated identity per tenant, machine-to-machine auth, and per-party event routing with full isolation.
- One issuer per tenant
- M2M credentials built in
- Events routed per party
- Complete data isolation
AI-native products
Human + MachinePeople and agents both call your API. Personal tokens for users, scoped credentials for services, and agents that act on behalf of a user — in one identity model.
- Personal access tokens
- Scoped machine credentials
- Agents acting for a user
- Every action emits an event
Open standards, no lock-in
Standard protocols mean your existing tools just work. Switch providers anytime — your integration code stays the same.
Metadata Everywhere
Attach JSON to any resource — users, orgs, sessions. Store your Stripe ID, Salesforce ID, whatever you need.
OpenAPI Spec
Full API reference you can import into Postman, Insomnia, or your code generator of choice.
TypeScript Types
Every request and response fully typed. Catch integration bugs at compile time, not runtime.
Designed to be measured
We'd rather publish numbers than adjectives. Three reproducible benchmarks are in progress — each with its method, sample sizes, and test dates disclosed when we publish.
Coding-agent integration
IN PROGRESSFrom an empty API to a tested, multi-tenant identity model.
- — Median successful completion time
- — Success rate across repeated runs
- — Human interventions & token cost
Global token latency
IN PROGRESSPredictable token issuance as a user's organization memberships grow.
- — p50 / p95 / p99 from multiple regions
- — Token issuance, refresh, and JWKS
- — Cold vs. warm, with sample sizes
Event delivery
IN PROGRESSDurable webhook delivery you can reason about.
- — Median & p99 delivery delay
- — First-attempt success rate
- — Recovery after a simulated outage
From first API to multi-tenant platform
Create an account, grab your API keys, start building. Users, organizations, and machine credentials in one model — no credit card, no sales calls, no friction.