Endpoint reference
Every GVenta Kanban Board REST endpoint — 81 in 14 groups — with method, path, authentication and what each call does.
Documented from GVenta Kanban Board version 2.1.15.
Conventions
All endpoints are relative to your own instance, for example
https://your-instance.example/api/v1. Every request carries a personal access token in the Authorization header as a bearer token. Tokens carry read, write and admin abilities, and access control mirrors the signed-in user exactly: every list, search and work-queue call is filtered to the projects the token owner can see.
New to the API? Read API getting started first, then
try the worked examples.
Identity and tokens
Tokens carry an ability list (read permits retrieval, write permits mutation, admin grants everything), have a name, an optional expiry and a last-used timestamp, and stop working the moment their owner is deactivated.
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/me | Bearer | Return the current identity: user ID, name, email, role and token abilities. |
| GET | /api/v1/tokens | Bearer | List your tokens. Token values are truncated to their first eight characters; the full value is shown only once, at creation. |
| POST | /api/v1/tokens | Bearer | Create a token. Body: name, optional abilities, optional expires_at. The full token value is returned exactly once. |
| DELETE | /api/v1/tokens/{id} | Bearer | Revoke a token. |
Projects
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/projects | Bearer | List the projects accessible to the caller. |
| POST | /api/v1/projects | Bearer | Create a project. Automatically enrolls the caller as owner and provisions the four default lanes. |
| GET | /api/v1/projects/{slugOrId} | Bearer | Fetch a project by slug or numeric ID. |
| PUT | /api/v1/projects/{slug} | Bearer | Update a project's name, description and repository. |
| DELETE | /api/v1/projects/{slug} | Bearer | Archive a project (soft delete). |
| GET | /api/v1/projects/{slug}/board | Bearer | Return the full Kanban board, grouped by lane. |
| POST | /api/v1/projects/{slug}/favorite | Bearer | Toggle the project as a favorite for the calling user. |
| GET | /api/v1/projects/{slug}/activity | Bearer | Return the project activity log. |
Swim lanes
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/projects/{slug}/lanes | Bearer | List a project's lanes in display order. |
| POST | /api/v1/projects/{slug}/lanes | Bearer | Create a lane. Body: name, color, status type. |
| PATCH | /api/v1/projects/{slug}/lanes/{laneId} | Bearer | Update a lane's name, color, status type or visibility. |
| DELETE | /api/v1/projects/{slug}/lanes/{laneId} | Bearer | Delete a lane. Returns 409 if the lane still contains stories. |
| POST | /api/v1/projects/{slug}/lanes/reorder | Bearer | Reorder lanes by passing an array of lane IDs. |
Stories
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/stories | Bearer | List stories across accessible projects. Filter by project, project_id, status, priority, assigned_to, type, search. Paginate with limit (max 500) and offset. |
| GET | /api/v1/stories/search | Bearer | Deep search across titles, descriptions, comments, attachment filenames and task text. Filter by project, status, priority, type and assignee. Paginate with page and per_page. |
| POST | /api/v1/stories | Bearer | Create a story. Requires project or project_id plus title. Accepts description, type, status, priority, story points, due date, assignee, epic ID and epic flag. |
| GET | /api/v1/stories/{id} | Bearer | Fetch one story with its comments and comment count. |
| PUTPATCH | /api/v1/stories/{id} | Bearer | Update any field of a story. Computes a field-level change set, writes it to the activity log, auto-syncs the lane on status change, and fires assignment and update notifications. |
| DELETE | /api/v1/stories/{id} | Bearer | Delete a story. |
| POST | /api/v1/stories/{id}/move | Bearer | Move a story to a different status or position. |
| PUT | /api/v1/stories/{id}/project | Bearer | Move a story to a different project. When the subject is an epic, all child stories move with it. |
| PATCH | /api/v1/stories/{id}/assign | Bearer | Assign or unassign a story inline. |
| POST | /api/v1/stories/bulk | Bearer | Create many stories in one call. Returns per-item results plus a created/failed summary. Responds 207 Multi-Status when some items succeeded and others failed. |
| POST | /api/v1/stories/bulk-move | Bearer | Move many stories to one status in a single call. Each move is logged individually. |
Epics
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/projects/{slug}/epics | Bearer | List a project's epics. |
| POST | /api/v1/projects/{slug}/epics | Bearer | Create an epic in a project. |
| GET | /api/v1/epics/{id} | Bearer | Fetch an epic with its child stories. |
| POST | /api/v1/epics/{id}/children | Bearer | Attach stories to an epic. |
| DELETE | /api/v1/epics/{epicId}/children/{storyId} | Bearer | Detach a story from an epic. |
Dependencies
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/stories/{id}/dependencies | Bearer | Return what a story depends on and what it blocks. |
| POST | /api/v1/stories/{id}/dependencies | Bearer | Add a dependency. Rejected if it would create a cycle. |
| PUT | /api/v1/stories/{id}/dependencies | Bearer | Replace a story's whole dependency set. |
| DELETE | /api/v1/stories/{storyId}/dependencies/{dependsOnId} | Bearer | Remove one dependency. |
Tasks
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/stories/{id}/tasks | Bearer | List the tasks on a story's checklist. |
| POST | /api/v1/stories/{id}/tasks | Bearer | Add a task to a story. |
| PUT | /api/v1/tasks/{id} | Bearer | Update a task. |
| PATCH | /api/v1/tasks/{id}/complete | Bearer | Mark a task complete. |
| PATCH | /api/v1/tasks/{id}/reopen | Bearer | Reopen a completed task. |
| DELETE | /api/v1/tasks/{id} | Bearer | Delete a task. |
Comments, mentions and reactions
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/stories/{id}/comments | Bearer | List a story's comments with reactions inline and an unread count in meta. Optional flat=true, unread_only=true, include_attachments=true. |
| POST | /api/v1/stories/{id}/comments | Bearer | Post a comment on a story. Supports an urgent flag. Parses mentions, auto-marks read, auto-subscribes the author and notifies watchers. |
| PUT | /api/v1/comments/{id} | Bearer | Edit a comment. Stamps an edit time. |
| DELETE | /api/v1/comments/{id} | Bearer | Soft-delete a comment, preserving the thread. Admins may pass ?soft=false to hard-delete the comment, its descendants and their attachments. |
| POST | /api/v1/comments/{id}/reply | Bearer | Post a threaded reply to a comment. |
| POST | /api/v1/comments/{id}/mark_read | Bearer | Mark one comment read. |
| POST | /api/v1/stories/{id}/comments/mark_all_read | Bearer | Mark every comment on a story read. |
| POST | /api/v1/comments/{id}/react | Bearer | Add an emoji reaction to a comment. One of 👍 👎 ❤️ 😂 🎉 🚀 👀. |
| DELETE | /api/v1/comments/{id}/react/{emoji} | Bearer | Remove your reaction from a comment. |
| GET | /api/v1/comments/recent | Bearer | List recent comments across all stories. |
| GET | /api/v1/comments/search | Bearer | Full-text search of comments in natural-language mode with relevance ranking, highlighted snippets and rendered HTML. Filter by project, user, story and date range. |
| POST | /api/v1/comments/{id}/attachments | Bearer | Upload a file to a comment. Maximum of 5 attachments per comment at this endpoint. |
| GET | /api/v1/comments/{id}/attachments | Bearer | List a comment's attachments with same-domain download URLs. |
| DELETE | /api/v1/comments/{id}/attachments/{attachmentId} | Bearer | Delete a comment attachment. Permitted to the uploader, the comment author or an admin. |
| GET | /api/v1/mentions/mine | Bearer | List your mentions. |
| POSTPUTPATCH | /api/v1/mentions/{id}/mark_read | Bearer | Mark one mention read. |
| POSTPUTPATCH | /api/v1/mentions/{id}/read | Bearer | Mark one mention read. Alias of /api/v1/mentions/{id}/mark_read. |
| POST | /api/v1/mentions/mark_all_read | Bearer | Mark all your mentions read. |
Watchers
| Method | Path | Auth | What it does |
|---|---|---|---|
| POST | /api/v1/stories/{id}/watch | Bearer | Watch a story so you are notified of comments and changes. |
| DELETE | /api/v1/stories/{id}/watch | Bearer | Stop watching a story. |
| GET | /api/v1/stories/{id}/watchers | Bearer | List the users watching a story. |
Attachments
| Method | Path | Auth | What it does |
|---|---|---|---|
| POST | /api/v1/stories/{id}/attachments | Bearer | Upload a file to a story as multipart/form-data. Fully validated by the attachment pipeline (file type, size and content checks). |
| GET | /api/v1/stories/{id}/attachments | Bearer | List a story's attachments. |
| GET | /api/v1/stories/{storyId}/attachments/{attachmentId}/download | Bearer | Download an attachment scoped to its story. Verifies the attachment actually belongs to that story. |
| GET | /api/v1/attachments/{id} | Bearer | Return attachment metadata. |
| GET | /api/v1/attachments/{id}/download | Bearer | Stream the file through the application domain. |
| DELETE | /api/v1/attachments/{id} | Bearer | Delete an attachment. |
Users
The activity leaderboard scores each user over a rolling seven-day window as (completions × 10) + (comments × 3), returning avatar URLs, initials, generated avatar colors and the AI-agent flag so humans and agents can be ranked side by side; email addresses are stripped from the response.
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/users | Bearer | List users. |
| GET | /api/v1/users/{id} | Bearer | Return one user. |
| GET | /api/v1/users/activity | Bearer | Return a leaderboard of the most active users. Per user over the last seven days: stories assigned, stories in progress, stories completed, comments posted, last-activity timestamp and composite activity score. |
Work queues — built for agents
These four endpoints exist specifically so automation can decide what to do next.
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/work/next | Bearer | Return the highest-priority unassigned backlog stories — the "give me something to work on" call. Ordered Critical → High → Medium → Low, then oldest first. Optionally scoped to one project. Default 5, max 20. |
| GET | /api/v1/work/overdue | Bearer | Return overdue stories within the caller's accessible projects. |
| GET | /api/v1/work/upcoming | Bearer | Return stories due within the next N days. Default 7 days, max 30. |
| GET | /api/v1/work/mine | Bearer | Return work assigned to the caller, ordered by priority then due date. Excludes completed items unless a status is specified. |
Search and activity
| Method | Path | Auth | What it does |
|---|---|---|---|
| GET | /api/v1/search | Bearer | Quick story search. Minimum two characters. |
| GET | /api/v1/activity | Bearer | Return recent activity across all projects with JSON detail payloads decoded. Up to 200 entries. |
Pulse
Pulse is the run log for automation: agents post a record of each run and anyone can query the resulting feed.
| Method | Path | Auth | What it does |
|---|---|---|---|
| POST | /api/v1/pulse | Bearer | Log an agent run. Requires agent and activity; status must be success, warning or error; optional story_ids array and duration_seconds. Returns the stored entry with 201. |
| GET | /api/v1/pulse | Bearer | Return a paginated, filtered feed of runs. Filter by agent, status, date range and free text. |