Team Time API

Create and assign tasks, update work, and connect your workspace to AI tools and integrations. The versioned API follows the same permissions and work rules as the app.

Make your first request

  1. Open your organization’s Settings → API keys and choose Entire organization or Specific project, then create a Task assistant key. Copy the secret once and save it in your integration’s secret configuration as TEAM_TIME_API_KEY.
  2. Set TEAM_TIME_ORIGIN to this deployment’s origin. Send Authorization: Bearer … on every request to /api/v1. Use HTTPS in production.
  3. Read GET /context, /projects, /members, and /workflow. Use a member’s userId for task assignment. Follow collection cursors to resolve names unambiguously.
  4. Generate a UUID into COMMAND_UUID for the command below, replace the project placeholder, and keep that same UUID/payload if retrying after a lost response.
curl "$TEAM_TIME_ORIGIN/api/v1/tasks" \
  -H "Authorization: Bearer $TEAM_TIME_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $COMMAND_UUID" \
  --data '{"projectId":"<project-id>","title":"Prepare launch checklist","assigneeId":null}'

Creation returns the task in data, including ID and version. Use PATCH /tasks/{id} with expectedVersion to change supplied fields. For a status change, also send expectedWorkflowVersion from /workflow. An AI needs HTTP/tool execution or an integration that imports OpenAPI to make these requests.

Authentication and permissions

Every key belongs to one organization and acts as its creating admin, limited by its organization or single-project access target and explicitly selected scopes. Removal, demotion, or organization archival revokes the key permanently. Keys expire after their selected lifetime and can be renamed, revoked or removed from Settings.

Project keys restrict tasks, search, time, reports and exports to the selected project. The member directory and shared statuses remain readable for assignment when permitted. Project keys cannot manage shared settings, clients or team access, create projects, or review whole weeks. Read GET /context for the access target and available operations. Other-project resources return 404; organization-only operations return 403.

Targets cannot be edited. Create a replacement key to change access. Existing keys keep organization access. Deleting a project permanently revokes its keys; archiving keeps historical access under existing rules. A project key cannot control a current or paused timer outside its project.

Cookies do not authenticate this API. Keys cannot create credentials, change ownership, create/join/archive organizations, or operate another person’s timer. Report and review responses exclude private work-note content. Keep credentials out of URLs, logs, browser storage, and shared prompts.

Task assistant includes discovery and task writes. Deletion, team administration, tracking, reviews, and reporting need their own scopes. New scopes are never silently added to existing keys.

Retries, dates, and limits

  • Mutations require a UUID Idempotency-Key. Exact retries replay the original response for seven days. Changed payloads with the same key return 409 idempotency_conflict.
  • Use current versions for edits and actions. DELETE sends expectedVersion in the query. On 409 stale_version, re-read and reconsider before issuing a new command.
  • PATCH preserves omitted task fields; null clears assignee/due date and [] clears tags. Status actions preserve recorded-time and review locks.
  • Collections return data and page.nextCursor. Default limit is 50; maximum 100. Repeat the same filters/limit with the cursor. Traversal is live and sorted by ID.
  • 120 requests/minute per key, 600 per organization, and 10 invitation send requests/minute per organization. Observe Retry-After on 429. JSON bodies are limited to 64 KiB; send Content-Type: application/json even for empty actions.
  • Due dates are YYYY-MM-DD calendar dates. Timestamps are ISO 8601 instants. Weeks start Monday in the organization timezone. Time/timer commands use the shared per-user version.
  • Report exports/client summaries require the exact filters, sampledAt, and fingerprint from a report less than 24 hours old. Reports cover at most 366 days, with existing 10,000-row service bounds.

Errors

Errors return { error: { code, message, field? }, requestId }. Response headers include a request ID and rate-limit metadata.

HTTP statusMeaning
400Malformed JSON, cursor, or missing idempotency key
401Invalid, expired, or revoked key
403Insufficient scope or ownership action requiring a session
404Missing, hidden, or cross-organization resource
409Stale version, idempotency conflict, recorded-time/result/timer conflict
413 / 415 / 422Body too large / unsupported content type / validation failed
429Request limit reached; use Retry-After
500Internal failure; retry uncertain writes with the original key

API reference

All paths are relative to /api/v1. Expand an operation for its exact request and response schema.

coordination

POST/coordination/runsRegister a chat run

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: registerAgentRun

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "installationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "sessionId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "provider": {
      "default": "codex",
      "type": "string",
      "const": "codex"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "runId",
    "installationId",
    "sessionId",
    "name"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "attention",
            "ended"
          ]
        },
        "availability": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "offline"
          ]
        },
        "activityAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "connectedUntil": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "id",
        "name",
        "provider",
        "state",
        "availability",
        "activityAt",
        "connectedUntil"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/coordination/heartbeatRefresh installation connectivity and chat lifecycle

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: heartbeatAgentRuns

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "installationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "runs": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "runId": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "sequence": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2147483647
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "idle",
              "attention",
              "ended"
            ]
          }
        },
        "required": [
          "runId",
          "sequence",
          "state"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "installationId",
    "runs"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "idle",
              "attention",
              "ended"
            ]
          },
          "availability": {
            "type": "string",
            "enum": [
              "active",
              "idle",
              "offline"
            ]
          },
          "activityAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "connectedUntil": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "provider",
          "state",
          "availability",
          "activityAt",
          "connectedUntil"
        ]
      }
    }
  },
  "required": [
    "data"
  ]
}
GET/coordination/inboxRead this installation’s undelivered task messages

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getAgentInbox

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "installationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "installationId"
  ],
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "messages": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "senderRunId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "senderName": {
                "type": "string"
              },
              "recipientRunId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "question",
                  "note",
                  "reply"
                ]
              },
              "replyToId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "body": {
                "type": "string"
              },
              "createdAt": {
                "type": "string"
              },
              "deadlineAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "deliveredAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "repliedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "responseState": {
                "type": "string",
                "enum": [
                  "note",
                  "waiting",
                  "no_reply",
                  "replied",
                  "late_reply"
                ]
              },
              "reply": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "body": {
                        "type": "string"
                      },
                      "senderRunId": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "createdAt": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "body",
                      "senderRunId",
                      "createdAt"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "recipientAvailability": {
                "type": "string",
                "enum": [
                  "active",
                  "idle",
                  "offline"
                ]
              }
            },
            "required": [
              "id",
              "taskId",
              "senderRunId",
              "senderName",
              "recipientRunId",
              "kind",
              "replyToId",
              "body",
              "createdAt",
              "deadlineAt",
              "deliveredAt",
              "repliedAt",
              "responseState",
              "reply"
            ]
          }
        },
        "sampledAt": {
          "type": "string"
        }
      },
      "required": [
        "messages",
        "sampledAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/coordination/ackAcknowledge delivered context without implying a reply

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: acknowledgeAgentMessages

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "installationId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "messageIds": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      }
    }
  },
  "required": [
    "installationId",
    "messageIds"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "acknowledged": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "acknowledged"
      ]
    }
  },
  "required": [
    "data"
  ]
}

