# Doc API Routes

> Agach complete HTTP API reference: all REST endpoints, request/response types, WebSocket events, SSE, query parameters

- Skill: `jlugagne/doc-api-routes` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jlugagne/doc-api-routes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jlugagne/doc-api-routes/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: JLugagne (https://skillmd.com/u/jlugagne)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jlugagne/doc-api-routes

---


# Agach HTTP API Reference

All routes require JWT Bearer auth unless noted. Server runs on port 8322.

## Projects
```
POST   /api/projects                          — Create project
GET    /api/projects                          — List projects (with summary)
GET    /api/projects/{id}                     — Get project
GET    /api/projects/{id}/info                — Get project info (with breadcrumb, children)
GET    /api/projects/{id}/summary             — Get project task counts
GET    /api/projects/{id}/children            — List sub-projects
PATCH  /api/projects/{id}                     — Update project
DELETE /api/projects/{id}                     — Delete project (cascades)
```

## Tasks
```
POST   /api/projects/{id}/tasks               — Create task
GET    /api/projects/{id}/tasks               — List tasks (?column=&assigned_role=&priority=&tag=&search=&limit=&offset=)
GET    /api/projects/{id}/tasks/search        — Search tasks (?q=&limit=)
GET    /api/projects/{id}/tasks/{taskId}      — Get task
GET    /api/projects/{id}/board               — Get board (columns with tasks)
GET    /api/projects/{id}/columns             — List columns
GET    /api/projects/{id}/next-tasks          — Get next available tasks (?count=&role=&feature_id=)
PATCH  /api/projects/{id}/tasks/{taskId}      — Update task
DELETE /api/projects/{id}/tasks/{taskId}      — Delete task
POST   /api/projects/{id}/tasks/{taskId}/move — Move task (body: target_column, reason)
POST   /api/projects/{id}/tasks/{taskId}/move-to-project — Move to another project
POST   /api/projects/{id}/tasks/{taskId}/reorder — Reorder task (body: position)
POST   /api/projects/{id}/tasks/{taskId}/complete — Complete task (body: completion_summary, files_modified, tokens)
POST   /api/projects/{id}/tasks/{taskId}/unblock — Unblock task
POST   /api/projects/{id}/tasks/{taskId}/wont-do — Request won't-do
POST   /api/projects/{id}/tasks/{taskId}/approve-wont-do — Approve won't-do
POST   /api/projects/{id}/tasks/{taskId}/reject-wont-do — Reject won't-do
PATCH  /api/projects/{id}/tasks/{taskId}/session — Update session ID
POST   /api/projects/{id}/tasks/{taskId}/seen — Mark task as seen
```

## Comments
```
POST   /api/projects/{id}/tasks/{taskId}/comments              — Create comment
GET    /api/projects/{id}/tasks/{taskId}/comments              — List comments (?limit=&offset=)
PATCH  /api/projects/{id}/tasks/{taskId}/comments/{commentId}  — Update comment
DELETE /api/projects/{id}/tasks/{taskId}/comments/{commentId}  — Delete comment
```

## Dependencies
```
GET    /api/projects/{id}/tasks/{taskId}/dependencies — List dependencies
GET    /api/projects/{id}/tasks/{taskId}/dependents   — List dependents
```

## Agents (Roles)
```
POST   /api/agents                            — Create global agent
GET    /api/agents                            — List global agents
GET    /api/agents/{slug}                     — Get agent by slug
PATCH  /api/agents/{slug}                     — Update agent
DELETE /api/agents/{slug}                     — Delete agent
POST   /api/agents/{slug}/clone               — Clone agent (body: new_slug, new_name)
```

## Specialized Agents
```
POST   /api/agents/{slug}/specialized                    — Create specialized agent
GET    /api/agents/{slug}/specialized                    — List specialized agents
GET    /api/agents/{slug}/specialized/{specSlug}         — Get specialized agent
PATCH  /api/agents/{slug}/specialized/{specSlug}         — Update specialized agent
DELETE /api/agents/{slug}/specialized/{specSlug}         — Delete specialized agent
GET    /api/agents/{slug}/specialized/{specSlug}/skills  — List specialized agent skills
```

## Project Agents
```
POST   /api/projects/{projectId}/agents                  — Assign agent to project
GET    /api/projects/{projectId}/agents                  — List project agents
GET    /api/projects/{projectId}/agents/{slug}/tasks     — List tasks by agent
DELETE /api/projects/{projectId}/agents/{slug}           — Remove agent from project
POST   /api/projects/{projectId}/agents/bulk-reassign    — Bulk reassign tasks
```

## Skills
```
POST   /api/skills                            — Create skill
GET    /api/skills                            — List skills
GET    /api/skills/{slug}                     — Get skill
PATCH  /api/skills/{slug}                     — Update skill
DELETE /api/skills/{slug}                     — Delete skill
POST   /api/agents/{slug}/skills              — Add skill to agent
GET    /api/agents/{slug}/skills              — List agent skills
DELETE /api/agents/{slug}/skills/{skillSlug}  — Remove skill from agent
```

## Features
```
POST   /api/projects/{id}/features                          — Create feature
GET    /api/projects/{id}/features                          — List features (?status=)
GET    /api/projects/{id}/features/{featureId}              — Get feature
PATCH  /api/projects/{id}/features/{featureId}              — Update feature
PATCH  /api/projects/{id}/features/{featureId}/status       — Update feature status
DELETE /api/projects/{id}/features/{featureId}              — Delete feature
GET    /api/projects/{id}/stats/features                    — Get feature stats
```

## Dockerfiles
```
POST   /api/dockerfiles                       — Create dockerfile
GET    /api/dockerfiles                       — List dockerfiles
GET    /api/dockerfiles/{id}                  — Get dockerfile
PATCH  /api/dockerfiles/{id}                  — Update dockerfile
DELETE /api/dockerfiles/{id}                  — Delete dockerfile
PUT    /api/projects/{id}/dockerfile          — Set project dockerfile
GET    /api/projects/{id}/dockerfile          — Get project dockerfile
DELETE /api/projects/{id}/dockerfile          — Clear project dockerfile
```

## Notifications
```
POST   /api/notifications                     — Create global/agent notification
GET    /api/notifications                     — List all (?scope=&agent_slug=&unread=&limit=&offset=)
GET    /api/notifications/unread-count        — Global unread count
PUT    /api/notifications/{id}/read           — Mark as read
PUT    /api/notifications/read-all            — Mark all as read
DELETE /api/notifications/{id}                — Delete notification
POST   /api/projects/{id}/notifications       — Create project notification
GET    /api/projects/{id}/notifications       — List project notifications
GET    /api/projects/{id}/notifications/unread-count — Project unread count
PUT    /api/projects/{id}/notifications/read-all     — Mark all project as read
```

## Chat Sessions
```
POST   /api/projects/{projectId}/features/{featureId}/chats                        — Start session
GET    /api/projects/{projectId}/features/{featureId}/chats                        — List sessions
GET    /api/projects/{projectId}/features/{featureId}/chats/{sessionId}            — Get session
POST   /api/projects/{projectId}/features/{featureId}/chats/{sessionId}/end        — End session
POST   /api/projects/{projectId}/features/{featureId}/chats/{sessionId}/upload     — Upload JSONL
GET    /api/projects/{projectId}/features/{featureId}/chats/{sessionId}/download   — Download JSONL
```

## Statistics
```
GET    /api/projects/{id}/tool-usage          — Tool usage stats
GET    /api/projects/{id}/stats/timeline      — Timeline (?days=60)
GET    /api/projects/{id}/stats/cold-start    — Cold start token stats
GET    /api/projects/{id}/stats/model-tokens  — Model token stats
GET    /api/model-pricing                     — Model pricing list
```

## Images (currently unavailable)
```
POST   /api/projects/{id}/images              — Upload image (returns error)
GET    /api/projects/{id}/images/{filename}   — Serve image (returns error)
```

## Real-time
```
GET    /api/projects/{id}/sse                 — Server-Sent Events stream
WS     /ws                                    — WebSocket (registered without auth middleware)
```

## Auth (see /doc-identity for full details)
```
POST   /api/auth/register, /api/auth/login, /api/auth/refresh, /api/auth/logout
GET    /api/auth/me, PATCH /api/auth/me, POST /api/auth/me/password
GET    /api/auth/sso/providers, /api/auth/sso/{provider}/authorize, /api/auth/sso/{provider}/callback
```

## WebSocket Event Types
Task: `task_created`, `task_updated`, `task_deleted`, `task_moved`, `task_completed`
Project: `project_created`, `project_updated`, `project_deleted`
Comment: `comment_added`, `comment_edited`
Agent: `agent_created`, `agent_updated`, `agent_deleted`
Skill: `skill_created`, `skill_updated`, `skill_deleted`
Feature: `feature_created`, `feature_updated`, `feature_status_updated`, `feature_deleted`
Other: `notification`, `wip_slot_available`, `wont_do_rejected`, `task_wont_do`

