Coder Tasks API
The Tasks API from Coder — 9 operation(s) for tasks.
The Tasks API from Coder — 9 operation(s) for tasks.
openapi: 3.0.3
info:
description: Coderd is the service created by running coder server. It is a thin API that connects workspaces, provisioners and users. coderd stores its state in Postgres and is the only service that communicates with Postgres.
title: Coder Agents Tasks API
termsOfService: https://coder.com/legal/terms-of-service
contact:
name: API Support
url: https://coder.com
email: support@coder.com
license:
name: AGPL-3.0
url: https://github.com/coder/coder/blob/main/LICENSE
version: '2.0'
servers:
- url: https://{coderHost}/api/v2
description: Coder instance
variables:
coderHost:
default: coder.example.com
description: Your Coder deployment hostname
security:
- CoderSessionToken: []
tags:
- name: Tasks
paths:
/api/v2/tasks:
get:
operationId: list-ai-tasks
summary: List AI tasks
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: q
in: query
required: false
description: 'Search query for filtering tasks. Supports: owner:<username/uuid/me>, organization:<org-name/uuid>, status:<status>'
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.TasksListResponse'
/api/v2/tasks/{user}:
post:
operationId: create-a-new-ai-task
summary: Create a new AI task
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateTaskRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Task'
/api/v2/tasks/{user}/{task}:
get:
operationId: get-ai-task-by-id-or-name
summary: Get AI task by ID or name
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID, or task name
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Task'
delete:
operationId: delete-ai-task
summary: Delete AI task
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID, or task name
schema:
type: string
responses:
'202':
description: Accepted
/api/v2/tasks/{user}/{task}/input:
patch:
operationId: update-ai-task-input
summary: Update AI task input
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID, or task name
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateTaskInputRequest'
responses:
'204':
description: No Content
/api/v2/tasks/{user}/{task}/logs:
get:
operationId: get-ai-task-logs
summary: Get AI task logs
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID, or task name
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.TaskLogsResponse'
/api/v2/tasks/{user}/{task}/pause:
post:
operationId: pause-task
summary: Pause task
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID
schema:
type: string
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.PauseTaskResponse'
/api/v2/tasks/{user}/{task}/resume:
post:
operationId: resume-task
summary: Resume task
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID
schema:
type: string
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.ResumeTaskResponse'
/api/v2/tasks/{user}/{task}/send:
post:
operationId: send-input-to-ai-task
summary: Send input to AI task
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: Username, user ID, or 'me' for the authenticated user
schema:
type: string
- name: task
in: path
required: true
description: Task ID, or task name
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.TaskSendRequest'
responses:
'204':
description: No Content
/api/v2/workspaceagents/me/tasks/{task}/log-snapshot:
post:
operationId: upload-task-log-snapshot
summary: Upload task log snapshot
tags:
- Tasks
security:
- CoderSessionToken: []
parameters:
- name: task
in: path
required: true
description: Task ID
schema:
type: string
- name: format
in: query
required: true
description: Snapshot format
schema:
type: string
enum:
- agentapi
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'204':
description: No Content
components:
schemas:
codersdk.BuildReason:
type: string
enum:
- initiator
- autostart
- autostop
- dormancy
- dashboard
- cli
- ssh_connection
- vscode_connection
- jetbrains_connection
- task_auto_pause
- task_manual_pause
- task_resume
codersdk.AgentSubsystem:
type: string
enum:
- envbox
- envbuilder
- exectrace
codersdk.TaskState:
type: string
enum:
- working
- idle
- complete
- failed
codersdk.DisplayApp:
type: string
enum:
- vscode
- vscode_insiders
- web_terminal
- port_forwarding_helper
- ssh_helper
codersdk.WorkspaceAgentHealth:
type: object
properties:
healthy:
type: boolean
description: Healthy is true if the agent is healthy.
example: false
reason:
type: string
description: Reason is a human-readable explanation of the agent's health. It is empty if Healthy is true.
example: agent has lost connection
codersdk.WorkspaceBuild:
type: object
properties:
build_number:
type: integer
created_at:
type: string
format: date-time
daily_cost:
type: integer
deadline:
type: string
format: date-time
has_ai_task:
type: boolean
description: 'Deprecated: This field has been deprecated in favor of Task WorkspaceID.'
has_external_agent:
type: boolean
id:
type: string
format: uuid
initiator_id:
type: string
format: uuid
initiator_name:
type: string
job:
$ref: '#/components/schemas/codersdk.ProvisionerJob'
matched_provisioners:
$ref: '#/components/schemas/codersdk.MatchedProvisioners'
max_deadline:
type: string
format: date-time
reason:
enum:
- initiator
- autostart
- autostop
allOf:
- $ref: '#/components/schemas/codersdk.BuildReason'
resources:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceResource'
status:
enum:
- pending
- starting
- running
- stopping
- stopped
- failed
- canceling
- canceled
- deleting
- deleted
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceStatus'
template_version_id:
type: string
format: uuid
template_version_name:
type: string
template_version_preset_id:
type: string
format: uuid
transition:
enum:
- start
- stop
- delete
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceTransition'
updated_at:
type: string
format: date-time
workspace_id:
type: string
format: uuid
workspace_name:
type: string
workspace_owner_avatar_url:
type: string
workspace_owner_id:
type: string
format: uuid
workspace_owner_name:
type: string
description: WorkspaceOwnerName is the username of the owner of the workspace.
codersdk.PauseTaskResponse:
type: object
properties:
workspace_build:
$ref: '#/components/schemas/codersdk.WorkspaceBuild'
uuid.NullUUID:
type: object
properties:
uuid:
type: string
valid:
type: boolean
description: Valid is true if UUID is not NULL
codersdk.UpdateTaskInputRequest:
type: object
properties:
input:
type: string
codersdk.ProvisionerJobStatus:
type: string
enum:
- pending
- running
- succeeded
- canceling
- canceled
- failed
- unknown
codersdk.DERPRegion:
type: object
properties:
latency_ms:
type: number
preferred:
type: boolean
codersdk.TaskLogsResponse:
type: object
properties:
logs:
type: array
items:
$ref: '#/components/schemas/codersdk.TaskLogEntry'
snapshot:
type: boolean
snapshot_at:
type: string
codersdk.ResumeTaskResponse:
type: object
properties:
workspace_build:
$ref: '#/components/schemas/codersdk.WorkspaceBuild'
codersdk.WorkspaceAgentScriptStatus:
type: string
enum:
- ok
- exit_failure
- timed_out
- pipes_left_open
codersdk.ProvisionerJobType:
type: string
enum:
- template_version_import
- workspace_build
- template_version_dry_run
codersdk.WorkspaceAgentStartupScriptBehavior:
type: string
enum:
- blocking
- non-blocking
codersdk.WorkspaceApp:
type: object
properties:
command:
type: string
display_name:
type: string
description: DisplayName is a friendly name for the app.
external:
type: boolean
description: 'External specifies whether the URL should be opened externally on
the client or not.'
group:
type: string
health:
$ref: '#/components/schemas/codersdk.WorkspaceAppHealth'
healthcheck:
description: Healthcheck specifies the configuration for checking app health.
allOf:
- $ref: '#/components/schemas/codersdk.Healthcheck'
hidden:
type: boolean
icon:
type: string
description: 'Icon is a relative path or external URL that specifies
an icon to be displayed in the dashboard.'
id:
type: string
format: uuid
open_in:
$ref: '#/components/schemas/codersdk.WorkspaceAppOpenIn'
sharing_level:
enum:
- owner
- authenticated
- organization
- public
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceAppSharingLevel'
slug:
type: string
description: Slug is a unique identifier within the agent.
statuses:
type: array
description: Statuses is a list of statuses for the app.
items:
$ref: '#/components/schemas/codersdk.WorkspaceAppStatus'
subdomain:
type: boolean
description: 'Subdomain denotes whether the app should be accessed via a path on the
`coder server` or via a hostname-based dev URL. If this is set to true
and there is no app wildcard configured on the server, the app will not
be accessible in the UI.'
subdomain_name:
type: string
description: SubdomainName is the application domain exposed on the `coder server`.
tooltip:
type: string
description: 'Tooltip is an optional markdown supported field that is displayed
when hovering over workspace apps in the UI.'
url:
type: string
description: 'URL is the address being proxied to inside the workspace.
If external is specified, this will be opened on the client.'
codersdk.WorkspaceAgentLifecycle:
type: string
enum:
- created
- starting
- start_timeout
- start_error
- ready
- shutting_down
- shutdown_timeout
- shutdown_error
- 'off'
codersdk.WorkspaceAppStatusState:
type: string
enum:
- working
- idle
- complete
- failure
codersdk.WorkspaceAppStatus:
type: object
properties:
agent_id:
type: string
format: uuid
app_id:
type: string
format: uuid
created_at:
type: string
format: date-time
icon:
type: string
description: 'Deprecated: This field is unused and will be removed in a future version.
Icon is an external URL to an icon that will be rendered in the UI.'
id:
type: string
format: uuid
message:
type: string
needs_user_attention:
type: boolean
description: 'Deprecated: This field is unused and will be removed in a future version.
NeedsUserAttention specifies whether the status needs user attention.'
state:
$ref: '#/components/schemas/codersdk.WorkspaceAppStatusState'
uri:
type: string
description: 'URI is the URI of the resource that the status is for.
e.g. https://github.com/org/repo/pull/123
e.g. file:///path/to/file'
workspace_id:
type: string
format: uuid
codersdk.WorkspaceResource:
type: object
properties:
agents:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceAgent'
created_at:
type: string
format: date-time
daily_cost:
type: integer
hide:
type: boolean
icon:
type: string
id:
type: string
format: uuid
job_id:
type: string
format: uuid
metadata:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceResourceMetadata'
name:
type: string
type:
type: string
workspace_transition:
enum:
- start
- stop
- delete
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceTransition'
codersdk.WorkspaceStatus:
type: string
enum:
- pending
- starting
- running
- stopping
- stopped
- failed
- canceling
- canceled
- deleting
- deleted
codersdk.TaskSendRequest:
type: object
properties:
input:
type: string
codersdk.WorkspaceAgent:
type: object
properties:
api_version:
type: string
apps:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceApp'
architecture:
type: string
connection_timeout_seconds:
type: integer
created_at:
type: string
format: date-time
directory:
type: string
disconnected_at:
type: string
format: date-time
display_apps:
type: array
items:
$ref: '#/components/schemas/codersdk.DisplayApp'
environment_variables:
type: object
additionalProperties:
type: string
expanded_directory:
type: string
first_connected_at:
type: string
format: date-time
health:
description: Health reports the health of the agent.
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceAgentHealth'
id:
type: string
format: uuid
instance_id:
type: string
last_connected_at:
type: string
format: date-time
latency:
type: object
description: DERPLatency is mapped by region name (e.g. "New York City", "Seattle").
additionalProperties:
$ref: '#/components/schemas/codersdk.DERPRegion'
lifecycle_state:
$ref: '#/components/schemas/codersdk.WorkspaceAgentLifecycle'
log_sources:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceAgentLogSource'
logs_length:
type: integer
logs_overflowed:
type: boolean
name:
type: string
operating_system:
type: string
parent_id:
format: uuid
allOf:
- $ref: '#/components/schemas/uuid.NullUUID'
ready_at:
type: string
format: date-time
resource_id:
type: string
format: uuid
scripts:
type: array
items:
$ref: '#/components/schemas/codersdk.WorkspaceAgentScript'
started_at:
type: string
format: date-time
startup_script_behavior:
description: 'StartupScriptBehavior is a legacy field that is deprecated in favor
of the `coder_script` resource. It''s only referenced by old clients.
Deprecated: Remove in the future!'
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceAgentStartupScriptBehavior'
status:
$ref: '#/components/schemas/codersdk.WorkspaceAgentStatus'
subsystems:
type: array
items:
$ref: '#/components/schemas/codersdk.AgentSubsystem'
troubleshooting_url:
type: string
updated_at:
type: string
format: date-time
version:
type: string
codersdk.WorkspaceAppHealth:
type: string
enum:
- disabled
- initializing
- healthy
- unhealthy
codersdk.ProvisionerJob:
type: object
properties:
available_workers:
type: array
items:
type: string
format: uuid
canceled_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
created_at:
type: string
format: date-time
error:
type: string
error_code:
enum:
- REQUIRED_TEMPLATE_VARIABLES
- INSUFFICIENT_QUOTA
allOf:
- $ref: '#/components/schemas/codersdk.JobErrorCode'
file_id:
type: string
format: uuid
id:
type: string
format: uuid
initiator_id:
type: string
format: uuid
input:
$ref: '#/components/schemas/codersdk.ProvisionerJobInput'
logs_overflowed:
type: boolean
metadata:
$ref: '#/components/schemas/codersdk.ProvisionerJobMetadata'
organization_id:
type: string
format: uuid
queue_position:
type: integer
queue_size:
type: integer
started_at:
type: string
format: date-time
status:
enum:
- pending
- running
- succeeded
- canceling
- canceled
- failed
allOf:
- $ref: '#/components/schemas/codersdk.ProvisionerJobStatus'
tags:
type: object
additionalProperties:
type: string
type:
$ref: '#/components/schemas/codersdk.ProvisionerJobType'
worker_id:
type: string
format: uuid
worker_name:
type: string
codersdk.JobErrorCode:
type: string
enum:
- REQUIRED_TEMPLATE_VARIABLES
- INSUFFICIENT_QUOTA
codersdk.WorkspaceAgentScript:
type: object
properties:
cron:
type: string
display_name:
type: string
exit_code:
type: integer
id:
type: string
format: uuid
log_path:
type: string
log_source_id:
type: string
format: uuid
run_on_start:
type: boolean
run_on_stop:
type: boolean
script:
type: string
start_blocks_login:
type: boolean
status:
$ref: '#/components/schemas/codersdk.WorkspaceAgentScriptStatus'
timeout:
type: integer
codersdk.WorkspaceResourceMetadata:
type: object
properties:
key:
type: string
sensitive:
type: boolean
value:
type: string
codersdk.ProvisionerJobInput:
type: object
properties:
error:
type: string
template_version_id:
type: string
format: uuid
workspace_build_id:
type: string
format: uuid
codersdk.WorkspaceAgentStatus:
type: string
enum:
- connecting
- connected
- disconnected
- timeout
codersdk.WorkspaceAppSharingLevel:
type: string
enum:
- owner
- authenticated
- organization
- public
codersdk.TaskLogEntry:
type: object
properties:
content:
type: string
id:
type: integer
time:
type: string
format: date-time
type:
$ref: '#/components/schemas/codersdk.TaskLogType'
codersdk.WorkspaceAppOpenIn:
type: string
enum:
- slim-window
- tab
codersdk.ProvisionerJobMetadata:
type: object
properties:
template_display_name:
type: string
template_icon:
type: string
template_id:
type: string
format: uuid
template_name:
type: string
template_version_name:
type: string
workspace_build_transition:
$ref: '#/components/schemas/codersdk.WorkspaceTransition'
workspace_id:
type: string
format: uuid
workspace_name:
type: string
codersdk.WorkspaceAgentLogSource:
type: object
properties:
created_at:
type: string
format: date-time
display_name:
type: string
icon:
type: string
id:
type: string
format: uuid
workspace_agent_id:
type: string
format: uuid
codersdk.MatchedProvisioners:
type: object
properties:
available:
type: integer
description: 'Available is the number of provisioner daemons that are available to
take jobs. This may be less than the count if some provisioners are
busy or have been stopped.'
count:
type: integer
description: 'Count is the number of provisioner daemons that matched the given
tags. If the count is 0, it means no provisioner daemons matched the
requested tags.'
most_recently_seen:
type: string
format: date-time
description: 'MostRecentlySeen is the most recently seen time of the set of matched
provisioners. If no provisioners matched, this field will be null.'
codersdk.TaskLogType:
type: string
enum:
- input
- output
codersdk.Healthcheck:
type: object
properties:
interval:
type: integer
description: Interval specifies the seconds between each health check.
threshold:
type: integer
description: Threshold specifies the number of consecutive failed health checks before returning "unhealthy".
url:
type: string
description: URL specifies the endpoint to check for the app health.
codersdk.TasksListResponse:
type: object
properties:
count:
type: integer
tasks:
type: array
items:
$ref: '#/components/schemas/codersdk.Task'
codersdk.TaskStateEntry:
type: object
properties:
message:
type: string
state:
$ref: '#/components/schemas/codersdk.TaskState'
timestamp:
type: string
format: date-time
uri:
type: string
codersdk.Task:
type: object
properties:
created_at:
type: string
format: date-time
current_state:
$ref: '#/components/schemas/codersdk.TaskStateEntry'
display_name:
type: string
id:
type: string
format: uuid
initial_prompt:
type: string
name:
type: string
organization_id:
type: string
format: uuid
owner_avatar_url:
type: string
owner_id:
type: string
format: uuid
owner_name:
type: string
status:
enum:
- pending
- initializing
- active
- paused
- unknown
- error
allOf:
- $ref: '#/components/schemas/codersdk.TaskStatus'
template_display_name:
type: string
template_icon:
type: string
template_id:
type: string
format: uuid
template_name:
type: string
template_version_id:
type: string
format: uuid
updated_at:
type: string
format: date-time
workspace_agent_health:
$ref: '#/components/schemas/codersdk.WorkspaceAgentHealth'
workspace_agent_id:
format: uuid
allOf:
- $ref: '#/components/schemas/uuid.NullUUID'
workspace_agent_lifecycle:
$ref: '#/components/schemas/codersdk.WorkspaceAgentLifecycle'
workspace_app_id:
format: uuid
allOf:
- $ref: '#/components/schemas/uuid.NullUUID'
workspace_build_number:
type: integer
workspace_id:
format: uuid
allOf:
- $ref: '#/components/schemas/uuid.NullUUID'
workspace_name:
type: string
workspace_status:
enum:
- pending
- starting
- running
- stopping
- stopped
- failed
- canceling
- canceled
- deleting
- deleted
allOf:
- $ref: '#/components/schemas/codersdk.WorkspaceStatus'
codersdk.WorkspaceTransition:
type: string
enum:
- start
- stop
- delete
codersdk.TaskStatus:
type: string
enum:
- pending
- initializing
- active
- paused
- unknown
- error
codersdk.CreateTaskRequest:
type: object
properties:
display_name:
type: string
input:
type: string
name:
type: string
template_version_id:
type: string
format: uuid
template_version_preset_id:
type: string
format: uuid
securitySchemes:
CoderSessionToken:
type: apiKey
in: header
name: Coder-Session-Token
externalDocs: {}