Skip to main content
Your organization API key (chd_org_...) is the master key. It can do everything — create instances, delete them, manage billing. You absolutely should not put it in a frontend, a mobile app, or hand it to a third-party integration. That’s where scoped keys come in. A scoped key (chd_sk_...) is locked down to specific instances and specific permissions. It can only do what you allow.

Why scoped keys?

  • Frontends: Your chat UI only needs to send messages and read status. Give it read + interact, nothing else.
  • Integrations: A Zapier workflow that installs skills? Give it configure on one instance.
  • End users: Give each user a key scoped to their instance with interact only. They can chat but can’t touch config.
  • Time-limited access: Set expires_at and the key auto-revokes.

Set up

Permission reference

Here’s every permission you can assign to a scoped key:
For a typical chat frontend, ["read", "interact"] is all you need. Start minimal and add permissions only when required.

Multi-instance keys

A single scoped key can access multiple instances with the same permissions:
This is useful for admin dashboards that need to manage a fleet of instances.

Common patterns

Minimal access. Can read status and send messages. Can’t change config, manage channels, or delete anything.

What’s next?

Build a Frontend

Put that scoped key to use in a Next.js chat interface.

Connect Telegram

Wire up a messaging channel to your agent.