REST reference · v1
Update a task
PATCH
/v1/workspaces/{workspaceId}/tasks/{taskId}Task admin/contributor/reviewer. Reviewer can update status only. Reassignment is not exposed. Parent portal and company rights still apply.
Company permissions
Task admin/contributor/reviewer. Reviewer can update status only. Reassignment is not exposed. Parent portal and company rights still apply.
Required OAuth scopes: orchesphere.read, orchesphere.jobs. How scopes and company rights work.
Path and header parameters
| Name | Location | Required | Allowed values / bounds |
|---|---|---|---|
workspaceId | path | Yes | stringminLength: 8 · maxLength: 80 · pattern: ^[A-Za-z0-9_-]{8,80}$ |
taskId | path | Yes | stringminLength: 8 · maxLength: 80 · pattern: ^[A-Za-z0-9_-]{8,80}$ |
Request
JSON body: required.
| Field | Type | Required | Description / bounds |
|---|---|---|---|
title | string | No | minLength: 2 · maxLength: 240 |
description | string | No | maxLength: 6000 |
status | "todo" | "in_progress" | "blocked" | "review" | "done" | "cancelled" | No | — |
Complete request schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 2,
"maxLength": 240
},
"description": {
"type": "string",
"maxLength": 6000
},
"status": {
"type": "string",
"enum": [
"todo",
"in_progress",
"blocked",
"review",
"done",
"cancelled"
]
}
},
"required": [],
"additionalProperties": false,
"minProperties": 1
}http
PATCH /v1/workspaces/{workspaceId}/tasks/{taskId} HTTP/1.1
Host: api.orchesphere.ai
Authorization: Bearer <access_token>
Accept: application/json
Content-Type: application/json
{
"status": "in_progress"
}Use actual IDs returned for your assigned workspace. The example values are fictional. REST v1 accepts no query parameters.
Response · 200
| Field | Type | Required | Description / bounds |
|---|---|---|---|
ok | object | Yes | — |
workspaceId | string | Yes | minLength: 8 · maxLength: 80 · pattern: ^[A-Za-z0-9_-]{8,80}$ |
task | object | Yes | — |
Complete response schema
{
"type": "object",
"properties": {
"ok": {
"const": true
},
"workspaceId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,80}$",
"minLength": 8,
"maxLength": 80
},
"task": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,80}$",
"minLength": 8,
"maxLength": 80
},
"workspaceId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,80}$",
"minLength": 8,
"maxLength": 80
},
"portalId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{8,80}$",
"minLength": 8,
"maxLength": 80
},
"title": {
"type": "string",
"minLength": 2,
"maxLength": 240
},
"description": {
"type": "string",
"maxLength": 6000
},
"status": {
"type": "string",
"enum": [
"todo",
"in_progress",
"blocked",
"review",
"done",
"cancelled"
]
},
"assigneeEmail": {
"anyOf": [
{
"type": "string",
"format": "email"
},
{
"type": "null"
}
]
},
"createdBy": {
"type": "string"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"role": {
"type": "string",
"enum": [
"admin",
"contributor",
"reviewer",
"viewer"
]
},
"canEdit": {
"type": "boolean"
},
"canManage": {
"type": "boolean"
}
},
"required": [
"id",
"workspaceId",
"portalId",
"title",
"description",
"status",
"assigneeEmail",
"createdBy",
"createdAt",
"updatedAt",
"role",
"canEdit",
"canManage"
],
"additionalProperties": false
}
},
"required": [
"ok",
"workspaceId",
"task"
],
"additionalProperties": false
}json
{
"ok": true,
"workspaceId": "11111111-1111-4111-8111-111111111111",
"task": {
"id": "33333333-3333-4333-8333-333333333333",
"workspaceId": "11111111-1111-4111-8111-111111111111",
"portalId": "22222222-2222-4222-8222-222222222222",
"title": "Review the saved verification",
"description": "Requested work only.",
"status": "in_progress",
"assigneeEmail": null,
"createdBy": "developer@example.com",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"role": "contributor",
"canEdit": true,
"canManage": false
}
}Errors
| Status | Meaning |
|---|---|
400 | Invalid path/query/body/header or business validation. |
401 | Missing, expired, revoked, invalid or wrong-resource token. |
402 | Verified company payment is required. |
403 | Insufficient token scope or current company/service/portal/task authority. |
404 | Unknown endpoint or record not found/inaccessible. |
405 | Method is not supported for this path. |
409 | State, quota or idempotency conflict; re-read current state. |
413 | Request exceeds 24,000 bytes. |
415 | Use uncompressed application/json. |
429 | Company job/rate/paid-period allowance reached. |
503 | Temporarily unavailable; a lost mutation response does not prove nothing was saved. |