WardenAuth
AuthorizationAgent SecurityDocsPricingCompareBlogLearn
Sign inStart free
5-minute quickstart

Get started in 5 minutes

From zero to checking permissions in production. No infrastructure to provision, no policy language to learn. Just an API key and a few lines of code.

1

Register and get your API key

Self-serve registration. No credit card. You get an API key immediately.

# Register your organization
curl -X POST https://api.wardenauthz.com/v1/register \
  -H "Content-Type: application/json" \
  -d '{"orgName": "acme", "adminEmail": "you@acme.com", "adminPassword": "..."}'

# Response: { "apiKey": "sk_abc123..." }
# Save this key — it will not be shown again.
2

Create a scope (tenant workspace)

Scopes isolate your customers' RBAC configurations. Each customer gets their own scope.

curl -X POST https://api.wardenauthz.com/v1/scope \
  -H "X-API-Key: sk_..." \
  -H "Content-Type: application/json" \
  -d '{"id": "acme-corp", "name": "Acme Corporation"}'
3

Create permissions and roles

Define what actions can be performed on what resources, then bundle them into roles.

Create permissions
# Invoice CRUD permissions
curl -X POST .../v1/scope/acme-corp/permission \
  -d '{"id": "inv-read", "resource": "invoice", "action": "read", "effect": "allow"}'
curl -X POST .../v1/scope/acme-corp/permission \
  -d '{"id": "inv-create", "resource": "invoice", "action": "create", "effect": "allow"}'
curl -X POST .../v1/scope/acme-corp/permission \
  -d '{"id": "inv-delete", "resource": "invoice", "action": "delete", "effect": "allow"}'
Create role
curl -X POST .../v1/scope/acme-corp/role \
  -d '{"id": "admin", "name": "Admin", "permissions": ["inv-read","inv-create","inv-delete"]}'
4

Assign role to a user

Bind a subject (user ID) to a role within a scope.

curl -X POST .../v1/scope/acme-corp/access-policy \
  -d '{"subjectId": "user_123", "roles": ["admin"]}'
5

Check access from your app

One API call in your application code. Returns the decision and the reason.

TypeScript
import { WardenAuth } from '@ecarrizo2/wardenauthz-js'
const client = new WardenAuth({ apiKey })
const { allowed } = await client.access.check({
  subjectId: 'user_123', scopeId: 'acme-corp',
  resource: 'invoice', action: 'delete',
})
Go
import ac "github.com/ecarrizo2/wardenauthz-go"
client := ac.NewClient(ac.ClientConfig{APIKey: key})
result, _ := client.Access.HasAccess(ctx, ac.AccessCheckInput{
  SubjectId: "user_123", ScopeId: "acme-corp",
  Resource: "invoice", Action: "delete",
})

Ready to start?

Self-serve registration. 50,000 checks/month free. No credit card required.

Start free Full API reference →
© 2026 WardenAuth · Built by Ezequiel Carrizo
AuthorizationAgent SecurityPricingUse casesDocsCompareBlogLearnChangelogStatusGlossarySecurityAboutContactTermsPrivacyDPA