We use cookies to make your experience better.
Learn more about Coder's API.
To help you integrate Coder into your automated workflows, we've documented our API.
Please note that the API is under active development; expect breaking changes as we finalize the endpoints.
Use of the API requires authentication with a session token. You can generate one using the Coder CLI:
If you haven't already, authenticate your CLI with your workspace.
Run coder tokens create <TOKEN_NAME>
Save the token that's returned to use in your HTTP headers:
curl \
-X GET "https://apidocs.coder.com/api/" \
-H "accept: application/json" \
-H "Session-Token: Bk...nt"
These are example Coder API calls for common tasks. Note that the site-manager role is required to be perform specific actions and without it, API results will be limited to a user's member role.
Assign your Access URL, Session-Token and other resources like images and workspaces to variables for easier substitution in the curl commands.
export ACCESS_URL "https://coder.acme.com"
export API_KEY="MUdzI3UMvF-Qlwovt-----0CL0kTbADQl"
export API_ROUTE="api/v0"
export IMAGE_ID="622b3f6e-dd6fd08-----ba38c73c9639"
Other intervals include 1 week, 1 year, 90 day
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/metrics/usage/active-users?\
start=2022-01-01T00:00:00.000000Z&end=2022-03-31T00:00:00.000000Z\
&interval=1 month" \
--header "Session-Token: $API_KEY"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/audit?\
limit=10\
&resource_id=$WS_ID_PHP\
&resource_type=environment" \
--header "Session-Token: $API_KEY"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/audit?\
range_start=1646092800\
&range_end=1646697600\
&resource_type=environment\
&action=create" \
--header "Session-Token: $API_KEY"
curl --request POST \
--url $ACCESS_URL/$API_ROUTE/api-keys/613e75c4-faef2f87-----376e1f229b6 \
--header "Content-Type: application/json" \
--header "Session-Token: $API_KEY" \
--data '{
"name": "my-session-token"
}'
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/workspaces?users=$USER_ID" \
--header "Session-Token: $API_KEY"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/images/$IMAGE_ID" \
--header "Session-Token: $API_KEY"
Change
latest
to your tag name
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/images/$IMAGE_ID/tags/latest" \
--header "Session-Token: $API_KEY"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/workspaces?orgs=$ORG_ID" \
--header "Session-Token: $API_KEY"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/images/?org=$ORG_ID&workspaces=false" \
--header "Session-Token: $API_KEY"
curl --request POST \
--url "$ACCESS_URL/$API_ROUTE/images/$IMAGE_ID" \
--header "Session-Token: $API_KEY" \
--data "{}"
curl --request PATCH \
--url "$ACCESS_URL/$API_ROUTE/images/$IMAGE_ID" \
--header "Session-Token: $API_KEY" \
--data "{
\"default_memory_gb\": 8,
\"description\": \"3/26/22 increased RAM from 4 to 8 GB\"
}"
curl --request POST \
--url "$ACCESS_URL/$API_ROUTE/images" \
--header "Session-Token: $API_KEY" \
--header "Content-Type: application/json" \
--data "{
\"default_cpu_cores\": 4,
\"default_disk_gb\": 4,
\"default_memory_gb\": 10,
\"description\": \"IntelliJ 2020.3.4\",
\"org_id\": \"$ORG_ID\",
\"registry_id\": \"$REG_ID\",
\"repository\": \"marktmilligan/intellij-ultimate\",
\"tag\": \"2020.3.4\"
}"
curl --request PATCH \
--url "$ACCESS_URL/$API_ROUTE/images/$IMAGE_ID" \
--header "Session-Token: $API_KEY" \
--data "{
\"deprecated\": true
}"
curl --request PATCH \
--url $ACCESS_URL/$API_ROUTE/workspaces/$WS_ID \
--header "Content-Type: application/json" \
--header "Session-Token: $API_KEY" \
--data "{}"
curl --request POST \
--url "$ACCESS_URL/$API_ROUTE/users" \
--header "Session-Token: $API_KEY" \
--header "Content-Type: application/json" \
--data "{
\"email\": \"[email protected]\",
\"login_type\": \"built-in\",
\"name\": \"Bob Barker\",
\"password\": \"password\",
\"temporary_password\": true,
\"username\": \"bbarker\",
\"organizations\": [\"default\",\"$ORG_ID\"]
}"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/users/$USER_ID/sshkey" \
--header "Session-Token: $API_KEY"
curl --request POST \
--url "$ACCESS_URL/$API_ROUTE/workspaces/$WS_ID_PHP/devurls" \
--header "Session-Token: $API_KEY" \
--header "Content-Type: application/json" \
--data "{
\"access\": \"PRIVATE\",
\"name\": \"phpapp4\",
\"port\": 1029,
\"scheme\": \"http\"
}"
curl --request PUT \
--url "$ACCESS_URL/$API_ROUTE/workspaces/$WS_ID_PHP/devurls/$DU_ID_PHP" \
--header "Session-Token: $API_KEY" \
--header "Content-Type: application/json" \
--data "{
\"access\": \"AUTHED\",
\"name\": \"phpapp4\",
\"port\": 1029,
\"scheme\": \"http\"
}"
curl --request GET \
--url "$ACCESS_URL/$API_ROUTE/workspaces/$WS_ID_PHP/devurls" \
--header "Session-Token: $API_KEY"
curl --request DELETE \
--url "$ACCESS_URL/$API_ROUTE/workspaces/$WS_ID_PHP/devurls/$DU_ID_PHP \
--header "Session-Token: $API_KEY" \
--header "Content-Type: application/json" \
--data "{
}"
See an opportunity to improve our docs? Make an edit.