Run task thread

POST/v1/tasks/{taskId}/run-thread

Create a new Thread and durable agent-session attempt for a task, link both to the task, and either execute synchronously or return the queued execution for deferred processing. When the ticket type is loop, the platform resolves and pins the ticket's Loop contract, Agents, Project, exact environment, attachments, and budgets into an immutable run of the locked system.task-loop Metronome. The server then performs bounded worker/verifier iterations until independently verified success, a safety budget, a blocker, or cancellation stops the run.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
taskIdpathstringYesTask ID
Query parameters
None.
Header parameters
NameLocationTypeRequiredDescription
Idempotency-KeyheaderstringNoA client-generated key that makes retries return the original task-agent attempt without launching another execution.

Body schema

Content type: application/json · Optional

FieldTypeRequiredDescription
executionModeblocking | deferredNoExecute before returning (`blocking`) or prepare the thread without running it (`deferred`). Set queueInBatch with deferred mode to atomically persist the prepared execution in Batches. Loop tickets use the same system Metronome in both modes.
idempotencyKeystringNoBody alternative to the Idempotency-Key header. If both are supplied, they must match.
titlestringNoOptional title override for the created thread.
environmentIdstringNoComputer ID.
agentIdstringNoAgent ID.
moveToInProgressbooleanNo—
metadataobjectNoFree-form metadata object.
messagestringNoOptional execution message. Defaults to the task prompt.
contentstringNoBackwards-compatible alias for message.
taskstringNoBackwards-compatible alias for message.
queueWhenCapacityUnavailablebooleanNoPersist blocking ticket work in Batches when runtime capacity is unavailable. Defaults to true on local appliances and false on cloud deployments.
queueInBatchbooleanNoWith deferred mode, atomically create the prepared thread, task-agent session, and durable Project ticket Batch receipt. Manual and stay-on-shelf jobs remain held until explicitly started.
batchobjectNo—
batch.namestringNoOptional shelf label. Defaults to the ticket title.
batch.descriptionstringNoHuman-readable description.
batch.startPolicymanual | stay_on_shelf | when_capacity_availableNo—
batch.definitionobjectNoRuntime options retained with the Project ticket action.
batch.metadataobjectNoFree-form metadata object.

What the API returns

Each response code below includes the documented payload shape for the ACP API.

