Skilljar Domains > Users API
The Domains > Users API from Skilljar — 3 operation(s) for domains > users.
The Domains > Users API from Skilljar — 3 operation(s) for domains > 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/skilljar:skilljar-domains-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:
title: Skilljar Domains > Users API
version: 1.0.0
description: The Skilljar API provides comprehensive access to our customer education platform, enabling you to programmatically manage courses, users, enrollments, and more.
tags:
- name: Domains > Users
paths:
/v1/domains/{domain_name}/users:
get:
operationId: domains_users_list
description: 'List users for a domain.
Returns a paginated list of users associated with the domain.
Supports filtering by user details, access code, and signup field data.'
parameters:
- in: query
name: access_code
schema:
type: string
description: Use a value of "null" to see domain users who accessed the domain without an access code. No other values are accepted for this query.
- in: query
name: access_code__code
schema:
type: string
description: Filter domain users by access code used - case sensitive
- in: query
name: access_code__id
schema:
type: string
description: Filter domain users by id of access code used - not case sensitive
- in: query
name: access_code__pool__id
schema:
type: string
description: Filter domain users by id of access code pool used - not case sensitive
- in: query
name: active
schema:
type: boolean
description: Filter domain users by active (true or false)
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
- in: query
name: include_signup_field_data
schema:
type: boolean
description: If set to true, the response also includes the following data for each user ("signup_fields")
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- in: query
name: signup_field_id
schema:
type: string
description: Filter domain users by a sign up field ID
- in: query
name: signup_field_label
schema:
type: string
description: Filter domain users by a sign up field Label - case sensitive
- in: query
name: signup_field_value
schema:
type: string
description: Filter domain users by a sign up field Value - case sensitive
- in: query
name: user__email
schema:
type: string
description: Filter domain users by email address
- in: query
name: user__first_name
schema:
type: string
description: Filter domain users by first name - case sensitive
- in: query
name: user__last_name
schema:
type: string
description: Filter domain users by last name - case sensitive
tags:
- Domains > Users
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDomainUserListItemList'
description: ''
summary: Domains users list
x-summary-source: derived
post:
operationId: domains_users_create
description: 'Add a user to a domain.
If the provided email address already exists, the user will be added to the domain
and their existing details will be returned.
If the email is new, a new user will be created and added to the domain.'
parameters:
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
tags:
- Domains > Users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserCreateRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DomainUserCreateRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/DomainUserCreateRequest'
required: true
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserCreate'
description: ''
summary: Domains users create
x-summary-source: derived
/v1/domains/{domain_name}/users/{user_id}:
get:
operationId: domains_users_retrieve
description: Retrieve details for a specific user within a domain.
parameters:
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
- in: path
name: user_id
schema:
type: string
pattern: ^[0-9a-z]+$
required: true
tags:
- Domains > Users
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserDetail'
description: ''
summary: Domains users retrieve
x-summary-source: derived
put:
operationId: domains_users_update
description: 'Update a user''s domain membership.
Only the `active` status, `expires_at` date, and `access_code`
(which can be removed by setting to null) may be updated. Both PUT and PATCH perform partial updates.'
parameters:
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
- in: path
name: user_id
schema:
type: string
pattern: ^[0-9a-z]+$
required: true
tags:
- Domains > Users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserUpdateRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DomainUserUpdateRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/DomainUserUpdateRequest'
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserUpdate'
description: ''
summary: Domains users update
x-summary-source: derived
patch:
operationId: domains_users_partial_update
description: 'Update a user''s domain membership.
Only the `active` status, `expires_at` date, and `access_code`
(which can be removed by setting to null) may be updated. Both PUT and PATCH perform partial updates.'
parameters:
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
- in: path
name: user_id
schema:
type: string
pattern: ^[0-9a-z]+$
required: true
tags:
- Domains > Users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedDomainUserUpdateRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedDomainUserUpdateRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedDomainUserUpdateRequest'
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserUpdate'
description: ''
summary: Domains users partial update
x-summary-source: derived
/v1/domains/{domain_name}/users/bulk-create:
post:
operationId: bulk_create_domain_users
description: Create multiple users in a domain with a single API call. All users are validated before processing. If any user fails validation, the entire request is rejected. The operation is queued for async processing and returns 202 Accepted immediately.
parameters:
- in: path
name: domain_name
schema:
type: string
pattern: ^[-:\.0-9a-z]+$
required: true
tags:
- Domains > Users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkDomainUserCreateRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BulkDomainUserCreateRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/BulkDomainUserCreateRequest'
required: true
security:
- OrganizationApiKey: []
- tokenAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DomainUserDetail'
description: ''
summary: Bulk create domain users
x-summary-source: derived
components:
schemas:
AccessCodeRequest:
type: object
properties:
id:
type: string
minLength: 1
required:
- id
PaginatedDomainUserListItemList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
$ref: '#/components/schemas/DomainUserListItem'
PatchedDomainUserUpdateRequest:
type: object
properties:
active:
type: boolean
expires_at:
type:
- string
- 'null'
format: date-time
access_code:
allOf:
- $ref: '#/components/schemas/AccessCodeRequest'
description: Information about the access code entered by the user, if they used one to join a private domain
AccessCodePool:
type: object
properties:
id:
type: string
name:
type: string
description: Name of the access code pool. This may have been auto-generated when creating individual codes in the dashboard
maxLength: 255
required:
- id
- name
UserSignupFieldValue:
type: object
properties:
signup_field:
$ref: '#/components/schemas/SignupFieldSummary'
value:
type: string
required:
- signup_field
- value
User:
type: object
description: 'Version of the user serializer configured to lookup a user given the user''s email. If a user with this email does
not yet exist, it will create a new User with given email, first_name and last_name parameters.'
properties:
id:
type: string
readOnly: true
description: Known as user_id within the documentation
email:
type: string
format: email
title: Email address
description: Email address
maxLength: 254
first_name:
type: string
description: First name
maxLength: 50
last_name:
type: string
description: Last name
maxLength: 50
full_name:
type: string
readOnly: true
required:
- email
DomainUserCreate:
type: object
properties:
user:
allOf:
- $ref: '#/components/schemas/User'
description: User details
active:
type: boolean
description: Only active users have access to a private domain
marketing_optin:
type:
- boolean
- 'null'
description: Indicates user has accepted or rejected the marketing optin message. Null indicates no marketing option message was shown to user
enrolled_at:
type: string
format: date-time
readOnly: true
description: ISO 8601 formatted datetime string indicating when the user was first added to the domain
expires_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted datetime string indicating when the access to the domain will expire - ignored on public domains
access_code:
allOf:
- $ref: '#/components/schemas/AccessCode'
readOnly: true
description: Information about the access code entered by the user, if they used one to join a private domain
signup_fields:
type: array
items:
$ref: '#/components/schemas/UserSignupFieldValue'
readOnly: true
login_token:
type: string
readOnly: true
description: Single-use login token, included in response if the domain is configured to used token-based SSO
required:
- user
DomainUserUpdate:
type: object
properties:
user:
allOf:
- $ref: '#/components/schemas/User'
readOnly: true
description: User details
active:
type: boolean
marketing_optin:
type:
- boolean
- 'null'
readOnly: true
enrolled_at:
type: string
format: date-time
readOnly: true
description: ISO 8601 formatted datetime string indicating when the user was first added to the domain
expires_at:
type:
- string
- 'null'
format: date-time
access_code:
allOf:
- $ref: '#/components/schemas/AccessCode'
description: Information about the access code entered by the user, if they used one to join a private domain
signup_fields:
type: array
items:
$ref: '#/components/schemas/UserSignupFieldValue'
readOnly: true
login_token:
type: string
readOnly: true
description: Single-use login token, included in response if the domain is configured to used token-based SSO
DomainUserDetail:
type: object
properties:
user:
allOf:
- $ref: '#/components/schemas/User'
readOnly: true
description: User details
active:
type: boolean
description: Only active users have access to a private domain
marketing_optin:
type:
- boolean
- 'null'
description: Indicates user has accepted or rejected the marketing optin message. Null indicates no marketing option message was shown to user
enrolled_at:
type: string
format: date-time
readOnly: true
description: ISO 8601 formatted datetime string indicating when the user was first added to the domain
expires_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted datetime string indicating when the access to the domain will expire - ignored on public domains
access_code:
allOf:
- $ref: '#/components/schemas/AccessCode'
readOnly: true
description: Information about the access code entered by the user, if they used one to join a private domain
signup_fields:
type: array
items:
$ref: '#/components/schemas/UserSignupFieldValue'
readOnly: true
AccessCode:
type: object
properties:
id:
type: string
code:
type: string
readOnly: true
description: Code entered by the user to join the private domain
pool:
allOf:
- $ref: '#/components/schemas/AccessCodePool'
readOnly: true
description: Pool of access codes to which this code belongs
required:
- id
DomainUserListItem:
type: object
properties:
user:
allOf:
- $ref: '#/components/schemas/User'
readOnly: true
description: User details
active:
type: boolean
description: Only active users have access to a private domain
marketing_optin:
type:
- boolean
- 'null'
description: Indicates user has accepted or rejected the marketing optin message. Null indicates no marketing option message was shown to user
enrolled_at:
type: string
format: date-time
readOnly: true
description: ISO 8601 formatted datetime string indicating when the user was first added to the domain
expires_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted datetime string indicating when the access to the domain will expire - ignored on public domains
access_code:
allOf:
- $ref: '#/components/schemas/AccessCode'
readOnly: true
description: Information about the access code entered by the user, if they used one to join a private domain
DomainUserUpdateRequest:
type: object
properties:
active:
type: boolean
expires_at:
type:
- string
- 'null'
format: date-time
access_code:
allOf:
- $ref: '#/components/schemas/AccessCodeRequest'
description: Information about the access code entered by the user, if they used one to join a private domain
UserRequest:
type: object
description: 'Version of the user serializer configured to lookup a user given the user''s email. If a user with this email does
not yet exist, it will create a new User with given email, first_name and last_name parameters.'
properties:
email:
type: string
format: email
title: Email address
description: Email address
maxLength: 254
first_name:
type: string
description: First name
maxLength: 50
last_name:
type: string
description: Last name
maxLength: 50
required:
- email
BulkDomainUserCreateRequest:
type: object
properties:
users:
type: array
items:
$ref: '#/components/schemas/BulkUserRequest'
description: List of users to create. Maximum 1000 users per request.
maxItems: 1000
minItems: 1
required:
- users
BulkUserRequest:
type: object
properties:
email:
type: string
format: email
minLength: 1
description: User's email address
first_name:
type: string
description: User's first name
maxLength: 150
last_name:
type: string
description: User's last name
maxLength: 150
active:
type: boolean
default: true
description: Only active users have access to a private domain
marketing_optin:
type:
- boolean
- 'null'
description: Indicates user has accepted or rejected the marketing optin message
expires_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted datetime string indicating when the access to the domain will expire
required:
- email
SignupFieldSummary:
type: object
properties:
id:
type: string
label:
type: string
readOnly: true
required:
- id
DomainUserCreateRequest:
type: object
properties:
user:
allOf:
- $ref: '#/components/schemas/UserRequest'
description: User details
active:
type: boolean
description: Only active users have access to a private domain
marketing_optin:
type:
- boolean
- 'null'
description: Indicates user has accepted or rejected the marketing optin message. Null indicates no marketing option message was shown to user
expires_at:
type:
- string
- 'null'
format: date-time
description: ISO 8601 formatted datetime string indicating when the access to the domain will expire - ignored on public domains
required:
- user
securitySchemes:
OrganizationApiKey:
type: http
scheme: basic
description: API key authentication using HTTP Basic Auth. Use your API key as the username and leave password empty.
tokenAuth:
type: http
scheme: bearer