Skip to main content
All project endpoints are under /api/projects and require authentication.

List projects

GET /api/projects Returns all synced projects as a flat list.
curl -X GET https://your-domain.com/api/projects \
  -H "Authorization: Bearer <api-key>"
Response 200
data.items
array

List projects (paginated)

GET /api/projects/paginated Returns a paginated, filterable list of projects.
page
number
Page number. Default: 1.
pageSize
number
Items per page. Default: 20, max: 100.
Search term matched against project name or path.
platformType
string
Filter by platform: gitlab | github.
platformConfigId
string
Filter by platform config UUID.
enabled
boolean
Filter by enabled status.
webhookStatus
string
Filter by webhook status: active | inactive | error | unknown | not_configured.

Get project statistics

GET /api/projects/stats Returns aggregate statistics across all projects (review counts, webhook coverage, etc.). Response 200
data.stats
object
Aggregate project statistics.

Sync projects from a platform

POST /api/projects/sync/platform Fetches all projects from the specified platform config and upserts them into the database. Requires project:create permission.
curl -X POST https://your-domain.com/api/projects/sync/platform \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"platformConfigId": "<platform-config-uuid>"}'
Request body
platformConfigId
string
required
UUID of the platform config to sync from.
Response 200
data.synced
number
Number of projects successfully synced.
data.total
number
Total number of projects found on the platform.
data.errors
array
List of any errors encountered during sync.

Update project settings

PATCH /api/projects/:projectId Partially updates a project’s configuration. Requires project:update permission.
curl -X PATCH https://your-domain.com/api/projects/<project-uuid> \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true, "autoReview": false}'
projectId
string
required
UUID of the project to update.
Request body (all fields optional)
enabled
boolean
Enable or disable AI review for this project.
autoReview
boolean | null
Override auto-review setting. Set to null to inherit the global default.
fileIgnorePatterns
array | null
List of glob patterns for files to exclude from review. null inherits global setting.
aiConfigId
string | null
UUID of the AI config to use. null inherits the global default.
defaultReviewerIds
array
Array of platform user IDs to auto-assign as reviewers on new MRs / PRs.
autoAssignAuthor
boolean
Whether to automatically assign the MR / PR author as assignee.
Response 200
data.project
object
Updated project record.

Get project configuration

GET /api/projects/:projectId/config Returns the resolved configuration for a project, including inherited global settings.
projectId
string
required
UUID of the project.
Response 200
data.config
object
Resolved project configuration.

Get project workspace summary

GET /api/projects/:projectId/workspace Returns an aggregated workspace view for the project, including recent reviews and pipeline status.
projectId
string
required
UUID of the project.
Response 200
data.workspace
object
Aggregated workspace data.

Get platform project details

GET /api/projects/:projectId/platform Fetches live project details from the upstream platform API (GitLab or GitHub).
projectId
string
required
UUID of the project.
Response 200
data.project
object

Get project members

GET /api/projects/:projectId/members Fetches project members from the upstream platform.
projectId
string
required
UUID of the project.
search
string
Search term to filter members by name or username.
page
number
Page number. Default: 1.
pageSize
number
Items per page. Default: 20, max: 100.

Get project merge requests

GET /api/projects/:projectId/merge-requests Fetches merge requests / pull requests from the upstream platform.
projectId
string
required
UUID of the project.
state
string
Filter by MR state: all | opened | merged | closed. Default: opened.
search
string
Search term.
page
number
Page number. Default: 1.
pageSize
number
Items per page. Default: 20, max: 100.

Get project pipelines

GET /api/projects/:projectId/pipelines Returns the review pipeline history for a project.
projectId
string
required
UUID of the project.
status
string
Filter by pipeline status: pending | in_progress | completed | failed | queued | processing.
triggeredBy
string
Filter by trigger type: auto | manual.
mrIid
number
Filter by MR / PR number.
page
number
Page number. Default: 1.
pageSize
number
Items per page. Default: 20, max: 100.

Batch create webhooks

POST /api/projects/webhooks/batch Creates webhooks on the platform for multiple projects at once. Requires project:update permission.
curl -X POST https://your-domain.com/api/projects/webhooks/batch \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "projectIds": ["<uuid-1>", "<uuid-2>"],
    "webhookUrl": "https://your-domain.com/api/webhook/gitlab"
  }'
Request body
projectIds
array
required
List of project UUIDs to configure webhooks for. At least one required.
webhookUrl
string
Override the webhook URL. Defaults to the server’s configured webhook endpoint.
Response 200
data.success
number
Number of webhooks successfully created.
data.failed
number
Number of webhooks that failed to create.
data.results
array
Per-project result details.

Remove a webhook

POST /api/projects/webhooks/remove Removes the webhook for a single project from the upstream platform. Requires project:update permission. Request body
projectId
string
required
UUID of the project whose webhook should be removed.

Verify webhooks

POST /api/projects/webhooks/verify Checks the webhook status for all projects and updates the webhookStatus field in the database. Requires project:update permission.

Clear a project’s webhook configuration

POST /api/projects/:projectId/webhook/clear Clears the stored webhook metadata for a project without calling the upstream API. Requires project:update permission.
projectId
string
required
UUID of the project.

Delete a project

DELETE /api/projects/:projectId Deletes a project record from the database. Requires project:delete permission.
projectId
string
required
UUID of the project to delete.

Batch delete projects

POST /api/projects/delete/batch Deletes multiple project records at once. Requires project:delete permission. Request body
projectIds
array
required
List of project UUIDs to delete. At least one required.

Build docs developers (and LLMs) love