tasks

GET/tasks/{id}/agentsRead task chats, presence and conversation

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getTaskAgents

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "beforeId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "projectId": {
          "type": "string"
        },
        "canConfigure": {
          "type": "boolean"
        },
        "chats": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "state": {
                "type": "string",
                "enum": [
                  "active",
                  "idle",
                  "attention",
                  "ended"
                ]
              },
              "availability": {
                "type": "string",
                "enum": [
                  "active",
                  "idle",
                  "offline"
                ]
              },
              "activityAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "connectedUntil": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "repository": {
                "type": "string"
              },
              "branch": {
                "type": "string"
              },
              "files": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "checkpoint": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "provider",
              "state",
              "availability",
              "activityAt",
              "connectedUntil",
              "repository",
              "branch",
              "files",
              "checkpoint",
              "updatedAt"
            ]
          }
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "taskId": {
                "type": "string"
              },
              "senderRunId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "senderName": {
                "type": "string"
              },
              "recipientRunId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "kind": {
                "type": "string",
                "enum": [
                  "question",
                  "note",
                  "reply"
                ]
              },
              "replyToId": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "body": {
                "type": "string"
              },
              "createdAt": {
                "type": "string"
              },
              "deadlineAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "deliveredAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "repliedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "responseState": {
                "type": "string",
                "enum": [
                  "note",
                  "waiting",
                  "no_reply",
                  "replied",
                  "late_reply"
                ]
              },
              "reply": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "body": {
                        "type": "string"
                      },
                      "senderRunId": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "createdAt": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "body",
                      "senderRunId",
                      "createdAt"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "recipientAvailability": {
                "type": "string",
                "enum": [
                  "active",
                  "idle",
                  "offline"
                ]
              }
            },
            "required": [
              "id",
              "taskId",
              "senderRunId",
              "senderName",
              "recipientRunId",
              "kind",
              "replyToId",
              "body",
              "createdAt",
              "deadlineAt",
              "deliveredAt",
              "repliedAt",
              "responseState",
              "reply"
            ]
          }
        },
        "nextBeforeId": {
          "type": [
            "string",
            "null"
          ]
        },
        "sampledAt": {
          "type": "string"
        }
      },
      "required": [
        "enabled",
        "projectId",
        "canConfigure",
        "chats",
        "messages",
        "nextBeforeId",
        "sampledAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/tasks/{id}/agentsLink this chat and declare work scope

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: linkTaskAgent

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "repository": {
      "default": "",
      "type": "string",
      "maxLength": 300
    },
    "branch": {
      "default": "",
      "type": "string",
      "maxLength": 200
    },
    "files": {
      "default": [],
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 300
      }
    },
    "checkpoint": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "runId"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "provider": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "attention",
            "ended"
          ]
        },
        "availability": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "offline"
          ]
        },
        "activityAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "connectedUntil": {
          "type": [
            "string",
            "null"
          ]
        },
        "repository": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        },
        "files": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "checkpoint": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "provider",
        "state",
        "availability",
        "activityAt",
        "connectedUntil",
        "repository",
        "branch",
        "files",
        "checkpoint",
        "updatedAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/tasks/{id}/agent-messagesAsk an active agent or leave a task message

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: sendAgentMessage

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "messageId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "senderRunId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "recipientRunId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "kind": {
      "default": "question",
      "type": "string",
      "enum": [
        "question",
        "note"
      ]
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    }
  },
  "required": [
    "recipientRunId",
    "body"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "taskId": {
          "type": "string"
        },
        "senderRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "senderName": {
          "type": "string"
        },
        "recipientRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "kind": {
          "type": "string",
          "enum": [
            "question",
            "note",
            "reply"
          ]
        },
        "replyToId": {
          "type": [
            "string",
            "null"
          ]
        },
        "body": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        },
        "deadlineAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "deliveredAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "repliedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "responseState": {
          "type": "string",
          "enum": [
            "note",
            "waiting",
            "no_reply",
            "replied",
            "late_reply"
          ]
        },
        "reply": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "body": {
                  "type": "string"
                },
                "senderRunId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "body",
                "senderRunId",
                "createdAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "recipientAvailability": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "offline"
          ]
        }
      },
      "required": [
        "id",
        "taskId",
        "senderRunId",
        "senderName",
        "recipientRunId",
        "kind",
        "replyToId",
        "body",
        "createdAt",
        "deadlineAt",
        "deliveredAt",
        "repliedAt",
        "responseState",
        "reply"
      ]
    }
  },
  "required": [
    "data"
  ]
}
GET/tasksSearch and paginate all tasks, including completed history

