0.x — pre-release, no compatibility promise yet.What this means
Read a project
Read a project.
Authorizations
Section titled “Authorizations”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”An ETag you hold; unchanged → 304 with no body.
Responses
Section titled “ Responses ”Successful Response
Returned by projects.read, projects.replace and projects.update.
object
Organization ID (UUID)
Project name
Project status enum
Priority enum for projects and tasks
Who can see a project: public — every member of the organization; private — the project’s members and org admins. Also the organization’s default for new projects.
When true, project editors may add and remove members and change their roles. Set by the project owner or an org admin.
The project’s leads (there can be several); optional, usually empty.
One lead of a project: who, who set them, and when. A lead is distinct from the owner — the owner administers the project, a lead is accountable for delivering it.
Example
{ "org_id": "a1b2c3d4-5678-1234-9abc-def012345678", "name": "Website Redesign", "description": "Redesign the company website.", "metadata": { "budget": 10000 }, "status": "not_started", "priority": "high", "start_date": "2024-07-01", "end_date": "2024-12-31", "created_by": "string", "updated_by": "string", "is_active": true, "delete_reason": "string", "owner": "string", "team_members": [ "string" ], "visibility": "public", "team_id": "string", "project_id": "string", "editors_can_add_members": false, "leads": [ { "user_id": "string", "username": "string", "assigned_by": "string", "assigned_at": "2026-09-25T12:00:00Z" } ], "created_at": "2026-09-25T12:00:00Z", "updated_at": "2026-09-25T12:00:00Z", "deleted_at": "2026-09-25T12:00:00Z"}Not Modified — If-None-Match matched the current ETag (no body)
Bad request — a query parameter outside what the operation accepts (invalid-parameter)
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Bad request", "status": 400, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}Missing or invalid bearer token
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Missing or invalid bearer token", "status": 401, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}Authenticated, but not allowed
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Authenticated, but not allowed", "status": 403, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}Not found
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Not found", "status": 404, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}Conflict (a duplicate, or an Idempotency-Key still in flight)
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Conflict (a duplicate, or an `Idempotency-Key` still in flight)", "status": 409, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}If-Match does not match the current ETag
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "`If-Match` does not match the current `ETag`", "status": 412, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}The body or query did not validate (validation), or an Idempotency-Key was reused
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "The body or query did not validate (`validation`), or an `Idempotency-Key` was reused", "status": 422, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}An access token over its per-minute limit (rate-limit; see Retry-After)
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "An access token over its per-minute limit (`rate-limit`; see `Retry-After`)", "status": 429, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}Unexpected server error — quote request_id
An RFC 9457 problem details object — the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.
object
about:blank or a urn:tasksmate:problem:* identifier
Human-readable explanation (a string; for a 422, the list of validation errors)
Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter
object
Example
{ "type": "about:blank", "title": "Unexpected server error", "status": 500, "detail": "…", "instance": "/v1/…", "request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11"}