Skip to main content

Cloud PDP Capabilities

Short answer: The Cloud PDP is the managed policy decision point (PDP) that Permit.io runs at cloudpdp.api.permit.io. Use it when you want no PDP containers to operate, your policies use RBAC and ReBAC, and your request rate fits its limits. Don't use it when you need ABAC, custom Rego, the all-tenants check, local APIs, or no built-in rate limits.

FactValue
Policy modelsRBAC, ReBAC, and multi-tenant authorization. ABAC and custom policy as code need an Edge PDP.
DeploymentManaged by Permit, served over HTTPS at https://cloudpdp.api.permit.io.
Check APIs/allowed, /allowed/bulk, /user-permissions, /authorized_users, and the AuthZen evaluation and search endpoints.
Rate limitsPer client IP address over a 1-minute window: 1000 req/min for /allowed, and 3000 req/min across all requests.
SDK languagesNode.js, Go, .NET, Java, Python, and Ruby SDKs, plus generated PHP, Kotlin, Erlang, and C++ API clients. See SDK feature parity.
Free tierCommunity plan, labeled "Free Forever" on the Permit.io pricing page: MAU 1000, Tenants 20, Authorization Queries No Limit, Environments 3, PDP Instances No Limit.
AuditDecision logs appear on the Audit Log screen, in the same format as logs from an Edge PDP.
Open-source counterpartThe Edge PDP, permitio/PDP. The Cloud PDP is a managed service.

Look up what the Permit Cloud PDP supports: policy models, permission check APIs, rate limits, and observability. This page is for developers who decide between the Cloud PDP and a self-hosted Edge PDP, or who hit a Cloud PDP limit.

What is the Cloud PDP?​

The Cloud PDP is the managed policy decision point (PDP) that Permit.io runs in its own infrastructure. The Cloud PDP serves authorization decisions over HTTPS at https://cloudpdp.api.permit.io. It exposes the same permission check APIs as an Edge PDP (the permitio/pdp-v2 container you run), so an SDK connects to the Cloud PDP by setting the PDP URL.

Use the Cloud PDP when you don't want to run, upgrade, or scale PDP containers.

Use an Edge PDP when you need attribute-based access control (ABAC), control over network placement, or container-level configuration.

Supported policy models​

Policy modelCloud PDPEdge PDP
Role-based access control (RBAC)SupportedSupported
Relationship-based access control (ReBAC)SupportedSupported
Multi-tenant authorizationSupportedSupported
Attribute-based access control (ABAC)Not supportedSupported
Custom policy as code (custom Rego through GitOps)Not supportedSupported

The Cloud PDP and an Edge PDP evaluate the same policy model from your Permit project. The difference is where the PDP runs and which runtime features you configure yourself.

Not supported on Cloud PDP​

  • ABAC: use an Edge PDP.
  • Custom policy as code: use an Edge PDP with GitOps.

Supported permission check APIs​

The Cloud PDP serves these permission check APIs for the policy models above. The SDKs call these endpoints for you, so most applications use SDK methods instead of HTTP requests.

QuestionHTTP endpointDocs
Can this user perform this action on this resource?POST /allowedCheck (permit.check())
Several checks in one requestPOST /allowed/bulkBulk check
What can this user do?POST /user-permissionsUser permissions
Which users can perform this action on this resource?POST /authorized_usersAuthorized users

AuthZen API endpoints​

The Cloud PDP implements the OpenID AuthZen Authorization API 1.0 evaluation and search endpoints:

AuthZen operationHTTP endpoint
Access evaluationPOST /access/v1/evaluation
Bulk access evaluationsPOST /access/v1/evaluations
Subject searchPOST /access/v1/search/subject
Resource searchPOST /access/v1/search/resource
Action searchPOST /access/v1/search/action

APIs available only on an Edge PDP​

The Cloud PDP doesn't serve these APIs. A call to them requires an Edge PDP:

Rate limiting​

The Cloud PDP applies rate limits to protect the shared service. You don't configure the limits.

Rate limits​

The Cloud PDP counts requests per client IP address over a 1-minute window. When a client exceeds a limit, the Cloud PDP returns HTTP 429 Too Many Requests.