Filters combine with AND; tagIds match any supplied tag. assigneeId=unassigned selects unassigned tasks. Traversal is live, sorted by ID. Reuse the same filters and limit with nextCursor.

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: listTasks

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    },
    "query": {
      "type": "string",
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "clientId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "assigneeId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "statusId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "statusCategory": {
      "type": "string",
      "enum": [
        "not_started",
        "in_progress",
        "completed"
      ]
    },
    "dueFrom": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "dueTo": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "tagIds": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "projectId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "assigneeId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "assigneeAgentKeyId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "assigneeAgentName": {
            "type": [
              "string",
              "null"
            ]
          },
          "dueOn": {
            "type": [
              "string",
              "null"
            ]
          },
          "statusId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "statusCategory": {
            "type": "string",
            "enum": [
              "not_started",
              "in_progress",
              "completed"
            ]
          },
          "result": {
            "type": "string"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "createdAt": {
            "type": "string"
          },
          "boardRank": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name"
              ]
            }
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "projectId",
          "assigneeId",
          "assigneeAgentKeyId",
          "assigneeAgentName",
          "dueOn",
          "statusId",
          "statusCategory",
          "result",
          "completedAt",
          "version",
          "createdAt",
          "boardRank",
          "tags"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
POST/tasksCreate and optionally assign a task

Creates an unfinished task. Omitted assigneeId and dueOn default to null. Description defaults to empty and tags to []. Discover project/user/status IDs before creating.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 201 · Operation: createTask

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "assigneeId": {
      "default": null,
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "dueOn": {
      "default": null,
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "description": {
      "default": "",
      "type": "string",
      "maxLength": 5000
    },
    "result": {
      "not": {}
    },
    "tags": {
      "default": [],
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      }
    },
    "statusId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "title",
    "projectId"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
GET/tasks/{id}Read a task and its version

Read a task and its version

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getTask

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/tasks/{id}Atomically update supplied task metadata

Omitted fields are preserved. null clears assigneeId/dueOn, [] clears tags. expectedVersion is required. Moving a task with recorded time is forbidden. Read/merge/write executes under one organization lock and transaction.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: updateTask

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "assigneeId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "dueOn": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "description": {
      "type": "string",
      "maxLength": 5000
    },
    "result": {
      "type": "string",
      "maxLength": 5000
    },
    "tags": {
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      }
    },
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
DELETE/tasks/{id}Delete a task without recorded time

Delete a task without recorded time

Access: Organization or selected project
Permissions: tasks:read, tasks:delete · Success: 204 · Operation: deleteTask

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "null"
}
POST/tasks/{id}/statusMove a task to a discovered workflow status

Requires current task and workflow versions. Completion/result locks and running timers apply. Moving an unassigned task into an In progress status assigns it to the key's creator unless claimIfUnassigned is false; other moves preserve the assignee. When the key's creator is the assignee, assigneeAgentKeyId/assigneeAgentName identify the key that took or started the task.

Access: Organization or selected project
Permissions: tasks:read, tasks:write, workflow:read · Success: 200 · Operation: changeTaskStatus

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "statusId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "expectedWorkflowVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "result": {
      "type": "string",
      "maxLength": 5000
    },
    "claimIfUnassigned": {
      "type": "boolean"
    }
  },
  "required": [
    "expectedVersion",
    "statusId",
    "expectedWorkflowVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/tasks/{id}/completeComplete a task and optionally save its result

Complete a task and optionally save its result

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: completeTask

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "result": {
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/tasks/{id}/reopenReopen a completed task

Reopen a completed task

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: reopenTask

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/tasks/{id}/positionReorder a task within its current board column

Reorder a task within its current board column

Access: Organization or selected project
Permissions: tasks:read, tasks:write, workflow:read · Success: 200 · Operation: positionTask

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "expectedWorkflowVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "beforeId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "expectedVersion",
    "expectedWorkflowVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "assigneeId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentKeyId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "assigneeAgentName": {
          "type": [
            "string",
            "null"
          ]
        },
        "dueOn": {
          "type": [
            "string",
            "null"
          ]
        },
        "statusId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "statusCategory": {
          "type": "string",
          "enum": [
            "not_started",
            "in_progress",
            "completed"
          ]
        },
        "result": {
          "type": "string"
        },
        "completedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        },
        "boardRank": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ]
          }
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "projectId",
        "assigneeId",
        "assigneeAgentKeyId",
        "assigneeAgentName",
        "dueOn",
        "statusId",
        "statusCategory",
        "result",
        "completedAt",
        "version",
        "createdAt",
        "boardRank",
        "tags"
      ]
    }
  },
  "required": [
    "data"
  ]
}

agent messages

GET/agent-messages/{id}Read reply or timeout status

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: getAgentMessage

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "taskId": {
          "type": "string"
        },
        "senderRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "senderName": {
          "type": "string"
        },
        "recipientRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "kind": {
          "type": "string",
          "enum": [
            "question",
            "note",
            "reply"
          ]
        },
        "replyToId": {
          "type": [
            "string",
            "null"
          ]
        },
        "body": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        },
        "deadlineAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "deliveredAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "repliedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "responseState": {
          "type": "string",
          "enum": [
            "note",
            "waiting",
            "no_reply",
            "replied",
            "late_reply"
          ]
        },
        "reply": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "body": {
                  "type": "string"
                },
                "senderRunId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "body",
                "senderRunId",
                "createdAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "recipientAvailability": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "offline"
          ]
        }
      },
      "required": [
        "id",
        "taskId",
        "senderRunId",
        "senderName",
        "recipientRunId",
        "kind",
        "replyToId",
        "body",
        "createdAt",
        "deadlineAt",
        "deliveredAt",
        "repliedAt",
        "responseState",
        "reply"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/agent-messages/{id}/replyReply as the addressed chat run

Task-scoped agent coordination. Project coordination must be enabled by a human administrator. Availability is advisory; no timeout releases task ownership. Mutations require an Idempotency-Key.

Access: Organization or selected project
Permissions: tasks:read, tasks:write · Success: 200 · Operation: replyAgentMessage

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    }
  },
  "required": [
    "runId",
    "body"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "taskId": {
          "type": "string"
        },
        "senderRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "senderName": {
          "type": "string"
        },
        "recipientRunId": {
          "type": [
            "string",
            "null"
          ]
        },
        "kind": {
          "type": "string",
          "enum": [
            "question",
            "note",
            "reply"
          ]
        },
        "replyToId": {
          "type": [
            "string",
            "null"
          ]
        },
        "body": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        },
        "deadlineAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "deliveredAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "repliedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "responseState": {
          "type": "string",
          "enum": [
            "note",
            "waiting",
            "no_reply",
            "replied",
            "late_reply"
          ]
        },
        "reply": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "body": {
                  "type": "string"
                },
                "senderRunId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "createdAt": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "body",
                "senderRunId",
                "createdAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "recipientAvailability": {
          "type": "string",
          "enum": [
            "active",
            "idle",
            "offline"
          ]
        }
      },
      "required": [
        "id",
        "taskId",
        "senderRunId",
        "senderName",
        "recipientRunId",
        "kind",
        "replyToId",
        "body",
        "createdAt",
        "deadlineAt",
        "deliveredAt",
        "repliedAt",
        "responseState",
        "reply"
      ]
    }
  },
  "required": [
    "data"
  ]
}

