Quickstart Guide
Get an authenticated request working against any Aozo product API in under five minutes.
1. Get a token
You have two options, depending on the product:
- Sign in through Central Auth — send a user to https://account.aozo.in/login?redirect=YOUR_CALLBACK_URL. After login they're redirected back to you with ?token=eyJhbG... appended — a short-lived JWT. See Authentication for the full callback flow.
- Generate a workspace API key — inside Aozo CRM or Aozo Accounting, an org ADMIN can call POST /api/organization/:id/apikeys (or use the dashboard's API Keys screen) to mint a long-lived key prefixed aozo_.... Useful for server-to-server integrations that shouldn't depend on a user session.
ℹ️ Not every product supports API keys
Aozo Chat, Projects and Teams currently only accept the Bearer JWT from step 1 — see the comparison table on the Introduction page.
2. Make your first request
Every request needs your token in the Authorization header. Here's a real call against Aozo CRM:
curl https://crm.aozo.in/api/contacts?orgId=YOUR_ORG_ID \
-H "Authorization: Bearer YOUR_TOKEN"
And the equivalent against Aozo Helpdesk, which also accepts a dedicated API-key header pair:
curl https://helpdesk.aozo.in/api/tickets \
-H "x-api-key: aozo_your_key" \
-H "x-workspace-id: YOUR_ORG_ID"
A successful response returns JSON directly — there's no envelope wrapper to unwrap:
[
{ "id": "c_123", "name": "Priya Sharma", "email": "priya@example.com", "company": "Acme Retail" }
]
3. Handle errors
| Status | Meaning |
|---|---|
| 401 | No token, or the token failed both local JWT verification and the Central Auth fallback check. |
| 403 | Token is valid, but your role doesn't have permission for this action (most write endpoints require workspace ADMIN or OWNER). |
| 404 | The resource doesn't exist, or doesn't belong to the org you're scoped to. |
4. Where to go next
Pick your product from the sidebar for the full endpoint reference, or read Authentication to understand exactly what's inside the token and how to verify it from your own backend.