Skip to content

API Reference

Base URL: http://localhost:4000/api

All endpoints (except auth, health, and pending invitations) require Authorization: Bearer <access_token>.

Swagger UI is available at http://localhost:4000/api/docs.

Authentication

MethodPathAuthDescription
POST/api/auth/registerNoCreate account
POST/api/auth/loginNoLogin
POST/api/auth/refreshNoRefresh access token
GET/api/auth/profileYesCurrent user profile
POST/api/auth/forgot-passwordNoSend password reset email
POST/api/auth/reset-passwordNoReset password with token
GET/api/auth/permissionsYesCurrent user permissions

Social Auth

MethodPathAuthDescription
GET/api/auth/social/yandexNoLogin with Yandex ID
GET/api/auth/social/yandex/callbackNoYandex ID callback
GET/api/auth/social/vkNoLogin with VK ID
GET/api/auth/social/vk/callbackNoVK ID callback

Users

MethodPathAuthDescription
GET/api/users/meYesCurrent user profile
PATCH/api/users/meYesUpdate profile
POST/api/users/me/avatarYesUpload avatar
GET/api/users/me/quotaYesQuota information
PATCH/api/users/me/planYesChange plan
POST/api/users/me/change-passwordYesChange password
GET/api/usersYesList users
GET/api/users/searchYesSearch users (?q=)

Organizations

All resource endpoints use slug instead of ID.

MethodPathAuthPermissions
GET/api/organizationsYes
POST/api/organizationsYes
GET/api/organizations/by-slug/:slugYesorg:view
PATCH/api/organizations/by-slug/:slugYesorg:edit
DELETE/api/organizations/by-slug/:slugYesorg:delete
GET/api/organizations/by-slug/:slug/quotaYesorg:view
PATCH/api/organizations/by-slug/:slug/planYesorg:edit
GET/api/organizations/by-slug/:slug/membersYesorg:members.view
POST/api/organizations/by-slug/:slug/membersYesorg:members.invite
PATCH/api/organizations/by-slug/:slug/members/:userIdYesorg:members.roles
DELETE/api/organizations/by-slug/:slug/members/:userIdYesorg:members.remove

Organization Avatar

MethodPathAuthDescription
POST/api/organizations/by-slug/:slug/avatarYesUpload org avatar

Teams

Most resource endpoints use slug instead of ID.

MethodPathAuthPermissions
GET/api/teamsYes
GET/api/teams/by-org/:slugYes
POST/api/teamsYes
GET/api/teams/by-slug/:teamSlugYesteam:view
PATCH/api/teams/by-slug/:teamSlugYesteam:settings:edit
DELETE/api/teams/by-slug/:teamSlugYesteam:delete
GET/api/teams/by-slug/:teamSlug/membersYesteam:view
POST/api/teams/by-slug/:teamSlug/membersYesteam:member:add
DELETE/api/teams/by-slug/:teamSlug/members/:userIdYesteam:member:remove
GET/api/teams/by-slug/:teamSlug/tasksYestask:view

Team Quota & Plan

MethodPathAuthDescription
GET/api/teams/by-slug/:teamSlug/quotaYesTeam quota
PATCH/api/teams/by-slug/:teamSlug/planYesChange team plan

Projects

MethodPathAuthPermissions
GET/api/projectsYes
POST/api/projectsYes
GET/api/projects/:idYesproject:view
PATCH/api/projects/:idYesproject:edit
DELETE/api/projects/:idYesproject:delete
GET/api/projects/:id/membersYesproject:members.view
POST/api/projects/:id/membersYesproject:members.add
DELETE/api/projects/:id/members/:userIdYesproject:members.remove

Tasks

MethodPathAuthPermissions
GET/api/tasks/myYes
GET/api/tasks/my/calendarYes— (?from=&to=)
GET/api/projects/:id/tasksYestask:view
POST/api/projects/:id/tasksYestask:create
GET/api/projects/:id/tasks/:taskIdYestask:view
PATCH/api/projects/:id/tasks/:taskIdYestask:edit
PATCH/api/projects/:id/tasks/:taskId/statusYestask:edit
DELETE/api/projects/:id/tasks/:taskIdYestask:delete

Task Comments

MethodPathAuthDescription
GET/api/projects/:id/tasks/:taskId/commentsYesList comments
POST/api/projects/:id/tasks/:taskId/commentsYesCreate comment
PATCH/api/projects/:id/tasks/:taskId/comments/:commentIdYesEdit comment
DELETE/api/projects/:id/tasks/:taskId/comments/:commentIdYesDelete comment
POST/api/projects/:id/tasks/:taskId/comments/attachmentsYesUpload attachments

Task History

MethodPathAuthPermissions
GET/api/projects/:id/tasks/:taskId/historyYestask:view