EndpointMethodLimit
/allowed/bulkPOST200 req/min
/access/v1/evaluationsPOST200 req/min
/access/v1/search/*POST300 req/min
/user-permissionsPOST500 req/min
/authorized_usersPOST500 req/min
/allowedPOST1000 req/min
/access/v1/evaluationPOST1000 req/min
All POST requestsPOST1500 req/min
All requestsAny3000 req/min

When a client exceeds a rate limit, the response body is:

{
"error": "rate_limited",
"message": "You have exceeded the rate limit. Please try again later."
}
Shared public IP addresses

The limits are set to accommodate corporate networks where many users share one public IP address. If a large deployment behind a shared IP address receives 429 responses, email support@permit.io.

Handle 429 responses​

When your application receives an HTTP 429 response from the Cloud PDP:

  1. Check the response body. An "error": "rate_limited" body confirms a rate limit, not an application error.
  2. Retry with backoff. Wait a few seconds, then retry the request.
  3. Reduce concurrency. If several services share one public IP address, reduce their parallel requests, or use /allowed/bulk to combine checks.

If your workload needs a higher request rate than these limits, run an Edge PDP. An Edge PDP has no built-in rate limits.

Observability and logs​

  • Decision logs: the Cloud PDP sends decision logs to Permit. They appear in the Audit Logs screen and the audit log APIs in the same format as logs from an Edge PDP.
  • Debug Mode: Debug Mode adds context to decision logs. For the Cloud PDP, you enable Debug Mode through the PDP configuration of your environment with the Permit API. You don't run or configure a Cloud PDP container. See Debug Mode.

Not provided by Cloud PDP​

The Cloud PDP is a managed service, so it doesn't expose these container-level features:

  • A /metrics endpoint or a custom metrics sink.
  • The logs forwarder (Fluent Bit) configuration.
  • Access to the underlying OPA process, OPAL services, or internal logs.

To monitor Cloud PDP usage, use the Audit Logs screen, and add metrics and logging around the PDP calls in your application.

Data handling​

Permit manages policy and data ingestion, replication, and storage for the Cloud PDP, and operates the service: patching, upgrades, and tuning. With an Edge PDP, you own that lifecycle: image upgrades, rollout strategy, and observability stack.

The Cloud PDP reads only the data you store in Permit: users, tenants, resource instances, relationship tuples, and role assignments. You can't configure OPAL Scopes or custom data sources for the Cloud PDP.

Use an Edge PDP if you need any of these:

Cloud PDP vs Edge PDP comparison​

CapabilityCloud PDPEdge PDP (permitio/pdp-v2)
DeploymentManaged by PermitYou run and operate the container image
Policy modelsRBAC, ReBACRBAC, ReBAC, ABAC
Multi-tenant authorizationSupportedSupported
Single and bulk checks, user permissions, authorized usersSupportedSupported
AuthZen APISupportedSupported
All-tenants checkNot supportedSupported
Local APIs (/local/*)Not supportedSupported
External data through OPAL ScopesNot supportedSupported
Debug Mode configurationEnvironment PDP configuration through the Permit APIEnvironment PDP configuration, or the PDP_DEBUG environment variable per container
Logs forwarder (Fluent Bit)Not supportedSupported
Metrics and APMNot supported/metrics endpoint and Datadog APM tracing
Updates and maintenanceOperated by PermitYou manage image versions, rollouts, and maintenance
Send Consistent Updates (read-your-own-writes)Not supportedSupported with proxy_facts_via_pdp
Rate limitingBuilt in, per IP addressNone built in

When to use each PDP​

Use the Cloud PDP when:

  • You want a managed PDP without containers to operate.
  • Your policies use RBAC and ReBAC.
  • You call the standard check APIs: /allowed, /allowed/bulk, /user-permissions, /authorized_users, and the AuthZen endpoints.
  • Your request rate fits within the rate limits.

Use an Edge PDP when:

  • You need ABAC.
  • You need control over deployment topology, networks, and scaling.
  • You depend on local APIs, custom data sources, read-your-own-writes, or container-level observability.

Send a check to the Cloud PDP​

Set the SDK's PDP URL to the Cloud PDP address. Replace <YOUR_API_KEY> with your environment API key:

import { Permit } from "permitio";

const permit = new Permit({
token: "<YOUR_API_KEY>",
pdp: "https://cloudpdp.api.permit.io",
});

const permitted = await permit.check("john@permit.io", "read", "document");

The same check over HTTP goes to POST /allowed on the Cloud PDP. The response body has "allow": true when the user is permitted:

curl -X POST https://cloudpdp.api.permit.io/allowed \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-d '{"user": "john@permit.io", "action": "read", "resource": {"type": "document", "tenant": "default"}}'

Frequently asked questions​

Does the Cloud PDP support ABAC?​

No. The Cloud PDP evaluates RBAC and ReBAC policies. For ABAC, run an Edge PDP.

Can I use the Cloud PDP in production?​

Yes, for RBAC and ReBAC workloads. Keep the request rate within the rate limits. A workload that needs a higher request rate than these limits needs an Edge PDP, which has no built-in rate limits.

What are the Cloud PDP rate limits?​

The Cloud PDP counts requests per client IP address over a 1-minute window. /allowed allows 1000 requests per minute, /allowed/bulk allows 200, and all requests together allow 3000. A client over a limit receives HTTP 429 with "error": "rate_limited".

What do I do when the Cloud PDP returns HTTP 429?​

Retry with backoff, reduce concurrency, and combine checks with /allowed/bulk. See Handle 429 responses.

How do I connect an SDK to the Cloud PDP?​

Set the SDK's PDP URL to https://cloudpdp.api.permit.io and use your environment API key as the token. See Send a check to the Cloud PDP.

Are Cloud PDP decisions logged?​

Yes. The Cloud PDP sends decision logs to Permit. They appear on the Audit Log screen and in the audit log APIs.