1. Docs
  2. API Reference
REST · JSON · v1

Canopy Public API

v1.0OpenAPI 3.0 All systems operational

A predictable, resource-oriented REST API for managing identities, organizational hierarchy, and hierarchical permissions. Every endpoint returns JSON, uses standard HTTP verbs, and is scoped to a single Application and Environment.

Base URLhttps://auth.canopy-io.com/api/v1

Authentication

Bearer TokenOption A
Authorization: Bearer <token>

Used for user-delegated actions via OAuth 2.0 flows.

API KeyOption B
X-API-Key: <your_api_key>

Used for server-to-server communication. Include in the header of your requests.

Your first request

Minimal working example: list identities in your account.

bash — your-terminal
curl -H "X-API-Key: $CANOPY_API_KEY" https://auth.canopy-io.com/api/v1/identities
200 OK application/json
{
  "items": [
    {
      "id": "8f14e45f-ceea-467a-9b36-2c0b6f1c3e21",
      "email": "alex@acme.com",
      "first_name": "Alex",
      "last_name": "Rivera",
      "is_active": true,
      "created_at": "2026-06-28T14:02:11Z"
    }
  ],
  "pagination": {
    "page": 1,
    "take": 20,
    "item_count": 1,
    "page_count": 1,
    "has_previous_page": false,
    "has_next_page": false
  }
}

Response envelope

Every response follows one of a small set of predictable shapes, keyed by the top-level field.

Returns one resource wrapped in data .
{
  "data": {
    "id": "2c6a9b1e-7f3d-4a58-8e21-5b9c0d4f6a13",
    "name": "Acme Realty",
    "created_at": "2026-04-04T01:23:45.678Z"
  }
}

Errors

Errors use standard HTTP status codes and a consistent envelope. Use the code field for programmatic handling and message as the English fallback for display.

{
  "error": {
    "statusCode": 404,
    "code": "hierarchy.node_not_found",
    "message": "Node not found",
    "timestamp": "2026-04-04T01:23:45.678Z",
    "path": "/api/v1/nodes/3f2a1b9c-7d4e-4c8a-b6f5-0e9d8c7b6a51",
    "method": "GET"
  }
}
Error code Message
400Validation failed: see details
401Missing or invalid credentials
403Authenticated, but lacks permission
404Resource does not exist
429Rate limit exceeded: see Retry-After header
500Unexpected server error

Conventions

Pagination
Page with page & take (max 100). List responses carry a pagination block.
Timestamps
All datetimes are ISO 8601 in UTC, e.g. 2026-06-28T14:02:11Z.
Idempotency
Creates that accept an Idempotency-Key say so on their reference page. Send one to retry without creating duplicates: a matching retry replays the response for 24 hours; the same key with a different request is refused with 422.
Environments
Credentials resolve to a single Environment. They never cross the prod / test line.

Browse endpoints

Endpoints are grouped by resource. Jump into any group to see request parameters, schemas, and live examples.

API Keys5 endpoints

Issue, list, and revoke the keys that authenticate machine-to-machine access.

GETPOSTPATCHDEL
Assignments8 endpoints

Bind roles to identities at any node in the hierarchy, and remove them.

GETPOSTPATCHDEL
Audit Events6 endpoints

Query the immutable, append-only log of every change across your Application.

GETPOSTDEL
Branding2 endpoints

Read and change the hosted-page branding an Environment signs people in with.

GETPATCH
Changes1 endpoint

Stream the incremental change feed to keep an external system in sync.

GET
Hierarchy Schema2 endpoints

Read and evolve the node-type schema that defines your org structure.

GETPATCH
Identities22 endpoints

Create and manage identities and their effective permissions.

GETPOSTPATCHDEL
Identity Invites6 endpoints

Invite identities by email, track pending invites, and revoke outstanding ones.

GETPOSTDEL
Nodes12 endpoints

Build and reshape the organizational tree: create, move, and prune nodes.

GETPOSTPATCHDEL
OAuth Clients12 endpoints

Register and manage the OAuth clients behind hosted sign-in, with an API key.

GETPOSTPATCHDEL
Organizations58 endpoints

Group identities into customer tenants, each with its own members, invitations, sign-in policy, and directory connection, and let a tenant's own administrators read and grant access at the places beneath it.

GETPOSTPUTPATCHDEL
Permissions9 endpoints

Browse the permission catalog and evaluate authorization decisions.

GETPOSTPATCHDEL
Roles7 endpoints

List built-in roles and define custom ones from the permission catalog.

GETPOSTPUTPATCHDEL
Webhooks7 endpoints

Subscribe to events and receive signed, real-time delivery to your endpoint.

GETPOSTPATCHDEL

Machine-readable API

Everything in this reference is generated from OpenAPI 3 documents you can fetch directly. Point a code generator, your own tooling, or an AI agent at the same source the docs are built from.

Ready to build?
Jump into any resource group above, or start with the most common first integration.
Browse endpoints
Environment
API version
v1.0
On this page Was this page helpful?

Tell us how we can improve this guide.