Task Reorder & Bulk

MethodPathAuthDescription
POST/api/projects/:id/tasks/reorderYesReorder tasks ({ taskId, position }[])
POST/api/projects/:id/tasks/bulkYesBulk operations (status/assign/delete/priority)

Task Attachments

MethodPathAuthDescription
POST/api/projects/:id/tasks/:taskId/attachmentsYesUpload task attachments
POST/api/projects/:id/tasks/:taskId/attachments/removeYesRemove attachment

Task Dependencies

MethodPathAuthDescription
GET/api/tasks/:taskId/dependenciesYesList dependencies
POST/api/tasks/:taskId/dependenciesYesCreate (dependsOnId, type?)
DELETE/api/tasks/:taskId/dependencies/:idYesRemove dependency

Tags

MethodPathAuthDescription
GET/api/orgs/:orgId/tagsYesOrg tags
GET/api/teams/:teamId/tagsYesTeam tags
GET/api/tasks/:taskId/tagsYesTask tags
POST/api/tagsYesCreate tag
PATCH/api/tags/:idYesUpdate tag
DELETE/api/tags/:idYesDelete tag
POST/api/tasks/:taskId/tagsYesAssign tags (tagIds: string[])

Chat

MethodPathAuthDescription
GET/api/chatsYesList conversations
POST/api/chatsYesCreate conversation
POST/api/chats/direct/:userIdYesDirect conversation
POST/api/chats/task/:taskIdYesTask conversation
GET/api/chats/:id/messagesYesList messages (?before=&limit=)
POST/api/chats/:id/messagesYesSend message
POST/api/chats/:id/messages/attachmentsYesUpload attachments (up to 10 files)
POST/api/chats/:id/readYesMark as read

Notifications

MethodPathAuthDescription
GET/api/notificationsYesList notifications
GET/api/notifications/unread-countYesUnread count
PATCH/api/notifications/:id/readYesMark as read
PATCH/api/notifications/read-allYesMark all as read
DELETE/api/notifications/:idYesDelete notification

Invitations

MethodPathAuthDescription
POST/api/invitationsYesCreate invitation
GET/api/invitations/myYesList my invitations
GET/api/invitations/pendingNoFind pending (?teamSlug=&orgSlug=)
POST/api/invitations/:id/acceptYesAccept invitation
POST/api/invitations/:id/declineYesDecline invitation
DELETE/api/invitations/:id/cancelYesCancel invitation

Events (Calendar)

MethodPathAuthDescription
GET/api/eventsYesList events (?from=&to=)
POST/api/eventsYesCreate event
GET/api/events/:idYesEvent details
PATCH/api/events/:idYesUpdate event
DELETE/api/events/:idYesDelete event

Plans

MethodPathAuthDescription
GET/api/plansYesList available plans

Sprints

MethodPathAuthDescription
GET/api/projects/:projectId/sprintsYesList project sprints
GET/api/projects/:projectId/sprints/velocityYesVelocity data
GET/api/sprints/:idYesSprint details
POST/api/sprintsYesCreate sprint
PATCH/api/sprints/:idYesUpdate sprint
DELETE/api/sprints/:idYesDelete sprint
POST/api/sprints/:id/tasksYesAdd tasks to sprint
DELETE/api/sprints/:sprintId/tasks/:taskIdYesRemove task from sprint

Custom Fields

MethodPathAuthDescription
GET/api/custom-fields/:entityTypeYesList fields for entity type
POST/api/custom-fieldsYesCreate field definition
PATCH/api/custom-fields/:idYesUpdate field
DELETE/api/custom-fields/:idYesDelete field
GET/api/custom-field-values/:entityIdYesGet entity field values
POST/api/custom-field-values/:entityIdYesSet entity field values

Time Tracking

MethodPathAuthDescription
GET/api/tasks/:taskId/time-entriesYesList time entries
GET/api/tasks/:taskId/time-totalYesTotal minutes
POST/api/tasks/:taskId/time-entriesYesLog time entry
DELETE/api/time-entries/:idYesDelete time entry

Favorites

MethodPathAuthDescription
GET/api/favoritesYesList favorites
POST/api/favoritesYesAdd to favorites
DELETE/api/favorites/:entityType/:entityIdYesRemove from favorites

Templates

MethodPathAuthDescription
GET/api/orgs/:orgId/templatesYesList org templates
POST/api/templatesYesCreate template
PATCH/api/templates/:idYesUpdate template
DELETE/api/templates/:idYesDelete template
POST/api/templates/:templateId/apply/:projectIdYesApply template to project

Webhooks

MethodPathAuthDescription
GET/api/orgs/:orgId/webhooksYesList org webhooks
POST/api/webhooksYesCreate webhook
PATCH/api/webhooks/:idYesUpdate webhook
DELETE/api/webhooks/:idYesDelete webhook
GET/api/webhooks/:id/logsYesDelivery logs