invitations

GET/invitations/{id}Read an organization invitation

Read an organization invitation

Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: getInvitation

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "email": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "email",
        "role",
        "status",
        "expiresAt",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
GET/invitationsRead organization invitations

Read organization invitations

Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: listInvitations

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "email",
          "role",
          "status",
          "expiresAt",
          "createdAt"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
POST/invitationsInvite an admin or member

Invite an admin or member

Access: Entire organization only
Permissions: members:read, team:write · Success: 201 · Operation: createInvitation

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 254,
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "member"
      ]
    }
  },
  "required": [
    "email",
    "role"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "email": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "email",
        "role",
        "status",
        "expiresAt",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/invitations/{id}/cancelCancel a pending invitation

Cancel a pending invitation

Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: cancelInvitation

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "email": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "expiresAt": {
          "type": "string"
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "email",
        "role",
        "status",
        "expiresAt",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/invitations/{id}/sendSend an invitation through the configured email provider

Send an invitation through the configured email provider

Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: sendInvitation

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "accepted",
            "failed",
            "unknown"
          ]
        }
      },
      "required": [
        "status"
      ]
    }
  },
  "required": [
    "data"
  ]
}

context

GET/contextDiscover the organization, identity, scopes, and available operations

Discover the organization, identity, scopes, and available operations

Access: Organization or selected project
Permissions: Any valid key · Success: 200 · Operation: getContext

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "organization": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "name": {
              "type": "string"
            },
            "timezone": {
              "type": "string"
            },
            "weekStartsOn": {
              "type": "number"
            },
            "version": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "timezoneLocked": {
              "type": "boolean"
            }
          },
          "required": [
            "id",
            "name",
            "timezone",
            "weekStartsOn",
            "version",
            "timezoneLocked"
          ]
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "role": {
          "type": "string"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "operations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "access": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "organization",
                "project"
              ]
            },
            "projectId": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "projectName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "type",
            "projectId",
            "projectName"
          ]
        }
      },
      "required": [
        "organization",
        "userId",
        "role",
        "scopes",
        "operations",
        "access"
      ]
    }
  },
  "required": [
    "data"
  ]
}

organization

GET/organizationRead organization settings

Read organization settings

Access: Organization or selected project
Permissions: organization:read · Success: 200 · Operation: getOrganization

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        },
        "weekStartsOn": {
          "type": "number"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezoneLocked": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "name",
        "timezone",
        "weekStartsOn",
        "version",
        "timezoneLocked"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/organizationUpdate organization name or timezone

Update organization name or timezone

Access: Entire organization only
Permissions: organization:read, organization:write · Success: 200 · Operation: updateOrganization

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "timezone": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        },
        "weekStartsOn": {
          "type": "number"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezoneLocked": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "name",
        "timezone",
        "weekStartsOn",
        "version",
        "timezoneLocked"
      ]
    }
  },
  "required": [
    "data"
  ]
}

projects

GET/projectsDiscover active and archived projects

Discover active and archived projects

Access: Organization or selected project
Permissions: projects:read · Success: 200 · Operation: listProjects

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string"
          },
          "clientId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "budgetSeconds": {
            "type": [
              "number",
              "null"
            ]
          },
          "billableDefault": {
            "type": "boolean"
          },
          "archivedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "clientId",
          "budgetSeconds",
          "billableDefault",
          "archivedAt",
          "version",
          "createdAt"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
GET/projects/{id}Read a project

Read a project

Access: Organization or selected project
Permissions: projects:read · Success: 200 · Operation: getProject

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "clientId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "budgetSeconds": {
          "type": [
            "number",
            "null"
          ]
        },
        "billableDefault": {
          "type": "boolean"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "clientId",
        "budgetSeconds",
        "billableDefault",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/projectsCreate a project with an optional existing client

Create a project with an optional existing client

Access: Entire organization only
Permissions: projects:read, projects:write · Success: 201 · Operation: createProject

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "clientId": {
      "default": null,
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "budgetHours": {
      "default": null,
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "billableDefault": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "clientId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "budgetSeconds": {
          "type": [
            "number",
            "null"
          ]
        },
        "billableDefault": {
          "type": "boolean"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "clientId",
        "budgetSeconds",
        "billableDefault",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/projects/{id}Update supplied project fields

Update supplied project fields

Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: updateProject

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "clientId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "budgetHours": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0
        },
        {
          "type": "null"
        }
      ]
    },
    "billableDefault": {
      "type": "boolean"
    },
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "clientId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "budgetSeconds": {
          "type": [
            "number",
            "null"
          ]
        },
        "billableDefault": {
          "type": "boolean"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "clientId",
        "budgetSeconds",
        "billableDefault",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
DELETE/projects/{id}Delete a project without recorded time

Delete a project without recorded time

Access: Organization or selected project
Permissions: projects:read, projects:delete · Success: 204 · Operation: deleteProject

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "null"
}
POST/projects/{id}/archiveArchive a project

