Activity
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/activity
List issue activity.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Agents
GET
/v1/workspaces/{slug}/agents
List the workspace's connected agents (named coding agents like Claude Code, Codex, Cursor). Assign issues to an agent's agent_id like any member.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/agent-sessions
List agent work sessions, newest activity first. Filter by state to see which agents are running, blocked (needs_input), or ready for review.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
state |
query | string | no | Filter: running, needs_input, review, done, failed, cancelled. |
issue_key |
query | string | no | |
agent_id |
query | string | no | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/agent-sessions
Start an agent work session. Call this when you pick up an issue so the team can follow your progress on the ticket and the Agents hub.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
object
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/agent-sessions/{id}
Get one agent session.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/agent-sessions/{id}
Update your session: heartbeat (any PATCH bumps last_activity_at), progress note, state change (needs_input when blocked, review when the PR is ready, done/failed to finish), or the PR link.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Attachments
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/attachments
List attachments.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/attachments
Create a pre-signed upload intent.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
AttachmentIntentInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/attachments/commit
Finalize an upload after the R2 PUT.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
AttachmentCommitInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/attachments/{id}
Delete an attachment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Automations
GET
/v1/workspaces/{slug}/automations
List automation rules.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/automations
Create an automation rule (admin-tier scope; Pro/Business plans).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
AutomationCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/automations/{id}
Get an automation rule.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/automations/{id}
Update or enable/disable an automation rule.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
AutomationPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/automations/{id}
Delete an automation rule.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/automations/{id}/runs
List an automation's run history (newest first).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Chat
GET
/v1/workspaces/{slug}/chat/channels
List channels visible to the key's user (public + own private/DM).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/chat/channels
Create a channel.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
ChatChannelCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/chat/channels/{channelId}
Get a channel.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/chat/channels/{channelId}
Rename, set topic, or (un)archive a channel.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
Request body
ChatChannelPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/chat/channels/{channelId}/members
List channel members.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/chat/channels/{channelId}/members
Add a member (self-join on public channels).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
Request body
object
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/chat/channels/{channelId}/members/{userId}
Remove a member (self always; others need manage rights).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
userId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/chat/channels/{channelId}/messages
List messages (newest first, cursor-paginated).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/chat/channels/{channelId}/messages
Send a message (optionally as a thread reply).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
Request body
ChatMessageCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/chat/channels/{channelId}/messages/stream
Stream a message live (AGENT-COLLAB-01): omit message_id to open, then append deltas, then send done:true to finalize. Members watch it grow in real time.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
Request body
object
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/chat/channels/{channelId}/messages/{messageId}
Edit your own message.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
messageId |
path | string | yes | Chat message id. |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/chat/channels/{channelId}/messages/{messageId}
Delete a message (own; owner/admin may delete any).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
messageId |
path | string | yes | Chat message id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/chat/channels/{channelId}/messages/{messageId}/reactions
Add a reaction (idempotent).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
messageId |
path | string | yes | Chat message id. |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/chat/channels/{channelId}/messages/{messageId}/reactions/{emoji}
Remove your reaction.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
channelId |
path | string | yes | Chat channel id. |
messageId |
path | string | yes | Chat message id. |
emoji |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Comments
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/comments
List comments.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/comments
Create a comment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
CommentCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/comments/bulk
Bulk-create comments on one issue (1–50). Returns a per-item result array; 201 when all succeed, 207 when some fail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
BulkCommentsCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/comments/{id}
Edit a comment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
id |
path | string | yes |
Request body
CommentCreateInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/comments/{id}
Delete a comment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Custom fields
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/custom-fields
List custom-field values on an issue.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PUT
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/custom-fields/{fieldId}
Set a custom-field value.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
fieldId |
path | string | yes |
Request body
CustomFieldValueInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/custom-fields/{fieldId}
Clear a custom-field value.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
fieldId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/custom-field-defs
List custom-field definitions.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/custom-field-defs
Create a custom-field definition.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
CustomFieldDefCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/custom-field-defs/{id}
Update a custom-field definition.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/custom-field-defs/{id}
Delete a custom-field definition.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Developer
GET
/v1/workspaces/{slug}/api-keys
List API keys.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/api-keys
Create an API key. Plaintext is returned exactly once.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
ApiKeyCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/api-keys/{id}
API key detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/api-keys/{id}
Update API key rate limit.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
ApiKeyPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/api-keys/{id}
Revoke an API key.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/api-keys/{id}/usage
Per-day request/error/latency rollup for a single API key (max 90-day window).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | |
from |
query | string | no | Start date (YYYY-MM-DD). Defaults to 30 days ago. Window capped at 90 days. |
to |
query | string | no | End date (YYYY-MM-DD). Defaults to today. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/webhooks
List webhooks.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/webhooks
Create a webhook. Signing secret is returned exactly once.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
WebhookCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/webhooks/{id}
Webhook detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/webhooks/{id}
Update or re-enable a webhook.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
WebhookPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/webhooks/{id}
Delete a webhook.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/webhooks/{id}/deliveries
List recent webhook delivery history.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/webhooks/{id}/rotate-secret
Rotate webhook signing secret. New secret is returned exactly once.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/webhooks/{id}/test
Send one signed webhook.test delivery to the endpoint.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
202 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/oauth-apps
List OAuth apps.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/oauth-apps
Register an OAuth app. client_secret is returned exactly once (null for public/PKCE clients).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
OauthAppCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/oauth-apps/{clientId}
OAuth app detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
clientId |
path | string | yes | OAuth app client ID. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/oauth-apps/{clientId}
Revoke an OAuth app.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
clientId |
path | string | yes | OAuth app client ID. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Docs
GET
/v1/workspaces/{slug}/docs
List docs (workspace or project-scoped).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
project |
query | string | no | Filter to a project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/docs
Create a doc.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
DocCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/docs/bulk
Bulk-create docs (1–50). Returns a per-item result array; 201 when all succeed, 207 when some fail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
BulkDocsCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/docs/{id}
Doc detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/docs/{id}
Update a doc.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/docs/{id}
Archive a doc (soft).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/docs/{id}/export
Export a doc as md / html / pdf.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | |
format |
query | md | html | pdf | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/docs/{id}/comments
List doc comments (oldest first).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/docs/{id}/comments
Add a doc comment (optionally threaded).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
Request body
object
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/docs/{id}/comments/{commentId}
Edit a doc comment (author; owner/admin may edit any).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
commentId |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/docs/{id}/comments/{commentId}
Delete a doc comment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
commentId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/docs/{id}/versions
List doc version snapshots (newest first; no bodies).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/docs/{id}/versions/{versionId}
Get a full version snapshot.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
versionId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/docs/{id}/versions/{versionId}/restore
Restore the doc to this snapshot.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | Doc id. |
versionId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Forms
GET
/v1/workspaces/{slug}/projects/{key}/forms
List project forms.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/forms
Create a form (admin-tier scope).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
FormCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/forms/{id}
Get a form with its ordered fields.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/forms/{id}
Update form settings / publish / enable public sharing.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
Request body
FormPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/forms/{id}
Soft-delete a form (disables public sharing).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/forms/{id}/fields
List a form's fields in order.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/forms/{id}/submissions
List form submissions.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/forms/{id}/submissions/{sid}
Get a single submission.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes | Form id. |
sid |
path | string | yes | Submission id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Goals
GET
/v1/workspaces/{slug}/goals
List goals (optionally filtered by portfolio or company scope).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolio_id |
query | string | no | Only goals grouped under this portfolio. |
scope |
query | company | no | scope=company returns only company goals (no portfolio). Mutually exclusive with portfolio_id. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/goals
Create a goal (per-plan cap; acyclic parent).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
GoalCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/goals/{goalId}
Get a goal with its rolled-up progress, status, key results, and alignment.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/goals/{goalId}
Update a goal.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
Request body
GoalPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/goals/{goalId}
Delete a goal (soft). Child goals are orphaned (kept, unaligned).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Issues
GET
/v1/workspaces/{slug}/projects/{key}/issues
List issues.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
status |
query | string | no | |
assignee |
query | string | no | user_id, email, or "me" (the calling key's own user). |
reporter |
query | string | no | user_id, email, or "me" (the calling key's own user). |
label |
query | string | no | |
priority |
query | string | no | |
type |
query | string | no | |
sprint |
query | string | no | Sprint id to filter by. |
milestone |
query | string | no | Milestone id to filter by. |
parent |
query | string | no | Issue id to list its subtasks. Pass "none" to return only top-level issues (no parent). |
q |
query | string | no | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues
Create an issue.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
IssueCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}
Issue detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}
Update an issue.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
IssuePatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}
Archive an issue (soft).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/restore
Restore an archived issue.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/transition
Transition status (board move).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
IssueTransitionInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/bulk
Bulk-create issues (1–50). Returns a per-item result array; 201 when all succeed, 207 when some fail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
BulkIssuesCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/links
List links for an issue (both directions).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/links
Create a link between this issue and another (by KEY-NUM). Cross-project within the workspace is supported.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
IssueLinkCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/links/{id}
Remove a link.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/commits
List git commit references associated with this issue (populated by the GitHub/GitLab integration).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Key results
GET
/v1/workspaces/{slug}/goals/{goalId}/key-results
List a goal's key results.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/goals/{goalId}/key-results
Create a key result (manual metric or auto scope roll-up).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
Request body
KeyResultCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/goals/{goalId}/key-results/{keyResultId}
Update a key result.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
keyResultId |
path | string | yes | Key result id. |
Request body
KeyResultPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/goals/{goalId}/key-results/{keyResultId}
Delete a key result (soft).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
goalId |
path | string | yes | Goal id. |
keyResultId |
path | string | yes | Key result id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Labels
GET
/v1/workspaces/{slug}/projects/{key}/labels
List labels.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/labels
Create a label.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
LabelCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/labels/{id}
Update a label.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
LabelPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/labels/{id}
Delete a label.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Members
GET
/v1/workspaces/{slug}/members
List members.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/members/{userId}
Update a member's role (admin-only scope).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
userId |
path | string | yes |
Request body
MemberPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/members/{userId}
Remove a member from the workspace (admin-only scope).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
userId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/invites
List pending invites.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/invites
Send a workspace invite email (admin+). Revoke-and-replace if the email already has a live invite.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
InviteCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/invites/{id}
Revoke a pending invite.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Meta
GET
/v1/me
Identity for this API key.
Parameters
No parameters.
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Milestones
GET
/v1/workspaces/{slug}/projects/{key}/milestones
List milestones for a project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/milestones
Create a milestone.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
MilestoneCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/milestones/{id}
Milestone detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/milestones/{id}
Update a milestone.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
MilestonePatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/milestones/{id}
Delete a milestone (soft). Issues are detached.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Notifications
GET
/v1/workspaces/{slug}/notifications
List notifications for the key's user.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/notifications/{id}
Mark a notification read.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/notifications/mark-all-read
Mark all unread notifications as read for the calling user in this workspace. Returns the count of rows updated.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Portfolios
GET
/v1/workspaces/{slug}/portfolios
List portfolios.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/portfolios
Create a portfolio (owner/admin-tier scope; per-plan cap).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
PortfolioCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/portfolios/{portfolioId}
Get a portfolio.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/portfolios/{portfolioId}
Update a portfolio.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
Request body
PortfolioPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/portfolios/{portfolioId}
Delete a portfolio (soft). Its goals become company goals; project links are removed.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/portfolios/{portfolioId}/projects
List a portfolio's member projects.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/portfolios/{portfolioId}/projects
Add a project to a portfolio. Idempotent.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
Request body
PortfolioProjectAddInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/portfolios/{portfolioId}/projects/{projectId}
Remove a project from a portfolio. Idempotent.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
portfolioId |
path | string | yes | Portfolio id. |
projectId |
path | string | yes | Project id. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Projects
GET
/v1/workspaces/{slug}/projects
List projects.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects
Create a project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
ProjectCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}
Project detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}
Update a project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
ProjectPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}
Archive a project (soft).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/restore
Restore an archived project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/members
List project members (explicit access list for scoped projects).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/members
Add or update a project member. Idempotent — updates role if already a member. User must be a workspace member. Admin-only scope.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
ProjectMemberAddInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/members/{userId}
Remove a user from the project member list. Admin-only scope.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
userId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Releases
GET
/v1/workspaces/{slug}/projects/{key}/releases
List releases for a project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/releases
Create a release. Attach issues by PATCHing issue release_id.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
ReleaseCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/releases/{id}
Release detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/releases/{id}
Update a release. Setting status=released stamps released_at.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
ReleasePatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/releases/{id}
Delete a release (soft). Issues are detached.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Reports
GET
/v1/workspaces/{slug}/projects/{key}/reports/{report}
Get a project report (velocity, burndown, cycle-time, throughput, status/type breakdown, workload). Paid feature.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
report |
path | string | yes | Report id: velocity | burndown | cycle-time | throughput | status-breakdown | type-breakdown | workload. |
format |
query | json | csv | no | Response format. `csv` returns a downloadable text/csv body; default is JSON. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Saved views
GET
/v1/workspaces/{slug}/projects/{key}/saved-views
List saved views.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/saved-views
Create a saved view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
SavedViewCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/saved-views/{id}
Update a saved view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/saved-views/{id}
Delete a saved view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Search
GET
/v1/workspaces/{slug}/search
Search issues + docs.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
q |
query | string | yes | |
types |
query | string | no | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Sprints
GET
/v1/workspaces/{slug}/projects/{key}/sprints
List sprints for a project.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/sprints
Create a sprint. Attach issues by PATCHing issue sprint_id.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
SprintCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/projects/{key}/sprints/{id}
Sprint detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/sprints/{id}
Update a sprint. Setting status=active demotes any other active sprint.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
SprintPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/sprints/{id}
Delete a sprint (soft). Issues are detached.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Statuses
GET
/v1/workspaces/{slug}/projects/{key}/statuses
List a project's board statuses (ordered).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/statuses
Create a board status column (max 12 per project).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
Request body
StatusCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/statuses/{id}
Update a board status. Changing category re-categorises all issues in the column.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
StatusPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/statuses/{id}
Delete a board status (soft). All issues in the column are soft-deleted. Refuses if it is the last status.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Time
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/time
Get time tracking.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/time
Update time tracking.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
TimePatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Watchers
GET
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/watchers
List watchers.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/watchers
Watch the issue (current key's user).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/watchers/{userId}
Unwatch the issue.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
userId |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Workflows
GET
/v1/workspaces/{slug}/workflows
List workflows.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/workflows
Create a workflow (draft; admin-tier scope).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
WorkflowCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/workflows/{id}
Get a workflow with its nodes and edges.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/workflows/{id}
Update name/description, or enable/disable (enabling enforces the plan cap and graph validity).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
WorkflowPatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/workflows/{id}
Soft-delete a workflow. Refuses while runs are in flight unless ?cancel_runs=true.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PUT
/v1/workspaces/{slug}/workflows/{id}/graph
Replace a workflow's nodes and edges atomically (referential + acyclicity checked).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
WorkflowGraphInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/workflows/{id}/runs
List a workflow's runs (newest first).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes | |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/workflow-runs/{id}
Get a workflow run with its stage states.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/workflow-runs/{id}/advance
Force-advance a run's state machine.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/workflow-runs/{id}/complete-stage
Complete the current active stage(s) of a run (member-tier workflow.run).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
WorkflowCompleteStageInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/workflow
Route an issue through an enabled workflow (member-tier workflow.run).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
WorkflowStartInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/projects/{key}/issues/{issueKey}/workflow
Cancel the issue's active workflow run (member-tier workflow.run).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
key |
path | string | yes | Project key. |
issueKey |
path | string | yes | Issue key (KEY-N). |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Workspace views
GET
/v1/workspaces/{slug}/views
List cross-project workspace views (shared + own).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
POST
/v1/workspaces/{slug}/views
Create a workspace view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
WorkspaceViewCreateInput
Responses
201 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/views/{id}
Get a workspace view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}/views/{id}
Update a workspace view (creator or owner/admin).
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
object
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
DELETE
/v1/workspaces/{slug}/views/{id}
Delete a workspace view.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
id |
path | string | yes |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.Workspaces
GET
/v1/workspaces
List workspaces this key can access.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
cursor |
query | string | no | |
limit |
query | integer,null | no |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}
Workspace detail.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
PATCH
/v1/workspaces/{slug}
Update workspace name.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
WorkspacePatchInput
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.
GET
/v1/workspaces/{slug}/usage
Read-only plan, storage, and AI-credit usage for the workspace.
Parameters
| Name | Location | Type | Required | Description |
|---|---|---|---|---|
slug |
path | string | yes | Workspace slug. |
Request body
No JSON request body.
Responses
200 Success.400 Validation error.401 Missing / invalid API key.403 Key lacks the required scope.404 Resource not found (or cross-workspace — never leaked).429 Rate limited.