Coder Users API
The Users API from Coder — 28 operation(s) for users.
The Users API from Coder — 28 operation(s) for users.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/coder-users-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
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 Users 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: Users
paths:
/api/experimental/users/{user}/skills:
get:
operationId: list-user-skills
summary: List user skills
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/codersdk.UserSkillMetadata'
post:
operationId: create-a-user-skill
summary: Create a user skill
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateUserSkillRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserSkill'
/api/experimental/users/{user}/skills/{skillName}:
get:
operationId: get-a-user-skill-by-name
summary: Get a user skill by name
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
- name: skillName
in: path
required: true
description: Skill name
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserSkill'
delete:
operationId: delete-a-user-skill
summary: Delete a user skill
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
- name: skillName
in: path
required: true
description: Skill name
schema:
type: string
responses:
'204':
description: No Content
patch:
operationId: update-a-user-skill
summary: Update a user skill
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
- name: skillName
in: path
required: true
description: Skill name
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateUserSkillRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserSkill'
/api/v2/users:
get:
operationId: get-users
summary: Get users
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: q
in: query
required: false
description: Search query
schema:
type: string
- name: after_id
in: query
required: false
description: After ID
schema:
type: string
- name: limit
in: query
required: false
description: Page limit
schema:
type: integer
- name: offset
in: query
required: false
description: Page offset
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.GetUsersResponse'
post:
operationId: create-new-user
summary: Create new user
tags:
- Users
security:
- CoderSessionToken: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateUserRequestWithOrgs'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
/api/v2/users/authmethods:
get:
operationId: get-authentication-methods
summary: Get authentication methods
tags:
- Users
security:
- CoderSessionToken: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.AuthMethods'
/api/v2/users/first:
get:
operationId: check-initial-user-created
summary: Check initial user created
tags:
- Users
security:
- CoderSessionToken: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Response'
post:
operationId: create-initial-user
summary: Create initial user
tags:
- Users
security:
- CoderSessionToken: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateFirstUserRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateFirstUserResponse'
/api/v2/users/logout:
post:
operationId: log-out-user
summary: Log out user
tags:
- Users
security:
- CoderSessionToken: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Response'
/api/v2/users/oauth2/github/callback:
get:
operationId: oauth-20-github-callback
summary: OAuth 2.0 GitHub Callback
tags:
- Users
security:
- CoderSessionToken: []
responses:
'307':
description: Temporary Redirect
/api/v2/users/oauth2/github/device:
get:
operationId: get-github-device-auth
summary: Get Github device auth.
tags:
- Users
security:
- CoderSessionToken: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.ExternalAuthDevice'
/api/v2/users/oidc-claims:
get:
operationId: get-oidc-claims-for-the-authenticated-user
summary: Get OIDC claims for the authenticated user
tags:
- Users
security:
- CoderSessionToken: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.OIDCClaimsResponse'
/api/v2/users/oidc/callback:
get:
operationId: openid-connect-callback
summary: OpenID Connect Callback
tags:
- Users
security:
- CoderSessionToken: []
responses:
'307':
description: Temporary Redirect
/api/v2/users/{user}:
get:
operationId: get-user-by-name
summary: Get user by name
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
delete:
operationId: delete-user
summary: Delete user
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
/api/v2/users/{user}/appearance:
get:
operationId: get-user-appearance-settings
summary: Get user appearance settings
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserAppearanceSettings'
put:
operationId: update-user-appearance-settings
summary: Update user appearance settings
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateUserAppearanceSettingsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserAppearanceSettings'
/api/v2/users/{user}/autofill-parameters:
get:
operationId: get-autofill-build-parameters-for-user
summary: Get autofill build parameters for user
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, username, or me
schema:
type: string
- name: template_id
in: query
required: true
description: Template ID
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/codersdk.UserParameter'
/api/v2/users/{user}/gitsshkey:
get:
operationId: get-user-git-ssh-key
summary: Get user Git SSH key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.GitSSHKey'
put:
operationId: regenerate-user-ssh-key
summary: Regenerate user SSH key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.GitSSHKey'
/api/v2/users/{user}/keys:
post:
operationId: create-new-session-key
summary: Create new session key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.GenerateAPIKeyResponse'
/api/v2/users/{user}/keys/tokens:
get:
operationId: get-user-tokens
summary: Get user tokens
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: include_expired
in: query
required: false
description: Include expired tokens in the list
schema:
type: boolean
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/codersdk.APIKey'
post:
operationId: create-token-api-key
summary: Create token API key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.CreateTokenRequest'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.GenerateAPIKeyResponse'
/api/v2/users/{user}/keys/tokens/{keyname}:
get:
operationId: get-api-key-by-token-name
summary: Get API key by token name
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: keyname
in: path
required: true
description: Key Name
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.APIKey'
/api/v2/users/{user}/keys/{keyid}:
get:
operationId: get-api-key-by-id
summary: Get API key by ID
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: keyid
in: path
required: true
description: Key ID
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.APIKey'
delete:
operationId: delete-api-key
summary: Delete API key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: keyid
in: path
required: true
description: Key ID
schema:
type: string
responses:
'204':
description: No Content
/api/v2/users/{user}/keys/{keyid}/expire:
put:
operationId: expire-api-key
summary: Expire API key
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: keyid
in: path
required: true
description: Key ID
schema:
type: string
responses:
'204':
description: No Content
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Response'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Response'
/api/v2/users/{user}/login-type:
get:
operationId: get-user-login-type
summary: Get user login type
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserLoginType'
/api/v2/users/{user}/organizations:
get:
operationId: get-organizations-by-user
summary: Get organizations by user
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/codersdk.Organization'
/api/v2/users/{user}/organizations/{organizationname}:
get:
operationId: get-organization-by-user-and-organization-name
summary: Get organization by user and organization name
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
- name: organizationname
in: path
required: true
description: Organization name
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.Organization'
/api/v2/users/{user}/password:
put:
operationId: update-user-password
summary: Update user password
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateUserPasswordRequest'
responses:
'204':
description: No Content
/api/v2/users/{user}/preferences:
get:
operationId: get-user-preference-settings
summary: Get user preference settings
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserPreferenceSettings'
put:
operationId: update-user-preference-settings
summary: Update user preference settings
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateUserPreferenceSettingsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UserPreferenceSettings'
/api/v2/users/{user}/profile:
put:
operationId: update-user-profile
summary: Update user profile
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateUserProfileRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
/api/v2/users/{user}/roles:
get:
operationId: get-user-roles
summary: Get user roles
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
put:
operationId: assign-role-to-user
summary: Assign role to user
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.UpdateRoles'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
/api/v2/users/{user}/status/activate:
put:
operationId: activate-user-account
summary: Activate user account
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
/api/v2/users/{user}/status/suspend:
put:
operationId: suspend-user-account
summary: Suspend user account
tags:
- Users
security:
- CoderSessionToken: []
parameters:
- name: user
in: path
required: true
description: User ID, name, or me
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/codersdk.User'
components:
schemas:
codersdk.CreateUserSkillRequest:
type: object
properties:
content:
type: string
description: 'Content must be SKILL.md-format Markdown with YAML frontmatter. The
frontmatter must include name, may include description, and must be
followed by a non-empty body.'
codersdk.AgentDisplayMode:
type: string
enum:
- auto
- always_expanded
- always_collapsed
codersdk.CreateUserRequestWithOrgs:
type: object
properties:
email:
type: string
format: email
login_type:
description: UserLoginType defaults to LoginTypePassword.
allOf:
- $ref: '#/components/schemas/codersdk.LoginType'
name:
type: string
organization_ids:
type: array
description: OrganizationIDs is a list of organization IDs that the user should be a member of.
items:
type: string
format: uuid
password:
type: string
roles:
type: array
description: Roles is an optional list of site-level roles to assign at creation.
items:
type: string
service_account:
type: boolean
description: Service accounts are admin-managed accounts that cannot login.
user_status:
description: UserStatus defaults to UserStatusDormant.
allOf:
- $ref: '#/components/schemas/codersdk.UserStatus'
username:
type: string
required:
- username
codersdk.UpdateRoles:
type: object
properties:
roles:
type: array
items:
type: string
codersdk.GetUsersResponse:
type: object
properties:
count:
type: integer
users:
type: array
items:
$ref: '#/components/schemas/codersdk.User'
codersdk.UserParameter:
type: object
properties:
name:
type: string
value:
type: string
codersdk.UpdateUserSkillRequest:
type: object
properties:
content:
type: string
description: 'Content must be SKILL.md-format Markdown with YAML frontmatter. The
frontmatter must include name, may include description, and must be
followed by a non-empty body.'
codersdk.UserPreferenceSettings:
type: object
properties:
agent_chat_send_shortcut:
$ref: '#/components/schemas/codersdk.AgentChatSendShortcut'
code_diff_display_mode:
$ref: '#/components/schemas/codersdk.AgentDisplayMode'
shell_tool_display_mode:
$ref: '#/components/schemas/codersdk.AgentDisplayMode'
task_notification_alert_dismissed:
type: boolean
thinking_display_mode:
$ref: '#/components/schemas/codersdk.ThinkingDisplayMode'
codersdk.APIKey:
type: object
properties:
allow_list:
type: array
items:
$ref: '#/components/schemas/codersdk.APIAllowListTarget'
created_at:
type: string
format: date-time
expires_at:
type: string
format: date-time
id:
type: string
last_used:
type: string
format: date-time
lifetime_seconds:
type: integer
login_type:
enum:
- password
- github
- oidc
- token
allOf:
- $ref: '#/components/schemas/codersdk.LoginType'
scope:
description: 'Deprecated: use Scopes instead.'
enum:
- all
- application_connect
allOf:
- $ref: '#/components/schemas/codersdk.APIKeyScope'
scopes:
type: array
items:
$ref: '#/components/schemas/codersdk.APIKeyScope'
token_name:
type: string
updated_at:
type: string
format: date-time
user_id:
type: string
format: uuid
required:
- created_at
- expires_at
- id
- last_used
- lifetime_seconds
- login_type
- token_name
- updated_at
- user_id
codersdk.UserAppearanceSettings:
type: object
properties:
terminal_font:
$ref: '#/components/schemas/codersdk.TerminalFontName'
theme_dark:
type: string
description: Ignored when ThemeMode is "single"
theme_light:
type: string
description: Ignored when ThemeMode is "single"
theme_mode:
$ref: '#/components/schemas/codersdk.ThemeMode'
theme_preference:
type: string
description: 'ThemePreference is the legacy single-field appearance setting. In
"single" mode it mirrors the active theme. In "sync" mode modern
clients normally mirror the active OS slot, but older clients can
update only this field, so it may diverge from ThemeLight or
ThemeDark until a modern client saves the full appearance state
again.'
codersdk.GithubAuthMethod:
type: object
properties:
default_provider_configured:
type: boolean
enabled:
type: boolean
codersdk.CreateFirstUserTrialInfo:
type: object
properties:
company_name:
type: string
country:
type: string
developers:
type: string
first_name:
type: string
job_title:
type: string
last_name:
type: string
phone_number:
type: string
codersdk.APIKeyScope:
type: string
enum:
- all
- application_connect
- ai_gateway_key:*
- ai_gateway_key:create
- ai_gateway_key:delete
- ai_gateway_key:read
- ai_model_price:*
- ai_model_price:read
- ai_model_price:update
- ai_provider:*
- ai_provider:create
- ai_provider:delete
- ai_provider:read
- ai_provider:update
- ai_seat:*
- ai_seat:create
- ai_seat:read
- aibridge_interception:*
- aibridge_interception:create
- aibridge_interception:read
- aibridge_interception:update
- api_key:*
- api_key:create
- api_key:delete
- api_key:read
- api_key:update
- assign_org_role:*
- assign_org_role:assign
- assign_org_role:create
- assign_org_role:delete
- assign_org_role:read
- assign_org_role:unassign
- assign_org_role:update
- assign_role:*
- assign_role:assign
- assign_role:read
- assign_role:unassign
- audit_log:*
- audit_log:create
- audit_log:read
- boundary_log:*
- boundary_log:create
- boundary_log:delete
- boundary_log:read
- boundary_usage:*
- boundary_usage:delete
- boundary_usage:read
- boundary_usage:update
- chat:*
- chat:create
- chat:delete
- chat:read
- chat:share
- chat:update
- coder:all
- coder:apikeys.manage_self
- coder:application_connect
- coder:templates.author
- coder:templates.build
- coder:workspaces.access
- coder:workspaces.create
- coder:workspaces.delete
- coder:workspaces.operate
- connection_log:*
- connection_log:read
- connection_log:update
- crypto_key:*
- crypto_key:create
- crypto_key:delete
- crypto_key:read
- crypto_key:update
- debug_info:*
- debug_info:read
- deployment_config:*
- deployment_config:read
- deployment_config:update
- deployment_stats:*
- deployment_stats:read
- file:*
- file:create
- file:read
- group:*
- group:create
- group:delete
- group:read
- group:update
- group_member:*
- group_member:read
- idpsync_settings:*
- idpsync_settings:read
- idpsync_settings:update
- inbox_notification:*
- inbox_notification:create
- inbox_notification:read
- inbox_notification:update
- license:*
- license:create
- license:delete
- license:read
- notification_message:*
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coder/refs/heads/main/openapi/coder-users-api-openapi.yml