Skip to content

Transition tasks

POST /api/v1/tasks/{taskId}/transition: request fields and declared response contract.

POST/api/v1/tasks/{taskId}/transition

Authorization
Permissiontask.update
Workspace scoperequired
Scope targetworkspace

Parameters

Path parameters
FieldTypeRequiredNullableDefault
taskIdstringrequirednon-null—

Query parameters: none.

Request body

Request body fields
FieldTypeRequiredNullableDefault
toStateKeystringrequirednon-null—
expectedStateKeystringoptionalnon-null—
reasonstringoptionalnon-null—

Response

200

Response fields
FieldTypeRequiredNullableDefault
dataobjectrequirednon-null—
data.taskIdstringrequirednon-null—
data.lifecycleDefinitionIdstringrequirednon-null—
data.lifecycleRevisionnumberrequirednon-null—
data.stateKeystringrequirednon-null—
data.statusstringrequirednon-null—
data.updatedAtstringrequirednon-null—
data.documentobjectrequirednon-null—
data.document.companyIdstringrequirednon-null—
data.document.workspaceIdunknownoptionalnon-null—
data.document.titlestringrequirednon-null—
data.document.workflowInstanceIdunknownoptionalnon-null—
data.document.targetRefunknownoptionalnon-null—
data.document.createdAtstringrequirednon-null—
data.document.updatedAtstringrequirednon-null—
data.document.dueAtunknownoptionalnon-null—
data.document.expiresAtunknownoptionalnon-null—
data.document.taskIdstringrequirednon-null—
data.document.fieldsunknownoptionalnon-null—
data.document.descriptionunknownoptionalnon-null—
data.document.taskType"pipeline_update" | "qa_verification" | "reengagement" | "general" | "recurring_reminder" | "email_review" | "meeting_notes" | "follow_up" | "follow_up_reminder" | "campaign_monitor" | "workflow_review" | "approval" | "schedule-meeting"requirednon-null—
data.document.status"idea" | "open" | "planned" | "in_progress" | "review" | "blocked" | "completed" | "cancelled" | "pending" | "approved" | "dismissed" | "expired"requirednon-null—
data.document.priority"high" | "normal" | "low"requirednon-null"normal"
data.document.lifecycleDefinitionIdunknownoptionalnon-null—
data.document.lifecycleRevisionunknownoptionalnon-null—
data.document.stateKeyunknownoptionalnon-null—
data.document.entityTypeunknownoptionalnon-null—
data.document.entityIdunknownoptionalnon-null—
data.document.emailDraftIdunknownoptionalnon-null—
data.document.suggestedActionunknownoptionalnon-null—
data.document.sourceTypeunknownoptionalnon-null—
data.document.sourceEntityunknownoptionalnon-null—
data.document.sourceIdunknownoptionalnon-null—
data.document.statusChangedAtunknownoptionalnon-null—
data.document.statusChangedByunknownoptionalnon-null—
data.document.assignedAtunknownoptionalnon-null—
data.document.assignedByunknownoptionalnon-null—
data.document.routingRuleIdunknownoptionalnon-null—
data.document.assignmentRevisionunknownoptionalnon-null—
data.document.activeAgentAttemptIdunknownoptionalnon-null—
data.document.agentAttemptCountunknownoptionalnon-null—
data.document.lockedByunknownoptionalnon-null—
data.document.lockedAtunknownoptionalnon-null—
data.document.lockTtlSecondsunknownoptionalnon-null—
data.document.contextunknownoptionalnon-null—
data.document.ttlunknownoptionalnon-null—

Declared failures

Declared failures
TASK_CAPABILITY_UNAVAILABLE503 — retryable
TASK_NOT_FOUND404 — not retryable
TASK_NOT_TERMINAL409 — not retryable
TASK_PRINCIPAL_NOT_ASSIGNABLE422 — not retryable
TASK_STATE_STALE409 — retryable
TASK_TRANSITION_NOT_SUPPORTED422 — not retryable

Readback

Read the result back with:

  • tasks.get

Request example

Schematic only. Replace placeholders with real values and include all required nested fields.

POST /api/v1/tasks/{taskId}/transition HTTP/1.1
Authorization: Bearer <token>
x-merulan-workspace-id: <workspace-id>
Content-Type: application/json

{
  "toStateKey": "<toStateKey>"
}