Archive a project

Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: archiveProject

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "clientId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "budgetSeconds": {
          "type": [
            "number",
            "null"
          ]
        },
        "billableDefault": {
          "type": "boolean"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "clientId",
        "budgetSeconds",
        "billableDefault",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/projects/{id}/restoreRestore a project

Restore a project

Access: Organization or selected project
Permissions: projects:read, projects:write · Success: 200 · Operation: restoreProject

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "clientId": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ]
        },
        "budgetSeconds": {
          "type": [
            "number",
            "null"
          ]
        },
        "billableDefault": {
          "type": "boolean"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "clientId",
        "budgetSeconds",
        "billableDefault",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}

clients

GET/clientsDiscover clients

Discover clients

Access: Organization or selected project
Permissions: clients:read · Success: 200 · Operation: listClients

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string"
          },
          "archivedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "archivedAt",
          "version",
          "createdAt"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
GET/clients/{id}Read a client

Read a client

Access: Organization or selected project
Permissions: clients:read · Success: 200 · Operation: getClient

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/clientsCreate a client

Create a client

Access: Entire organization only
Permissions: clients:read, clients:write · Success: 201 · Operation: createClient

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/clients/{id}Rename a client

Rename a client

Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: updateClient

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "expectedVersion",
    "name"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/clients/{id}/archiveArchive a client

Archive a client

Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: archiveClient

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/clients/{id}/restoreRestore a client

Restore a client

Access: Entire organization only
Permissions: clients:read, clients:write · Success: 200 · Operation: restoreClient

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "archivedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "createdAt": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "name",
        "archivedAt",
        "version",
        "createdAt"
      ]
    }
  },
  "required": [
    "data"
  ]
}

members

GET/membersDiscover membership IDs and user IDs for assignment

Discover membership IDs and user IDs for assignment

Access: Organization or selected project
Permissions: members:read · Success: 200 · Operation: listMembers

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "owner",
              "admin",
              "member"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "userId",
          "name",
          "role",
          "version"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
PATCH/members/{id}Change a non-owner member's role

Change a non-owner member's role

Access: Entire organization only
Permissions: members:read, team:write · Success: 200 · Operation: updateMember

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "member"
      ]
    }
  },
  "required": [
    "expectedVersion",
    "role"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "role": {
          "type": "string",
          "enum": [
            "owner",
            "admin",
            "member"
          ]
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "userId",
        "name",
        "role",
        "version"
      ]
    }
  },
  "required": [
    "data"
  ]
}
DELETE/members/{id}Remove a non-owner member

Remove a non-owner member

Access: Entire organization only
Permissions: members:read, team:write · Success: 204 · Operation: removeMember

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "null"
}
POST/members/{id}/reassign-tasksAtomically reassign selected tasks from a member

Atomically reassign selected tasks from a member

Access: Entire organization only
Permissions: members:read, team:write, tasks:read, tasks:write · Success: 200 · Operation: reassignMemberTasks

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "assigneeId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "tasks": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "expectedVersion": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "expectedVersion"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "assigneeId",
    "tasks"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "projectId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "assigneeId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "assigneeAgentKeyId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "assigneeAgentName": {
            "type": [
              "string",
              "null"
            ]
          },
          "dueOn": {
            "type": [
              "string",
              "null"
            ]
          },
          "statusId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "statusCategory": {
            "type": "string",
            "enum": [
              "not_started",
              "in_progress",
              "completed"
            ]
          },
          "result": {
            "type": "string"
          },
          "completedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "createdAt": {
            "type": "string"
          },
          "boardRank": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "name"
              ]
            }
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "projectId",
          "assigneeId",
          "assigneeAgentKeyId",
          "assigneeAgentName",
          "dueOn",
          "statusId",
          "statusCategory",
          "result",
          "completedAt",
          "version",
          "createdAt",
          "boardRank",
          "tags"
        ]
      }
    }
  },
  "required": [
    "data"
  ]
}

workflow

GET/workflowRead statuses, columns, and workflow version

Read statuses, columns, and workflow version

Access: Organization or selected project
Permissions: workflow:read · Success: 200 · Operation: getWorkflow

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "completedLimit": {
          "type": "number"
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string",
                "maxLength": 60
              },
              "category": {
                "type": "string",
                "enum": [
                  "not_started",
                  "in_progress",
                  "completed"
                ]
              },
              "position": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "name",
              "category",
              "position"
            ]
          }
        },
        "statuses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string",
                "maxLength": 60
              },
              "category": {
                "type": "string",
                "enum": [
                  "not_started",
                  "in_progress",
                  "completed"
                ]
              },
              "columnId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "position": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "color": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "name",
              "category",
              "columnId",
              "position",
              "color",
              "isDefault"
            ]
          }
        }
      },
      "required": [
        "version",
        "completedLimit",
        "columns",
        "statuses"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PUT/workflowAtomically save workflow configuration and replacement mappings

Atomically save workflow configuration and replacement mappings

Access: Entire organization only
Permissions: workflow:read, workflow:write · Success: 200 · Operation: saveWorkflow

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "completedLimit": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "columns": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string",
            "maxLength": 60
          },
          "category": {
            "type": "string",
            "enum": [
              "not_started",
              "in_progress",
              "completed"
            ]
          },
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "position"
        ],
        "additionalProperties": false
      }
    },
    "statuses": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string",
            "maxLength": 60
          },
          "category": {
            "type": "string",
            "enum": [
              "not_started",
              "in_progress",
              "completed"
            ]
          },
          "columnId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "position": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "isDefault": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "columnId",
          "position",
          "color",
          "isDefault"
        ],
        "additionalProperties": false
      }
    },
    "replacements": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "required": [
    "expectedVersion",
    "completedLimit",
    "columns",
    "statuses",
    "replacements"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "completedLimit": {
          "type": "number"
        },
        "columns": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string",
                "maxLength": 60
              },
              "category": {
                "type": "string",
                "enum": [
                  "not_started",
                  "in_progress",
                  "completed"
                ]
              },
              "position": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              }
            },
            "required": [
              "id",
              "name",
              "category",
              "position"
            ]
          }
        },
        "statuses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string",
                "maxLength": 60
              },
              "category": {
                "type": "string",
                "enum": [
                  "not_started",
                  "in_progress",
                  "completed"
                ]
              },
              "columnId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "position": {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              "color": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "isDefault": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "name",
              "category",
              "columnId",
              "position",
              "color",
              "isDefault"
            ]
          }
        }
      },
      "required": [
        "version",
        "completedLimit",
        "columns",
        "statuses"
      ]
    }
  },
  "required": [
    "data"
  ]
}