Trash

MethodPathAuthDescription
GET/api/trashYesList deleted items
POST/api/trash/:entityType/:entityId/restoreYesRestore item
DELETE/api/trash/:entityType/:entityIdYesPermanent delete
MethodPathAuthDescription
GET/api/searchYesGlobal search (?q=) — returns tasks, projects, teams, orgs

Reports

MethodPathAuthDescription
GET/api/projects/:id/reportYesProject report
GET/api/projects/:id/export/csvYesExport tasks as CSV

Two-Factor Authentication

MethodPathAuthDescription
POST/api/auth/2fa/generateYesGenerate 2FA secret + QR code URL
POST/api/auth/2fa/enableYesEnable 2FA (verify TOTP code)
POST/api/auth/2fa/disableYesDisable 2FA (verify TOTP code)

Video Rooms

MethodPathAuthDescription
GET/api/video-roomsYesList rooms
POST/api/video-roomsYesCreate room
GET/api/video-rooms/:idYesRoom details
PATCH/api/video-rooms/:idYesUpdate room
DELETE/api/video-rooms/:idYesEnd/delete room
POST/api/video-rooms/:id/joinYesJoin room
POST/api/video-rooms/:id/leaveYesLeave room
GET/api/video-rooms/:id/participantsYesList participants
POST/api/video-rooms/:id/tokenYesGet LiveKit token
POST/api/video-rooms/:id/recording/startYesStart recording
POST/api/video-rooms/:id/recording/stopYesStop recording
GET/api/video-rooms/:id/recording/statusYesRecording status

Health

MethodPathAuthDescription
GET/api/healthNoService health check
GET/api/docsNoSwagger UI (interactive API documentation)
GET/uploads/*NoStatic files (local uploads)

Administration

Dashboard

MethodPathAuthDescription
GET/api/admin/statsYesAggregate statistics

Users

MethodPathAuthDescription
GET/api/admin/usersYesList users (?page=&limit=)
GET/api/admin/users/:idYesUser details with roles
POST/api/admin/usersYesCreate user
PATCH/api/admin/users/:idYesUpdate user
DELETE/api/admin/users/:idYesDelete user
POST/api/admin/users/:id/rolesYesAssign role
DELETE/api/admin/users/:id/roles/:roleIdYesRemove role
POST/api/admin/users/:id/resend-verificationYesResend email verification
POST/api/admin/users/:id/send-password-resetYesSend password reset email

Organizations

MethodPathAuthDescription
GET/api/admin/organizationsYesList organizations (?page=&limit=)
DELETE/api/admin/organizations/:idYesDelete organization

Teams

MethodPathAuthDescription
GET/api/admin/teamsYesList teams (?page=&limit=)
DELETE/api/admin/teams/:idYesDelete team

Roles

MethodPathAuthDescription
GET/api/admin/rolesYesList roles (?scope=)
GET/api/admin/roles/:idYesRole details
POST/api/admin/rolesYesCreate role
PATCH/api/admin/roles/:idYesUpdate role
DELETE/api/admin/roles/:idYesDelete role

Groups

MethodPathAuthDescription
GET/api/admin/groupsYesList groups (?scope=&organizationId=)
POST/api/admin/groupsYesCreate group
PATCH/api/admin/groups/:idYesUpdate group
DELETE/api/admin/groups/:idYesDelete group
GET/api/admin/groups/:id/membersYesGroup members
POST/api/admin/groups/:id/membersYesAdd member
DELETE/api/admin/groups/:id/members/:userIdYesRemove member
GET/api/admin/groups/:id/rolesYesGroup roles
POST/api/admin/groups/:id/rolesYesAssign role to group
DELETE/api/admin/groups/:id/roles/:roleIdYesRemove role from group

Plans

MethodPathAuthDescription
GET/api/admin/plansYesList all plans
PATCH/api/admin/plans/:idYesUpdate plan

Files

MethodPathAuthDescription
GET/api/admin/filesYesList files (?page=&limit=)
DELETE/api/admin/files/:idYesDelete file

Permissions

MethodPathAuthDescription
GET/api/admin/permissionsYesList all permissions

Error Responses

All errors return a unified JSON structure:

json
{
  "statusCode": 400,
  "message": "Error description",
  "error": "Bad Request"
}

Common status codes:

  • 200 — Success
  • 201 — Created
  • 400 — Bad Request (validation error)
  • 401 — Unauthorized
  • 403 — Forbidden
  • 404 — Not Found
  • 409 — Conflict
  • 500 — Internal Server Error

Pagination

List endpoints support pagination via query parameters:

ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber20Items per page
json
{
  "data": [...],
  "total": 50,
  "page": 1,
  "limit": 20
}