Skip to Content

Activities

Individual content units within chapters: dynamic pages, videos, documents, assignments and SCORM packages.

Create activity

POST/api/v1/activities/
API tokenactivities:createor user session

Create a new activity inside a chapter. The authenticated user must have permission to edit the parent course.

Request bodyapplication/jsonrequired

namestringrequired
activity_typeActivityTypeEnum
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnum
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
chapter_idintegerrequired
extra_metadataExtra Metadata | null

Returns

ActivityRead — Activity created and returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to create activities in this chapter
  • 404 Parent chapter or course not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

List activity versions

GET/api/v1/activities/{activity_uuid}/versions
API tokenactivities:reador user session

Get the version history for an activity, ordered newest first. Supports pagination via limit and offset.

Path parameters

activity_uuidstringrequired

Query parameters

limitinteger
offsetinteger

Returns

ActivityVersionRead[] — List of activity versions.

contentContent
version_numberintegerrequired
created_by_idinteger | null
idintegerrequired
activity_idintegerrequired
org_idintegerrequired
created_atstringrequired
created_by_usernamestring | null
created_by_avatarstring | null
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this activity's versions
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {
    "content": {},
    "version_number": 0,
    "created_by_id": 1,
    "id": 1,
    "activity_id": 1,
    "org_id": 1,
    "created_at": "2026-01-15T09:30:00Z",
    "created_by_username": "string",
    "created_by_avatar": "string"
  }
]

Get activity version

GET/api/v1/activities/{activity_uuid}/versions/{version_number}
API tokenactivities:reador user session

Get a specific historical version of an activity by its version number.

Path parameters

activity_uuidstringrequired
version_numberintegerrequired

Returns

ActivityVersionRead — Activity version returned.

contentContent
version_numberintegerrequired
created_by_idinteger | null
idintegerrequired
activity_idintegerrequired
org_idintegerrequired
created_atstringrequired
created_by_usernamestring | null
created_by_avatarstring | null
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this activity version
  • 404 Activity or version not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "content": {},
  "version_number": 0,
  "created_by_id": 1,
  "id": 1,
  "activity_id": 1,
  "org_id": 1,
  "created_at": "2026-01-15T09:30:00Z",
  "created_by_username": "string",
  "created_by_avatar": "string"
}

Get activity state

GET/api/v1/activities/{activity_uuid}/state
API tokenactivities:reador user session

Get the current state of an activity for conflict detection. Returns lightweight info (update_date, current_version, last_modified_by) used by the frontend to detect remote changes.

Path parameters

activity_uuidstringrequired

Returns

ActivityStateRead — Current activity state.

activity_uuidstringrequired
update_datestringrequired
current_versionintegerrequired
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this activity
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "activity_uuid": "string",
  "update_date": "string",
  "current_version": 0,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string"
}

Restore activity version

POST/api/v1/activities/{activity_uuid}/versions/{version_number}/restore
API tokenactivities:createor user session

Restore an activity to a previous version. Creates a new version with the restored content rather than rewriting history.

Path parameters

activity_uuidstringrequired
version_numberintegerrequired

Returns

ActivityRead — Activity restored; returns the updated activity.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to restore this activity
  • 404 Activity or version not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Editor bootstrap payload

GET/api/v1/activities/{activity_uuid}/editor-bootstrap
API tokenactivities:reador user session

Single-roundtrip payload for the activity editor: activity + minimal course + org with resolved features.

Path parameters

activity_uuidstringrequired

Returns

EditorBootstrapResponse — Successful Response