tags

GET/tagsDiscover shared workspace tags

Discover shared workspace tags

Access: Organization or selected project
Permissions: tasks:read · Success: 200 · Operation: listTags

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}

time entries

GET/time-entriesRead creator-owned entries for an organization-local day

Entries belong only to the key creator. date defaults to the current organization-local date. meta.version is the shared time/timer version required by corrections and timer commands.

Access: Organization or selected project
Permissions: time:own:read · Success: 200 · Operation: listOwnTimeEntries

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "type": "string",
      "maxLength": 4000
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "taskId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "projectId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "startedAt": {
            "type": "string"
          },
          "stoppedAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "note": {
            "type": "string"
          },
          "billable": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "taskId",
          "projectId",
          "startedAt",
          "stoppedAt",
          "note",
          "billable"
        ]
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "nextCursor"
      ]
    },
    "meta": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "$ref": "#/$defs/__schema0"
      }
    }
  },
  "required": [
    "data",
    "page"
  ],
  "$defs": {
    "__schema0": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        },
        {
          "type": "null"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          }
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "$ref": "#/$defs/__schema0"
          }
        }
      ]
    }
  }
}
GET/time-entries/{id}Read a creator-owned time entry

Read a creator-owned time entry

Access: Organization or selected project
Permissions: time:own:read · Success: 200 · Operation: getOwnTimeEntry

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "taskId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "startedAt": {
          "type": "string"
        },
        "stoppedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "note": {
          "type": "string"
        },
        "billable": {
          "type": "boolean"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "taskId",
        "projectId",
        "startedAt",
        "stoppedAt",
        "note",
        "billable",
        "version"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/time-entriesCreate creator-owned manual time

Use taskId/projectId plus exact startedAt/stoppedAt, or workDate/durationMilliseconds. Existing overlap, date/DST, and submitted-week rules apply. expectedVersion is the shared time/timer version.

Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 201 · Operation: createOwnTimeEntry

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "taskId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "startedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "stoppedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "workDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "durationMilliseconds": {
      "type": "integer",
      "minimum": 60000,
      "maximum": 86400000
    },
    "note": {
      "type": "string",
      "maxLength": 5000
    },
    "billable": {
      "type": "boolean"
    },
    "reason": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "expectedVersion",
    "taskId",
    "projectId"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "taskId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "startedAt": {
          "type": "string"
        },
        "stoppedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "note": {
          "type": "string"
        },
        "billable": {
          "type": "boolean"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "taskId",
        "projectId",
        "startedAt",
        "stoppedAt",
        "note",
        "billable",
        "version"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/time-entries/{id}Correct creator-owned time

Correct creator-owned time

Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 200 · Operation: updateOwnTimeEntry

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "taskId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "startedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "stoppedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "note": {
      "type": "string",
      "maxLength": 5000
    },
    "billable": {
      "type": "boolean"
    },
    "reason": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "taskId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "projectId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "startedAt": {
          "type": "string"
        },
        "stoppedAt": {
          "type": [
            "string",
            "null"
          ]
        },
        "note": {
          "type": "string"
        },
        "billable": {
          "type": "boolean"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "taskId",
        "projectId",
        "startedAt",
        "stoppedAt",
        "note",
        "billable",
        "version"
      ]
    }
  },
  "required": [
    "data"
  ]
}
DELETE/time-entries/{id}Delete creator-owned manual time

Delete creator-owned manual time

Access: Organization or selected project
Permissions: time:own:read, time:own:write · Success: 204 · Operation: deleteOwnTimeEntry

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "reason": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "null"
}

timer

GET/timerRead the creator's current timer

Read the creator's current timer

Access: Organization or selected project
Permissions: timers:own:read · Success: 200 · Operation: getOwnTimer

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/timer/startStart or switch the creator's timer

Start or switch the creator's timer

Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: startOwnTimer

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "taskId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "expectedVersion",
    "taskId"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/timer/pausepause the creator's timer

pause the creator's timer

Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: pauseOwnTimer

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/timer/resumeresume the creator's timer

resume the creator's timer

Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: resumeOwnTimer

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/timer/stopstop the creator's timer

stop the creator's timer

Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: stopOwnTimer

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}
PATCH/timer/noteSave the creator's private active work note

Save the creator's private active work note

Access: Organization or selected project
Permissions: timers:own:read, timers:own:write · Success: 200 · Operation: updateOwnTimerNote

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "entryId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "note": {
      "type": "string",
      "maxLength": 5000
    }
  },
  "required": [
    "expectedVersion",
    "entryId",
    "note"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "mode": {
          "type": "string",
          "enum": [
            "stopped",
            "running",
            "paused"
          ]
        },
        "sampledAt": {
          "type": "string"
        },
        "elapsedSeconds": {
          "type": "number"
        },
        "task": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "title": {
                  "type": "string"
                },
                "projectId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "projectName": {
                  "type": "string"
                },
                "clientName": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "title",
                "projectId",
                "projectName",
                "clientName"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "resumeError": {
          "type": [
            "string",
            "null"
          ]
        },
        "entry": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "note": {
                  "type": "string"
                },
                "startedAt": {
                  "type": "string"
                },
                "stoppedAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "note",
                "startedAt",
                "stoppedAt"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "taskSeconds": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": "number"
          }
        }
      },
      "required": [
        "version",
        "mode",
        "sampledAt",
        "elapsedSeconds",
        "task",
        "resumeError",
        "entry",
        "taskSeconds"
      ]
    }
  },
  "required": [
    "data"
  ]
}