200Existing task-agent attempt returned for an idempotent replayapplication/json
FieldTypeRequiredDescription
threadobjectNo—
thread.idstringNoUnique identifier.
thread.userIdstringNoUser ID.
thread.organizationIdstringNo—
thread.createdByUserIdstringNo—
thread.projectIdstringNoProject ID.
thread.environmentIdstringNoComputer ID.
thread.agentIdstringNoAgent ID.
thread.titlestringNoDisplay title.
thread.taskstringNo—
thread.appIdstringNo—
thread.statusactive | running | permission_asked | completed | failed | archived | cancelled | deletedNoCurrent lifecycle status.
thread.contextIdstringNo—
thread.contextNamestringNo—
thread.messageCountintegerNo—
thread.lastMessageAtstringNo—
thread.lastMessagePreviewstringNo—
thread.inputTokensintegerNo—
thread.outputTokensintegerNo—
thread.cacheTokensintegerNo—
thread.totalTokensintegerNo—
thread.agentCostnumberNo—
thread.agentCostUsdnumberNo—
thread.environmentCostnumberNo—
thread.environmentCostUsdnumberNo—
thread.totalCostnumberNo—
thread.totalCostUsdnumberNo—
thread.agentCTintegerNo—
thread.environmentCTintegerNo—
thread.totalCTintegerNo—
thread.environmentMinutesnumberNo—
thread.environmentStorageGBnumberNo—
thread.attachmentsobject[]No—
thread.metadataobjectNoFree-form metadata object.
thread.teamExecutionobjectNo—
thread.teamExecution.modeteamNo—
thread.teamExecution.teamAgentIdstringNo—
thread.teamExecution.teamAgentNamestringNo—
thread.teamExecution.orchestratorobjectNo—
thread.teamExecution.orchestrator.agentIdstringNoAgent ID.
thread.teamExecution.orchestrator.agentNamestringNo—
thread.teamExecution.orchestrator.claudeAgentNamestringNo—
thread.teamExecution.subagentsobject[]No—
thread.teamExecution.subagents[].agentIdstringNoAgent ID.
thread.teamExecution.subagents[].agentNamestringNo—
thread.teamExecution.subagents[].claudeAgentNamestringNo—
thread.subagentActivityobject[]No—
thread.subagentActivity[].agentIdstringNoAgent ID.
thread.subagentActivity[].agentNamestringNo—
thread.subagentActivity[].claudeAgentNamestringNo—
thread.subagentActivity[].eventCountintegerNo—
thread.subagentActivity[].lastActiveAtstringNo—
thread.subagentActivity[].teamAgentIdstringNo—
thread.subagentActivity[].teamAgentNamestringNo—
thread.environmentNamestringNo—
thread.agentNamestringNo—
thread.agentPhotoUrlstringNo—
thread.agentAvatarUrlstringNo—
thread.startedAtstringNoISO 8601 timestamp.
thread.completedAtstringNoISO 8601 timestamp.
thread.durationstringNo—
thread.queuedInBatchbooleanNo—
thread.batchJobIdstringNo—
thread.admissionReasonstringNo—
thread.createdAtstringNoISO 8601 timestamp.
thread.updatedAtstringNoISO 8601 timestamp.
taskobjectNo—
task.idstringNoUnique identifier.
task.userIdstringNoUser ID.
task.organizationIdstringNo—
task.createdByUserIdstringNo—
task.creatorobjectNo—
task.creator.typeuser | agentYes—
task.creator.userIdstringNoUser ID.
task.creator.agentIdstringNoAgent ID.
task.creator.namestringNoHuman-readable name.
task.creator.avatarUrlstringNo—
task.projectIdstringNoProject ID.
task.releaseIdstringNo—
task.titlestringNoDisplay title.
task.descriptionstringNoHuman-readable description.
task.statusbacklog | todo | in_progress | blocked | in_review | done | canceledNoCurrent lifecycle status.
task.prioritylow | medium | high | urgentNo—
task.typetask | subtask | loopNo—
task.parentTaskIdstringNo—
task.loopobjectNo—
task.loop.schemaVersiontask_loop_v1No—
task.loop.enabledbooleanNo—
task.loop.goalstringNoEnd goal the loop should reach.
task.loop.endGoalstringNoAlias for goal.
task.loop.progressSignalstringNoObservable signal that shows each iteration is making progress.
task.loop.verificationCriteriastringNoHow the verifier should judge each iteration.
task.loop.successCriteriastringNoObjective condition that stops the loop successfully.
task.loop.maxIterationsintegerNo—
task.loop.noProgressLimitintegerNo—
task.loop.minimumScorenumberNoMinimum independently verified score required for success.
task.loop.maxDurationMinutesintegerNoWall-clock budget checked between worker/verifier iterations.
task.loop.maxDurationMsintegerNoNormalized wall-clock budget returned by the runtime.
task.loop.regressionPolicycontinue | stopNoWhether a materially regressing candidate stops the loop.
task.loop.workerAgentIdstringNo—
task.loop.verifierAgentIdstringNo—
task.sprintIdstringNo—
task.assigneeAgentIdstringNo—
task.dependencyIdsstring[]No—
task.linkedThreadIdsstring[]No—
task.lastStartedThreadIdstringNo—
task.scheduledStartAtstringNo—
task.scheduledEndAtstringNo—
task.dueAtstringNo—
task.completedAtstringNoISO 8601 timestamp.
task.sortOrdernumberNo—
task.metadataobjectNoFree-form metadata object.
task.createdAtstringNoISO 8601 timestamp.
task.updatedAtstringNoISO 8601 timestamp.
subtasksobject[]No—
subtasks[].idstringNoUnique identifier.
subtasks[].titlestringNoDisplay title.
subtasks[].descriptionstringNoHuman-readable description.
subtasks[].statusbacklog | todo | in_progress | blocked | in_review | done | canceledNoCurrent lifecycle status.
subtasks[].prioritylow | medium | high | urgentNo—
subtasks[].typetask | subtask | loopNo—
subtasks[].parentTaskIdstringNo—
subtasks[].loopobjectNo—
subtasks[].loop.schemaVersiontask_loop_v1No—
subtasks[].loop.enabledbooleanNo—
subtasks[].loop.goalstringNoEnd goal the loop should reach.
subtasks[].loop.endGoalstringNoAlias for goal.
subtasks[].loop.progressSignalstringNoObservable signal that shows each iteration is making progress.
subtasks[].loop.verificationCriteriastringNoHow the verifier should judge each iteration.
subtasks[].loop.successCriteriastringNoObjective condition that stops the loop successfully.
subtasks[].loop.maxIterationsintegerNo—
subtasks[].loop.noProgressLimitintegerNo—
subtasks[].loop.minimumScorenumberNoMinimum independently verified score required for success.
subtasks[].loop.maxDurationMinutesintegerNoWall-clock budget checked between worker/verifier iterations.
subtasks[].loop.maxDurationMsintegerNoNormalized wall-clock budget returned by the runtime.
subtasks[].loop.regressionPolicycontinue | stopNoWhether a materially regressing candidate stops the loop.
subtasks[].loop.workerAgentIdstringNo—
subtasks[].loop.verifierAgentIdstringNo—
subtasks[].assigneeAgentIdstringNo—
subtasks[].dependencyIdsstring[]No—
subtasks[].linkedThreadIdsstring[]No—
subtasks[].lastStartedThreadIdstringNo—
subtasks[].scheduledStartAtstringNo—
subtasks[].scheduledEndAtstringNo—
subtasks[].dueAtstringNo—
subtasks[].reviewRequiredbooleanNo—
subtasks[].reviewerActorIdstringNo—
subtasks[].reviewerActorKindstringNo—
subtasks[].reviewerNamestringNo—
agentSessionobjectNo—
agentSession.idstringYesUnique identifier.
agentSession.userIdstringYesUser ID.
agentSession.organizationIdstringNo—
agentSession.createdByUserIdstringNo—
agentSession.projectIdstringNoProject ID.
agentSession.taskIdstringYes—
agentSession.threadIdstringYesThread ID.
agentSession.agentIdstringNoAgent ID.
agentSession.environmentIdstringNoComputer ID.
agentSession.statequeued | active | awaiting_input | completed | failed | canceled | staleYes—
agentSession.triggerKindmanual | automation | schedule | api | retryYes—
agentSession.attemptNumberintegerYes—
agentSession.idempotencyKeystringYes—
agentSession.executionConfigobjectNo—
agentSession.limitsobjectNo—
agentSession.inputTokensintegerYes—
agentSession.outputTokensintegerYes—
agentSession.costUsdnumberNo—
agentSession.errorCodestringNo—
agentSession.errorMessagestringNo—
agentSession.startedAtstringNoISO 8601 timestamp.
agentSession.completedAtstringNoISO 8601 timestamp.
agentSession.metadataobjectNoFree-form metadata object.
agentSession.createdAtstringYesISO 8601 timestamp.
agentSession.updatedAtstringYesISO 8601 timestamp.
executionStartedbooleanNoTrue when the request executed the thread; false when deferred execution was requested.
idempotentReplaybooleanNoTrue when the request returned a previously created attempt and did not launch execution again.
queuedInBatchbooleanNoTrue when the request explicitly admitted this execution to Batches or runtime capacity moved it there.
batchJobIdstringNo—
batchJobobjectNo—
batchJob.idstringYesUnique identifier.
batchJob.userIdstringYesUser ID.
batchJob.organizationIdstringNo—
batchJob.createdByUserIdstringNo—
batchJob.ownerIdstringNo—
batchJob.ownerUserIdstringNo—
batchJob.ownerNamestringNo—
batchJob.ownerEmailstringNo—
batchJob.ownerAvatarUrlstringNo—
batchJob.ownerobjectNo—
batchJob.owner.userIdstringYesUser ID.
batchJob.owner.namestringYesHuman-readable name.
batchJob.owner.emailstringYes—
batchJob.owner.avatarUrlstringYes—
batchJob.creatorIdstringNo—
batchJob.creatorUserIdstringNo—
batchJob.creatorNamestringNo—
batchJob.creatorEmailstringNo—
batchJob.creatorAvatarUrlstringNo—
batchJob.creatorobjectNo—
batchJob.creator.userIdstringYesUser ID.
batchJob.creator.namestringYesHuman-readable name.
batchJob.creator.emailstringYes—
batchJob.creator.avatarUrlstringYes—
batchJob.namestringYesHuman-readable name.
batchJob.descriptionstringYesHuman-readable description.
batchJob.targetKindthread_run | metronome_run | evaluation_run | agent_optimization | project_ticket_actionYes—
batchJob.targetResourceIdstringNo—
batchJob.targetVersionIdstringNo—
batchJob.definitionobjectYesNative target definition. A Thread Batch may reference an existing thread with threadId (or targetResourceId), or create a new thread when released by providing message and optional agentId, environmentId/computerId, projectId, title, attachments, skills, reasoning effort, and cost boundaries.
batchJob.startPolicymanual | stay_on_shelf | when_capacity_availableYesmanual is a one-shot shelf job started explicitly; stay_on_shelf is also started explicitly but returns to the bottom of its shelf after every successful execution; when_capacity_available is automatically released by the scheduler when runtime capacity permits.
batchJob.statusheld | queued | dispatching | running | succeeded | failed | cancelledYesCurrent lifecycle status.
batchJob.queueLanestringYes—
batchJob.priorityintegerYes—
batchJob.positionintegerYes—
batchJob.maxAttemptsintegerYes—
batchJob.attemptCountintegerYes—
batchJob.executionGenerationintegerYes—
batchJob.availableAtstringYes—
batchJob.waitReasonstringNo—
batchJob.nativeResourceTypestringNo—
batchJob.nativeResourceIdstringNo—
batchJob.sourceProjectIdstringNo—
batchJob.sourceTicketIdstringNo—
batchJob.permissionSetstringYes—
batchJob.idempotencyKeystringNo—
batchJob.leaseOwnerstringNo—
batchJob.leaseExpiresAtstringNo—
batchJob.heartbeatAtstringNo—
batchJob.lastErrorstringNo—
batchJob.metadataobjectYesFree-form metadata object.
batchJob.createdAtstringYesISO 8601 timestamp.
batchJob.updatedAtstringYesISO 8601 timestamp.
batchJob.queuedAtstringNo—
batchJob.startedAtstringNoISO 8601 timestamp.
batchJob.completedAtstringNoISO 8601 timestamp.
executionobjectNo—
execution.successbooleanNoWhether the request succeeded.
execution.kindthread | system_workflowNo—
execution.ownerserverNo—
execution.statestringNoCurrent native execution state. Loop responses use the deterministic repeat-until result state when available.
execution.cancelledbooleanNo—
execution.systemWorkflowobjectNo—
execution.systemWorkflow.keysystem.task-loopNo—
execution.systemWorkflow.versionintegerNo—
execution.systemWorkflow.digeststringNo—
execution.loopRunobjectNo—
execution.loopRun.statusrunning | succeeded | exhausted | blocked | failed | cancelledYesCurrent lifecycle status.
execution.loopRun.stopReasonstringNo—
execution.loopRun.iterationCountintegerYes—
execution.loopRun.noProgressCountintegerYes—
execution.loopRun.bestScorenumberNo—
execution.loopRun.bestIterationintegerNo—
execution.loopRun.latestEvaluationobjectNoLatest independent verifier verdict, evidence, criteria coverage, critique, and next step.
execution.loopRun.usageobjectYes—
execution.loopRun.usage.durationMsnumberYes—
execution.loopRun.usage.inputTokensnumberYes—
execution.loopRun.usage.outputTokensnumberYes—
execution.loopRun.usage.computeTokensnumberYes—
execution.loopRun.usage.costUsdnumberYes—
execution.loopRun.usage.actionsnumberYes—
execution.responsestringNo—
execution.actionsstring[]No—
execution.durationMsnumberNo—
execution.usageobjectNo—
execution.usage.inputTokensnumberNo—
execution.usage.outputTokensnumberNo—
execution.usage.computeTokensnumberNo—
execution.usage.costUsdnumberNo—
execution.errorstringNo—
201Task thread and durable agent-session attempt createdapplication/json
FieldTypeRequiredDescription
threadobjectNo—
thread.idstringNoUnique identifier.
thread.userIdstringNoUser ID.
thread.organizationIdstringNo—
thread.createdByUserIdstringNo—
thread.projectIdstringNoProject ID.
thread.environmentIdstringNoComputer ID.
thread.agentIdstringNoAgent ID.
thread.titlestringNoDisplay title.
thread.taskstringNo—
thread.appIdstringNo—
thread.statusactive | running | permission_asked | completed | failed | archived | cancelled | deletedNoCurrent lifecycle status.
thread.contextIdstringNo—
thread.contextNamestringNo—
thread.messageCountintegerNo—
thread.lastMessageAtstringNo—
thread.lastMessagePreviewstringNo—
thread.inputTokensintegerNo—
thread.outputTokensintegerNo—
thread.cacheTokensintegerNo—
thread.totalTokensintegerNo—
thread.agentCostnumberNo—
thread.agentCostUsdnumberNo—
thread.environmentCostnumberNo—
thread.environmentCostUsdnumberNo—
thread.totalCostnumberNo—
thread.totalCostUsdnumberNo—
thread.agentCTintegerNo—
thread.environmentCTintegerNo—
thread.totalCTintegerNo—
thread.environmentMinutesnumberNo—
thread.environmentStorageGBnumberNo—
thread.attachmentsobject[]No—
thread.metadataobjectNoFree-form metadata object.
thread.teamExecutionobjectNo—
thread.teamExecution.modeteamNo—
thread.teamExecution.teamAgentIdstringNo—
thread.teamExecution.teamAgentNamestringNo—
thread.teamExecution.orchestratorobjectNo—
thread.teamExecution.orchestrator.agentIdstringNoAgent ID.
thread.teamExecution.orchestrator.agentNamestringNo—
thread.teamExecution.orchestrator.claudeAgentNamestringNo—
thread.teamExecution.subagentsobject[]No—
thread.teamExecution.subagents[].agentIdstringNoAgent ID.
thread.teamExecution.subagents[].agentNamestringNo—
thread.teamExecution.subagents[].claudeAgentNamestringNo—
thread.subagentActivityobject[]No—
thread.subagentActivity[].agentIdstringNoAgent ID.
thread.subagentActivity[].agentNamestringNo—
thread.subagentActivity[].claudeAgentNamestringNo—
thread.subagentActivity[].eventCountintegerNo—
thread.subagentActivity[].lastActiveAtstringNo—
thread.subagentActivity[].teamAgentIdstringNo—
thread.subagentActivity[].teamAgentNamestringNo—
thread.environmentNamestringNo—
thread.agentNamestringNo—
thread.agentPhotoUrlstringNo—
thread.agentAvatarUrlstringNo—
thread.startedAtstringNoISO 8601 timestamp.
thread.completedAtstringNoISO 8601 timestamp.
thread.durationstringNo—
thread.queuedInBatchbooleanNo—
thread.batchJobIdstringNo—
thread.admissionReasonstringNo—
thread.createdAtstringNoISO 8601 timestamp.
thread.updatedAtstringNoISO 8601 timestamp.
taskobjectNo—
task.idstringNoUnique identifier.
task.userIdstringNoUser ID.
task.organizationIdstringNo—
task.createdByUserIdstringNo—
task.creatorobjectNo—
task.creator.typeuser | agentYes—
task.creator.userIdstringNoUser ID.
task.creator.agentIdstringNoAgent ID.
task.creator.namestringNoHuman-readable name.
task.creator.avatarUrlstringNo—
task.projectIdstringNoProject ID.
task.releaseIdstringNo—
task.titlestringNoDisplay title.
task.descriptionstringNoHuman-readable description.
task.statusbacklog | todo | in_progress | blocked | in_review | done | canceledNoCurrent lifecycle status.
task.prioritylow | medium | high | urgentNo—
task.typetask | subtask | loopNo—
task.parentTaskIdstringNo—
task.loopobjectNo—
task.loop.schemaVersiontask_loop_v1No—
task.loop.enabledbooleanNo—
task.loop.goalstringNoEnd goal the loop should reach.
task.loop.endGoalstringNoAlias for goal.
task.loop.progressSignalstringNoObservable signal that shows each iteration is making progress.
task.loop.verificationCriteriastringNoHow the verifier should judge each iteration.
task.loop.successCriteriastringNoObjective condition that stops the loop successfully.
task.loop.maxIterationsintegerNo—
task.loop.noProgressLimitintegerNo—
task.loop.minimumScorenumberNoMinimum independently verified score required for success.
task.loop.maxDurationMinutesintegerNoWall-clock budget checked between worker/verifier iterations.
task.loop.maxDurationMsintegerNoNormalized wall-clock budget returned by the runtime.
task.loop.regressionPolicycontinue | stopNoWhether a materially regressing candidate stops the loop.
task.loop.workerAgentIdstringNo—
task.loop.verifierAgentIdstringNo—
task.sprintIdstringNo—
task.assigneeAgentIdstringNo—
task.dependencyIdsstring[]No—
task.linkedThreadIdsstring[]No—
task.lastStartedThreadIdstringNo—
task.scheduledStartAtstringNo—
task.scheduledEndAtstringNo—
task.dueAtstringNo—
task.completedAtstringNoISO 8601 timestamp.
task.sortOrdernumberNo—
task.metadataobjectNoFree-form metadata object.
task.createdAtstringNoISO 8601 timestamp.
task.updatedAtstringNoISO 8601 timestamp.
subtasksobject[]No—
subtasks[].idstringNoUnique identifier.
subtasks[].titlestringNoDisplay title.
subtasks[].descriptionstringNoHuman-readable description.
subtasks[].statusbacklog | todo | in_progress | blocked | in_review | done | canceledNoCurrent lifecycle status.
subtasks[].prioritylow | medium | high | urgentNo—
subtasks[].typetask | subtask | loopNo—
subtasks[].parentTaskIdstringNo—
subtasks[].loopobjectNo—
subtasks[].loop.schemaVersiontask_loop_v1No—
subtasks[].loop.enabledbooleanNo—
subtasks[].loop.goalstringNoEnd goal the loop should reach.
subtasks[].loop.endGoalstringNoAlias for goal.
subtasks[].loop.progressSignalstringNoObservable signal that shows each iteration is making progress.
subtasks[].loop.verificationCriteriastringNoHow the verifier should judge each iteration.
subtasks[].loop.successCriteriastringNoObjective condition that stops the loop successfully.
subtasks[].loop.maxIterationsintegerNo—
subtasks[].loop.noProgressLimitintegerNo—
subtasks[].loop.minimumScorenumberNoMinimum independently verified score required for success.
subtasks[].loop.maxDurationMinutesintegerNoWall-clock budget checked between worker/verifier iterations.
subtasks[].loop.maxDurationMsintegerNoNormalized wall-clock budget returned by the runtime.
subtasks[].loop.regressionPolicycontinue | stopNoWhether a materially regressing candidate stops the loop.
subtasks[].loop.workerAgentIdstringNo—
subtasks[].loop.verifierAgentIdstringNo—
subtasks[].assigneeAgentIdstringNo—
subtasks[].dependencyIdsstring[]No—
subtasks[].linkedThreadIdsstring[]No—
subtasks[].lastStartedThreadIdstringNo—
subtasks[].scheduledStartAtstringNo—
subtasks[].scheduledEndAtstringNo—
subtasks[].dueAtstringNo—
subtasks[].reviewRequiredbooleanNo—
subtasks[].reviewerActorIdstringNo—
subtasks[].reviewerActorKindstringNo—
subtasks[].reviewerNamestringNo—
agentSessionobjectNo—
agentSession.idstringYesUnique identifier.
agentSession.userIdstringYesUser ID.
agentSession.organizationIdstringNo—
agentSession.createdByUserIdstringNo—
agentSession.projectIdstringNoProject ID.
agentSession.taskIdstringYes—
agentSession.threadIdstringYesThread ID.
agentSession.agentIdstringNoAgent ID.
agentSession.environmentIdstringNoComputer ID.
agentSession.statequeued | active | awaiting_input | completed | failed | canceled | staleYes—
agentSession.triggerKindmanual | automation | schedule | api | retryYes—
agentSession.attemptNumberintegerYes—
agentSession.idempotencyKeystringYes—
agentSession.executionConfigobjectNo—
agentSession.limitsobjectNo—
agentSession.inputTokensintegerYes—
agentSession.outputTokensintegerYes—
agentSession.costUsdnumberNo—
agentSession.errorCodestringNo—
agentSession.errorMessagestringNo—
agentSession.startedAtstringNoISO 8601 timestamp.
agentSession.completedAtstringNoISO 8601 timestamp.
agentSession.metadataobjectNoFree-form metadata object.
agentSession.createdAtstringYesISO 8601 timestamp.
agentSession.updatedAtstringYesISO 8601 timestamp.
executionStartedbooleanNoTrue when the request executed the thread; false when deferred execution was requested.
idempotentReplaybooleanNoTrue when the request returned a previously created attempt and did not launch execution again.
queuedInBatchbooleanNoTrue when the request explicitly admitted this execution to Batches or runtime capacity moved it there.
batchJobIdstringNo—
batchJobobjectNo—
batchJob.idstringYesUnique identifier.
batchJob.userIdstringYesUser ID.
batchJob.organizationIdstringNo—
batchJob.createdByUserIdstringNo—
batchJob.ownerIdstringNo—
batchJob.ownerUserIdstringNo—
batchJob.ownerNamestringNo—
batchJob.ownerEmailstringNo—
batchJob.ownerAvatarUrlstringNo—
batchJob.ownerobjectNo—
batchJob.owner.userIdstringYesUser ID.
batchJob.owner.namestringYesHuman-readable name.
batchJob.owner.emailstringYes—
batchJob.owner.avatarUrlstringYes—
batchJob.creatorIdstringNo—
batchJob.creatorUserIdstringNo—
batchJob.creatorNamestringNo—
batchJob.creatorEmailstringNo—
batchJob.creatorAvatarUrlstringNo—
batchJob.creatorobjectNo—
batchJob.creator.userIdstringYesUser ID.
batchJob.creator.namestringYesHuman-readable name.
batchJob.creator.emailstringYes—
batchJob.creator.avatarUrlstringYes—
batchJob.namestringYesHuman-readable name.
batchJob.descriptionstringYesHuman-readable description.
batchJob.targetKindthread_run | metronome_run | evaluation_run | agent_optimization | project_ticket_actionYes—
batchJob.targetResourceIdstringNo—
batchJob.targetVersionIdstringNo—
batchJob.definitionobjectYesNative target definition. A Thread Batch may reference an existing thread with threadId (or targetResourceId), or create a new thread when released by providing message and optional agentId, environmentId/computerId, projectId, title, attachments, skills, reasoning effort, and cost boundaries.
batchJob.startPolicymanual | stay_on_shelf | when_capacity_availableYesmanual is a one-shot shelf job started explicitly; stay_on_shelf is also started explicitly but returns to the bottom of its shelf after every successful execution; when_capacity_available is automatically released by the scheduler when runtime capacity permits.
batchJob.statusheld | queued | dispatching | running | succeeded | failed | cancelledYesCurrent lifecycle status.
batchJob.queueLanestringYes—
batchJob.priorityintegerYes—
batchJob.positionintegerYes—
batchJob.maxAttemptsintegerYes—
batchJob.attemptCountintegerYes—
batchJob.executionGenerationintegerYes—
batchJob.availableAtstringYes—
batchJob.waitReasonstringNo—
batchJob.nativeResourceTypestringNo—
batchJob.nativeResourceIdstringNo—
batchJob.sourceProjectIdstringNo—
batchJob.sourceTicketIdstringNo—
batchJob.permissionSetstringYes—
batchJob.idempotencyKeystringNo—
batchJob.leaseOwnerstringNo—
batchJob.leaseExpiresAtstringNo—
batchJob.heartbeatAtstringNo—
batchJob.lastErrorstringNo—
batchJob.metadataobjectYesFree-form metadata object.
batchJob.createdAtstringYesISO 8601 timestamp.
batchJob.updatedAtstringYesISO 8601 timestamp.
batchJob.queuedAtstringNo—
batchJob.startedAtstringNoISO 8601 timestamp.
batchJob.completedAtstringNoISO 8601 timestamp.
executionobjectNo—
execution.successbooleanNoWhether the request succeeded.
execution.kindthread | system_workflowNo—
execution.ownerserverNo—
execution.statestringNoCurrent native execution state. Loop responses use the deterministic repeat-until result state when available.
execution.cancelledbooleanNo—
execution.systemWorkflowobjectNo—
execution.systemWorkflow.keysystem.task-loopNo—
execution.systemWorkflow.versionintegerNo—
execution.systemWorkflow.digeststringNo—
execution.loopRunobjectNo—
execution.loopRun.statusrunning | succeeded | exhausted | blocked | failed | cancelledYesCurrent lifecycle status.
execution.loopRun.stopReasonstringNo—
execution.loopRun.iterationCountintegerYes—
execution.loopRun.noProgressCountintegerYes—
execution.loopRun.bestScorenumberNo—
execution.loopRun.bestIterationintegerNo—
execution.loopRun.latestEvaluationobjectNoLatest independent verifier verdict, evidence, criteria coverage, critique, and next step.
execution.loopRun.usageobjectYes—
execution.loopRun.usage.durationMsnumberYes—
execution.loopRun.usage.inputTokensnumberYes—
execution.loopRun.usage.outputTokensnumberYes—
execution.loopRun.usage.computeTokensnumberYes—
execution.loopRun.usage.costUsdnumberYes—
execution.loopRun.usage.actionsnumberYes—
execution.responsestringNo—
execution.actionsstring[]No—
execution.durationMsnumberNo—
execution.usageobjectNo—
execution.usage.inputTokensnumberNo—
execution.usage.outputTokensnumberNo—
execution.usage.computeTokensnumberNo—
execution.usage.costUsdnumberNo—
execution.errorstringNo—
402Insufficient budget
None.
409Task is blocked by incomplete dependencies
None.
Run task thread
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow