Aozo Projects API
Projects, tasks, boards and time tracking — the REST surface behind projects.aozo.in.
⚠️ No API key support here
Unlike CRM and Accounting, Aozo Projects only accepts a Bearer JWT — there's no aozo_-prefixed key alternative.
Organization
| Method | Path | Description |
|---|---|---|
| GET | /organization | List orgs (auto-syncs from Central Auth) |
| POST | /organization | Create an org (name) — creator becomes ADMIN |
| GET | /organization/:id | Org details, including subscription |
| GET | /organization/:id/members | List members |
| GET | /organization/:id/analytics | Task status distribution, completion leaderboard, 7-day trend |
Projects
| Method | Path | Description |
|---|---|---|
| GET | /projects | List projects (?organizationId=) — scoped to your membership unless admin |
| POST | /projects | Create a project — requires workspace ADMIN/OWNER |
| PUT | /projects/:id | Update — admin or project MANAGER |
| DELETE | /projects/:id | Delete — org admin only |
| POST | /projects/:id/members | Add a member (userId, role) |
| PUT | /projects/:id/members/:userId | Update a member's role |
| DELETE | /projects/:id/members/:userId | Remove a member |
| GET | /projects/:projectId/activities | Recent activity log (last 20) |
| GET | /projects/:id/links | Important links attached to a project |
| POST | /projects/:id/links | Add a link (title, url, category) — admins/PMs |
| GET | /projects/:id/credentials | Credentials attached to a project — admins/PMs |
| POST | /projects/:id/credentials | Add a credential (title, username, password, url) — admins/PMs |
curl -X POST https://projects.aozo.in/api/projects \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"organizationId": "org_123",
"name": "Website Revamp",
"description": "Q3 redesign of the marketing site",
"startDate": "2026-08-01",
"endDate": "2026-09-15"
}'
Tasks
| Method | Path | Description |
|---|---|---|
| GET | /tasks | List tasks (?projectId= or ?organizationId=) |
| POST | /tasks | Create a task (title, status, priority, dueDate, assigneeIds[]) |
| PUT | /tasks/:id | Update a task |
| DELETE | /tasks/:id | Delete a task |
| GET | /tasks/:id/comments | List comments on a task |
| POST | /tasks/:id/comments | Add a comment |
| POST | /tasks/:id/subtasks | Add a subtask (title) |
| PUT | /tasks/subtasks/:subtaskId | Update/complete a subtask |
| GET | /tasks/:id/timelogs | Time logged against a task |
| POST | /tasks/:id/timelogs | Log time (hours, description) |
| GET | /tasks/projects/:projectId/timesheets/export | Export timesheets as CSV |
| POST | /tasks/upload | Upload a file attachment (25MB limit) |
🔗 Task comments are shared with Aozo Chat
Posting a comment on a task doesn't just save a row locally — it also creates (or reuses) a space named task-<taskId> in Aozo Chat and mirrors the comment there, so a task discussion shows up as a real chat thread your team can jump into.
Notifications
| Method | Path | Description |
|---|---|---|
| GET | /notifications/vapidPublicKey | Public — web-push VAPID key |
| GET | /notifications | List notifications |
| POST | /notifications/read | Mark one or all as read |
| POST | /notifications/subscribe | Register a push subscription |