weeks

GET/weeks/{week}Read the creator's week and version

Read the creator's week and version

Access: Entire organization only
Permissions: reviews:own:read · Success: 200 · Operation: getOwnWeek

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/weeks/{week}/submitsubmit the creator's whole week

submit the creator's whole week

Access: Entire organization only
Permissions: reviews:own:read, reviews:own:write · Success: 200 · Operation: submitOwnWeek

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "comment": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/weeks/{week}/withdrawwithdraw the creator's whole week

withdraw the creator's whole week

Access: Entire organization only
Permissions: reviews:own:read, reviews:own:write · Success: 200 · Operation: withdrawOwnWeek

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "comment": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes"
      ]
    }
  },
  "required": [
    "data"
  ]
}

reviews

GET/reviewsRead the submitted review queue for a week

Read the submitted review queue for a week

Access: Entire organization only
Permissions: reviews:team:read · Success: 200 · Operation: listReviews

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "week": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "userId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "currentMember": {
                "type": "boolean"
              },
              "seconds": {
                "type": "number"
              },
              "status": {
                "type": "string",
                "enum": [
                  "submitted",
                  "returned",
                  "approved"
                ]
              }
            },
            "required": [
              "userId",
              "name",
              "currentMember",
              "seconds",
              "status"
            ]
          }
        }
      },
      "required": [
        "week",
        "timezone",
        "rows"
      ]
    }
  },
  "required": [
    "data"
  ]
}
GET/reviews/{userId}/{week}Read a team member's review without private work notes

Read a team member's review without private work notes

Access: Entire organization only
Permissions: reviews:team:read · Success: 200 · Operation: getReview

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskTitle": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "startedAt": {
                "type": "string"
              },
              "stoppedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "billable": {
                "type": "boolean"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "taskId",
              "projectId",
              "taskTitle",
              "projectName",
              "startedAt",
              "stoppedAt",
              "billable",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes",
        "userId",
        "name",
        "entries"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/reviews/{userId}/{week}/approveapprove a team member's week

approve a team member's week

Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: approveReview

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "comment": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskTitle": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "startedAt": {
                "type": "string"
              },
              "stoppedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "billable": {
                "type": "boolean"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "taskId",
              "projectId",
              "taskTitle",
              "projectName",
              "startedAt",
              "stoppedAt",
              "billable",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes",
        "userId",
        "name",
        "entries"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/reviews/{userId}/{week}/returnreturn a team member's week

return a team member's week

Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: returnReview

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "comment": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskTitle": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "startedAt": {
                "type": "string"
              },
              "stoppedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "billable": {
                "type": "boolean"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "taskId",
              "projectId",
              "taskTitle",
              "projectName",
              "startedAt",
              "stoppedAt",
              "billable",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes",
        "userId",
        "name",
        "entries"
      ]
    }
  },
  "required": [
    "data"
  ]
}
POST/reviews/{userId}/{week}/reopenreopen a team member's week

reopen a team member's week

Access: Entire organization only
Permissions: reviews:team:read, reviews:team:write · Success: 200 · Operation: reopenReview

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedVersion": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "comment": {
      "default": "",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "expectedVersion"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "week": {
          "type": "string"
        },
        "endsOn": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "days": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "locked": {
                "type": "boolean"
              }
            },
            "required": [
              "date",
              "seconds",
              "billableSeconds",
              "locked"
            ]
          }
        },
        "review": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "draft",
                "submitted",
                "returned",
                "approved"
              ]
            },
            "comment": {
              "type": "string"
            },
            "submittedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewedAt": {
              "type": [
                "string",
                "null"
              ]
            },
            "reviewerName": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "status",
            "comment",
            "submittedAt",
            "reviewedAt",
            "reviewerName"
          ]
        },
        "hasRunning": {
          "type": "boolean"
        },
        "hasOtherReviewer": {
          "type": "boolean"
        },
        "projects": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "name": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "billableSeconds": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "date",
                    "seconds",
                    "billableSeconds"
                  ]
                }
              }
            },
            "required": [
              "id",
              "name",
              "seconds",
              "billableSeconds",
              "days"
            ]
          }
        },
        "outcomes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "completedAt": {
                "type": "string"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "completedAt",
              "result",
              "seconds"
            ]
          }
        },
        "userId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "name": {
          "type": "string"
        },
        "entries": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "taskTitle": {
                "type": "string"
              },
              "projectName": {
                "type": "string"
              },
              "startedAt": {
                "type": "string"
              },
              "stoppedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "billable": {
                "type": "boolean"
              },
              "seconds": {
                "type": "number"
              }
            },
            "required": [
              "id",
              "taskId",
              "projectId",
              "taskTitle",
              "projectName",
              "startedAt",
              "stoppedAt",
              "billable",
              "seconds"
            ]
          }
        }
      },
      "required": [
        "week",
        "endsOn",
        "version",
        "timezone",
        "sampledAt",
        "seconds",
        "billableSeconds",
        "days",
        "review",
        "hasRunning",
        "hasOtherReviewer",
        "projects",
        "outcomes",
        "userId",
        "name",
        "entries"
      ]
    }
  },
  "required": [
    "data"
  ]
}

reports

GET/reportsRead a report without private work notes

