Skip to main content
Permify provides two interfaces for interacting with its authorization engine:
  • REST — available on port 3476
  • gRPC — available on port 3478 (see the Buf Schema Registry)

Base URL

All REST endpoints follow this pattern:
http://localhost:3476/v1/tenants/{tenant_id}/...
If you are not using multi-tenancy, use the pre-inserted default tenant t1.

Authentication

Permify supports two authentication methods:
  • OpenID Connect — validate JWTs issued by any OIDC provider
  • Pre-Shared Keys — static bearer tokens for service-to-service calls
Both methods are configured via flags or a YAML configuration file. Once enabled, every request must carry a Bearer token in the Authorization header.
Authorization: Bearer <token>
See Configuration Options for setup details.

Services

Permission

Check access, look up entities and subjects, and expand permission trees.

Schema

Write, read, and list authorization schema versions.

Data

Write and read relationship tuples and attributes, and delete authorization data.

Tenancy

Create, list, and delete tenants for multi-tenant deployments.

Bundle

Define and execute reusable data bundles tied to application events.

Watch

Stream real-time change events from the authorization data store.

Core Workflow

  1. Model — write your authorization schema with Write Schema
  2. Sync — write relationship tuples and attributes with Write Data
  3. Check — evaluate access with Check API
  4. Query — find all authorized entities with Lookup Entity or all authorized subjects with Lookup Subject
  5. Audit — expand permission trees with Expand API
  6. Clean — remove stale data with Delete Data
  7. Watch — react to changes in real time with Watch API

Snap Tokens

Write operations return a snap_token. Pass this token in subsequent read or check requests via the metadata.snap_token field to ensure you read your own writes and avoid stale cache responses.

Rate Limits

The default rate limit is 100 requests per second, enforced with a Token Bucket algorithm. This can be adjusted in your configuration file.

Latency

With the recommended architecture, Permify targets 7–12 ms p99 latency. Under high load with caching enabled, expect up to 30 ms. See Cache Mechanisms for tuning guidance.

SDKs

Service Mesh Compatibility — Permify communicates over standard gRPC and HTTP, making it compatible with service meshes such as Istio. You will need to configure traffic management rules manually within your mesh.

Build docs developers (and LLMs) love