activityActivityReadrequired
Show child attributes
namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
courseEditorBootstrapCourserequired
Show child attributes
course_uuidstringrequired
namestringrequired
descriptionstring | null
thumbnail_imagestring | null
org_uuidstringrequired
org_idintegerrequired
orgOrganizationReadrequired
Show child attributes
namestringrequired
descriptionstring | null
aboutstring | null
socialsSocials | null
linksLinks | null
scriptsScripts | null
logo_imagestring | null
thumbnail_imagestring | null
previewsPreviews | null
exploreboolean | null
labelstring | null
slugstringrequired
emailstringrequired
idintegerrequired
org_uuidstringrequired
configOrganizationConfig | object | null
Show child attributes
idinteger | null
org_idintegerrequired
configConfig
creation_datestring | null
update_datestring | null
creation_datestringrequired
update_datestringrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "activity": {
    "name": "Example name",
    "activity_type": "TYPE_VIDEO",
    "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
    "content": {},
    "details": {},
    "published": false,
    "lock_type": "public",
    "id": 1,
    "org_id": 1,
    "course_id": 1,
    "activity_uuid": "string",
    "creation_date": "string",
    "update_date": "string",
    "extra_metadata": {},
    "current_version": 1,
    "last_modified_by_id": 1,
    "last_modified_by_username": "string",
    "is_locked": false
  },
  "course": {
    "course_uuid": "string",
    "name": "Example name",
    "description": "An example description",
    "thumbnail_image": "string",
    "org_uuid": "string",
    "org_id": 1
  },
  "org": {
    "name": "Example name",
    "description": "An example description",
    "about": "string",
    "socials": {},
    "links": {},
    "scripts": {},
    "logo_image": "string",
    "thumbnail_image": "string",
    "previews": {},
    "explore": false,
    "label": "string",
    "slug": "my-example-slug",
    "email": "ada@example.com",
    "id": 1,
    "org_uuid": "string",
    "config": {
      "id": 1,
      "org_id": 1,
      "config": {},
      "creation_date": "string",
      "update_date": "string"
    },
    "creation_date": "string",
    "update_date": "string"
  }
}

Get activity by UUID

GET/api/v1/activities/{activity_uuid}
API tokenactivities:reador user session

Get a single activity by its UUID.

Path parameters

activity_uuidstringrequired

Returns

ActivityRead — Activity returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this activity
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Update activity

PUT/api/v1/activities/{activity_uuid}
API tokenactivities:updateor user session

Update an activity's fields by its UUID. Creates a new version when content changes.

Path parameters

activity_uuidstringrequired

Request bodyapplication/jsonrequired

namestring | null
contentContent | null
activity_typeenum | null
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeenum | null
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
detailsDetails | null
publishedboolean | null
lock_typeenum | null
publicauthenticatedrestricted
extra_metadataExtra Metadata | null

Returns

ActivityRead — Activity updated and returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to update this activity
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Delete activity

DELETE/api/v1/activities/{activity_uuid}
API tokenactivities:deleteor user session

Delete an activity by its UUID. The authenticated user must have permission to edit the parent course.

Path parameters

activity_uuidstringrequired
Error responses
  • 401 Authentication required
  • 403 User lacks permission to delete this activity
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Get activity by ID

GET/api/v1/activities/id/{activity_id}
API tokenactivities:reador user session

Get a single activity by its numeric database ID.

Path parameters

activity_idintegerrequired

Returns

ActivityRead — Activity returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this activity
  • 404 Activity not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

List chapter activities

GET/api/v1/activities/chapter/{chapter_id}
API tokenactivities:reador user session

Get all activities that belong to the given chapter, in their configured order.

Path parameters

chapter_idintegerrequired

Returns

ActivityRead[] — List of activities for the chapter.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to view this chapter
  • 404 Chapter not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
[
  {
    "name": "Example name",
    "activity_type": "TYPE_VIDEO",
    "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
    "content": {},
    "details": {},
    "published": false,
    "lock_type": "public",
    "id": 1,
    "org_id": 1,
    "course_id": 1,
    "activity_uuid": "string",
    "creation_date": "string",
    "update_date": "string",
    "extra_metadata": {},
    "current_version": 1,
    "last_modified_by_id": 1,
    "last_modified_by_username": "string",
    "is_locked": false
  }
]

Create video activity

POST/api/v1/activities/video
API tokenactivities:createor user session

Create a new video activity by uploading a video file. The video is stored and attached to the given chapter.

Request bodymultipart/form-datarequired

namestringrequired
chapter_idintegerrequired
detailsstring
extra_metadatastring | null
video_filefile | null

Returns

ActivityRead — Video activity created and returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to create activities in this chapter
  • 404 Chapter not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Create external video activity

POST/api/v1/activities/external_video
API tokenactivities:createor user session

Create a new activity that embeds an externally hosted video (e.g. YouTube, Vimeo) instead of uploading a file.

Request bodyapplication/jsonrequired

namestringrequired
uristringrequired
typeenumrequired
youtubevimeo
chapter_idintegerrequired
detailsstring
extra_metadataExtra Metadata | null

Returns

ActivityRead — External video activity created and returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to create activities in this chapter
  • 404 Chapter not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Create PDF document activity

POST/api/v1/activities/documentpdf
API tokenactivities:createor user session

Create a new activity by uploading a PDF document. The file is stored and attached to the given chapter.

Request bodymultipart/form-datarequired

namestringrequired
chapter_idintegerrequired
extra_metadatastring | null
pdf_filefile | null