Read a report without private work notes

Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: getReport

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "clientId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "memberId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "view": {
      "type": "string",
      "enum": [
        "activity",
        "completed",
        "time"
      ]
    }
  },
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "orgId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "admin": {
          "type": "boolean"
        },
        "timezone": {
          "type": "string"
        },
        "sampledAt": {
          "type": "string"
        },
        "filters": {
          "type": "object",
          "properties": {
            "from": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "to": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            "clientId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "projectId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "memberId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "view": {
              "type": "string",
              "enum": [
                "activity",
                "completed",
                "time"
              ]
            }
          }
        },
        "seconds": {
          "type": "number"
        },
        "billableSeconds": {
          "type": "number"
        },
        "runningSeconds": {
          "type": "number"
        },
        "reviewSeconds": {
          "type": "object",
          "properties": {
            "draft": {
              "type": "number"
            },
            "submitted": {
              "type": "number"
            },
            "returned": {
              "type": "number"
            },
            "approved": {
              "type": "number"
            }
          },
          "required": [
            "draft",
            "submitted",
            "returned",
            "approved"
          ]
        },
        "tasks": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "title": {
                "type": "string"
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 200
              },
              "projectName": {
                "type": "string"
              },
              "projectArchived": {
                "type": "boolean"
              },
              "clientName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "clientId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "completed"
                ]
              },
              "statusName": {
                "type": "string"
              },
              "assigneeId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "assigneeName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "completedAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "completedInPeriod": {
                "type": "boolean"
              },
              "hasTimeInPeriod": {
                "type": "boolean"
              },
              "result": {
                "type": "string"
              },
              "seconds": {
                "type": "number"
              },
              "billableSeconds": {
                "type": "number"
              },
              "reviewSeconds": {
                "type": "object",
                "properties": {
                  "draft": {
                    "type": "number"
                  },
                  "submitted": {
                    "type": "number"
                  },
                  "returned": {
                    "type": "number"
                  },
                  "approved": {
                    "type": "number"
                  }
                },
                "required": [
                  "draft",
                  "submitted",
                  "returned",
                  "approved"
                ]
              },
              "slices": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "entryId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "date": {
                      "type": "string"
                    },
                    "week": {
                      "type": "string"
                    },
                    "startedAt": {
                      "type": "string"
                    },
                    "stoppedAt": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sliceStart": {
                      "type": "string"
                    },
                    "sliceEnd": {
                      "type": "string"
                    },
                    "seconds": {
                      "type": "number"
                    },
                    "userId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "memberName": {
                      "type": "string"
                    },
                    "clientId": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "clientName": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "projectId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "projectName": {
                      "type": "string"
                    },
                    "taskId": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "taskTitle": {
                      "type": "string"
                    },
                    "billable": {
                      "type": "boolean"
                    },
                    "reviewStatus": {
                      "type": "string",
                      "enum": [
                        "draft",
                        "submitted",
                        "returned",
                        "approved"
                      ]
                    },
                    "running": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "entryId",
                    "date",
                    "week",
                    "startedAt",
                    "stoppedAt",
                    "sliceStart",
                    "sliceEnd",
                    "seconds",
                    "userId",
                    "memberName",
                    "clientId",
                    "clientName",
                    "projectId",
                    "projectName",
                    "taskId",
                    "taskTitle",
                    "billable",
                    "reviewStatus",
                    "running"
                  ]
                }
              }
            },
            "required": [
              "id",
              "title",
              "projectId",
              "projectName",
              "projectArchived",
              "clientName",
              "clientId",
              "status",
              "statusName",
              "assigneeId",
              "assigneeName",
              "completedAt",
              "completedInPeriod",
              "hasTimeInPeriod",
              "result",
              "seconds",
              "billableSeconds",
              "reviewSeconds",
              "slices"
            ]
          }
        },
        "completedCount": {
          "type": "number"
        },
        "tasksWithTimeCount": {
          "type": "number"
        },
        "completedWithoutTimeCount": {
          "type": "number"
        },
        "undatedCompletedCount": {
          "type": "number"
        },
        "fingerprint": {
          "type": "string"
        }
      },
      "required": [
        "orgId",
        "admin",
        "timezone",
        "sampledAt",
        "filters",
        "seconds",
        "billableSeconds",
        "runningSeconds",
        "reviewSeconds",
        "tasks",
        "completedCount",
        "tasksWithTimeCount",
        "completedWithoutTimeCount",
        "undatedCompletedCount",
        "fingerprint"
      ]
    }
  },
  "required": [
    "data"
  ]
}
GET/reports/entries.csvExport a matching entries report snapshot

Export a matching entries report snapshot

Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: exportEntriesCsv

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "clientId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "memberId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "view": {
      "type": "string",
      "enum": [
        "activity",
        "completed",
        "time"
      ]
    },
    "sampledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "fingerprint": {
      "type": "string",
      "pattern": "^[a-f\\d]{64}$"
    }
  },
  "required": [
    "sampledAt",
    "fingerprint"
  ],
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string"
}
GET/reports/tasks.csvExport a matching tasks report snapshot

Export a matching tasks report snapshot

Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: exportTasksCsv

Query parameters

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "clientId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "memberId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "view": {
      "type": "string",
      "enum": [
        "activity",
        "completed",
        "time"
      ]
    },
    "sampledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "fingerprint": {
      "type": "string",
      "pattern": "^[a-f\\d]{64}$"
    }
  },
  "required": [
    "sampledAt",
    "fingerprint"
  ],
  "additionalProperties": false
}
Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "string"
}
POST/reports/client-summaryGenerate a client summary without sending it

Generate a client summary without sending it

Access: Organization or selected project
Permissions: reports:read · Success: 200 · Operation: createClientSummary

JSON body

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "clientId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "projectId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "memberId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "view": {
      "type": "string",
      "enum": [
        "activity",
        "completed",
        "time"
      ]
    },
    "sampledAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "fingerprint": {
      "type": "string",
      "pattern": "^[a-f\\d]{64}$"
    },
    "taskIds": {
      "minItems": 1,
      "maxItems": 10000,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "includeTime": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "sampledAt",
    "fingerprint",
    "taskIds"
  ],
  "additionalProperties": false
}

Also send a UUID Idempotency-Key header.

Response schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        },
        "count": {
          "type": "number"
        }
      },
      "required": [
        "text",
        "count"
      ]
    }
  },
  "required": [
    "data"
  ]
}

Install Team Time

Give your workspace a place in your Dock or home screen, so it’s always easy to find.

    An internet connection is needed to load and save your work.