Every action available in the Developer Console is available programmatically: no hidden functionality, no UI-only features. Authenticate with API keys, react to changes with webhooks, and integrate hierarchical access control into your application.
Most APIs manage users and roles. Canopy's API models real organizational structure, evaluates permissions across hierarchies, and enforces access consistently across tenants.
You still write, and maintain, the authorization layer.
Your app asks Canopy: the authorization logic lives here.
Manage hierarchies, assign roles at specific nodes, evaluate permissions in real time, and build permission-aware features. Standard JSON, predictable responses, versioned endpoints.
Authenticate server-to-server requests with API keys. Each key carries scopes that limit what the integration can do, and plugs directly into the same authorization model as your identities.
cnpy_8f2a··········e91cnpy_3d77··········a04Subscribe to events (an identity created, a role assigned at a node, a hierarchy change) and receive HTTP callbacks the moment they happen. Trigger workflows without polling, with retries and exponential backoff for reliable delivery.
Who performed it, what changed, and when it happened. Use audit logs for debugging access issues, tracking changes over time, and compliance reporting.
A typical integration wires four steps together, then every access decision is a single API call away.
Provision users through the API as they join your application.
Place each identity at the hierarchy node where they belong.
Use Canopy's hosted login, or bring your own identity provider.
Ask Canopy "can this user do X at node Y?" on every request.
Your application doesn't implement access logic. It asks Canopy.