Returns

ActivityRead — PDF activity created and returned.

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 401 Authentication required
  • 403 User lacks permission to create activities in this chapter
  • 404 Chapter not found
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Update hosted video activity

PUT/api/v1/activities/video/{activity_uuid}
API tokenactivities:updateor user session

Path parameters

activity_uuidstringrequired

Request bodymultipart/form-data

namestring | null
start_timeinteger | null
end_timeinteger | null
autoplaystring | null
mutedstring | null
video_filefile | null

Returns

ActivityRead — Successful Response

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Configure AI closed captions for a hosted video activity

POST/api/v1/activities/video/{activity_uuid}/captions
API tokenactivities:createor user session

Enable/disable AI-generated captions and choose the target languages (any of the platform's languages, or custom BCP-47 codes). When enabled, queues generation on the AI captions pipeline (metered against the org's AI credits). Returns the stored captions metadata.

Path parameters

activity_uuidstringrequired

Request bodyapplication/jsonrequired

enabledboolean
source_languagestring
languagesCaptionLanguageIn[]
Show child attributes
codestringrequired
labelstring | null
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{}

Update external video activity

PUT/api/v1/activities/external_video/{activity_uuid}
API tokenactivities:updateor user session

Path parameters

activity_uuidstringrequired

Request bodyapplication/jsonrequired

namestring | null
uristring | null
startTimeinteger | null
endTimeinteger | null
autoplayboolean | null
mutedboolean | null

Returns

ActivityRead — Successful Response

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

Update PDF document activity

PUT/api/v1/activities/documentpdf/{activity_uuid}
API tokenactivities:updateor user session

Path parameters

activity_uuidstringrequired

Request bodymultipart/form-data

namestring | null
pdf_filefile | null

Returns

ActivityRead — Successful Response

namestringrequired
activity_typeActivityTypeEnumrequired
TYPE_VIDEOTYPE_DOCUMENTTYPE_DYNAMICTYPE_ASSIGNMENTTYPE_CUSTOMTYPE_SCORM
activity_sub_typeActivitySubTypeEnumrequired
SUBTYPE_DYNAMIC_PAGESUBTYPE_DYNAMIC_MARKDOWNSUBTYPE_DYNAMIC_EMBEDSUBTYPE_DYNAMIC_RESOURCESUBTYPE_VIDEO_YOUTUBESUBTYPE_VIDEO_HOSTEDSUBTYPE_DOCUMENT_PDFSUBTYPE_DOCUMENT_DOCSUBTYPE_ASSIGNMENT_ANYSUBTYPE_CUSTOMSUBTYPE_SCORM_12SUBTYPE_SCORM_2004
contentContent
detailsDetails | null
publishedboolean
lock_typeActivityLockType
publicauthenticatedrestricted
idintegerrequired
org_idintegerrequired
course_idintegerrequired
activity_uuidstringrequired
creation_datestringrequired
update_datestringrequired
extra_metadataExtra Metadata | null
current_versioninteger
last_modified_by_idinteger | null
last_modified_by_usernamestring | null
is_lockedboolean
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "name": "Example name",
  "activity_type": "TYPE_VIDEO",
  "activity_sub_type": "SUBTYPE_DYNAMIC_PAGE",
  "content": {},
  "details": {},
  "published": false,
  "lock_type": "public",
  "id": 1,
  "org_id": 1,
  "course_id": 1,
  "activity_uuid": "string",
  "creation_date": "string",
  "update_date": "string",
  "extra_metadata": {},
  "current_version": 1,
  "last_modified_by_id": 1,
  "last_modified_by_username": "string",
  "is_locked": false
}

List user groups assigned to a locked activity

GET/api/v1/activities/{activity_uuid}/usergroups
API tokenactivities:reador user session

Return the user groups that can access this activity when lock_type is 'restricted'.

Path parameters

activity_uuidstringrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Grant a user group access to a locked activity

POST/api/v1/activities/{activity_uuid}/usergroups/{usergroup_uuid}
API tokenactivities:createor user session

Associate a user group with this activity so its members can access it when lock_type is 'restricted'.

Path parameters

activity_uuidstringrequired
usergroup_uuidstringrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Revoke a user group's access to a locked activity

DELETE/api/v1/activities/{activity_uuid}/usergroups/{usergroup_uuid}
API tokenactivities:deleteor user session

Remove the association between a user group and this activity.

Path parameters

activity_uuidstringrequired
usergroup_uuidstringrequired
Error responses
  • 422 Validation ErrorHTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}