Authorization header. Keys are tied to your InsiteChat user account and grant access to all chatbots you own.
Creating an API Key
1
Open the Developer page
From your dashboard, navigate to Developer → API Keys.
2
Create a key
Click Create API Key, give it a descriptive name (e.g. Production Server, Staging, Zapier Integration), and click Generate.
3
Copy and store it
The full key is displayed only once. Copy it to a secure store immediately.
Key Format
API keys are URL-safe random tokens prefixed withic_:
prefix, which always starts with ic_) are shown in the dashboard so you can identify which key is which. The full key is never stored on InsiteChat servers — only its SHA-256 hash — which is why we can’t show it back to you after creation.
Using Your API Key
Include the API key in theAuthorization header of every request:
Listing Your Keys
Dashboard → Developer → API Keys shows every key on your account with:
- Name — the label you gave the key at creation
- Prefix — the first 8 characters (e.g.
ic_aBcDeF) so you can spot which key is which - Last used — the timestamp of the most recent successful API call (or Never if unused)
- Created — when the key was generated
- Active / Revoked — current state
Revoking a Key
- Find the key on the API Keys page.
- Click Revoke and confirm.
401 Unauthorized (the same response as a malformed or unknown key — there is no separate error code distinguishing the two).
Use separate keys for each environment (production, staging, dev) and each integration (Zapier, your CRM sync, internal scripts). That way revoking a leaked key only impacts one consumer.
Rate Limiting
Each API key is rate-limited to 60 requests per minute on a rolling 60-second window. When you exceed the limit, the API returns:Retry-After header — back off on a fixed schedule (e.g. wait 60 seconds before retrying).
Error Responses
The API returns standard HTTP status codes. Error bodies follow the Django Ninja default shape — a singledetail field describing what went wrong:
There is no machine-readable
code field today — branch on the HTTP status (and on the detail text if you need to distinguish rate-limit 429s from quota 429s).