Learn

This document uses the REST API. For more details, see the Authentication for API page.

Get individual user learning progress (Early Access)

get

Retrieves detailed learning progress status per user, including completion dates and history for each catalog resource.

Required permissions

  • View Organization Snyk Learn Reports (org.learn_report.read)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
starting_afterstringOptional

Return the page of results immediately after this cursor

Example: v1.eyJpZCI6IjEwMDAifQo=
ending_beforestringOptional

Return the page of results immediately before this cursor

Example: v1.eyJpZCI6IjExMDAifQo=
limitinteger · int32 · min: 10 · max: 100Optional

Number of results to return per page

Default: 10Example: 10
typestring · enumOptional

Filter by the learn catalog resource type

Default: lessonPossible values:
titlestringOptionalDeprecated

This is deprecated, use Titles instead

titlesstring[] · min: 1 · max: 50Optional

Filter by the title of the learning path or lesson resource

statusstring · enumOptional

Filter by progress status of the resources

Possible values:
emailsstring · email[] · min: 1 · max: 50Optional

Filter by user email addresses

Example: ["[email protected]","[email protected]"]
completion_intervalstringOptional

Filter by date interval in ISO 8601 format (e.g. 2024-01-01/2024-02-01)

Pattern: ^[\d]{4}-[\d]{2}-[\d]{2}/[\d]{4}-[\d]{2}-[\d]{2}$
Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
get
/orgs/{org_id}/learn/progress/users
GET /rest/orgs/{org_id}/learn/progress/users?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "completion_date": "2025-11-12T16:21:06.678Z",
        "completion_history": [
          "2025-11-12T16:21:06.678Z"
        ],
        "is_expired": true,
        "resource": "learning_path",
        "status": "completed"
      },
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "relationships": {
        "catalog": {
          "data": {
            "attributes": {
              "cves": [
                "text"
              ],
              "cwes": [
                "text"
              ],
              "slug": "text",
              "title": "text"
            },
            "id": "text",
            "type": "lesson"
          },
          "links": {
            "self": "text"
          }
        },
        "user": {
          "data": {
            "attributes": {
              "email": "text",
              "username": "text"
            },
            "id": "text",
            "type": "user"
          },
          "links": {
            "first": "https://example.com/api/resource?ending_before=v1.eyJpZCI6IjExIn0K",
            "last": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjMwIn0K",
            "next": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjEwIn0K"
          }
        }
      },
      "type": "progress"
    }
  ],
  "jsonapi": {
    "version": "1.0"
  },
  "links": {
    "first": "https://example.com/api/resource?ending_before=v1.eyJpZCI6IjExIn0K",
    "last": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjMwIn0K",
    "next": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjEwIn0K"
  }
}

Get collective learning progress (Early Access)

get

Retrieves aggregated counts of users' lesson or learning path statuses (completed, in progress, todo) across all catalog resources for an organization.

Required permissions

  • View Organization Snyk Learn Reports (org.learn_report.read)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
starting_afterstringOptional

Return the page of results immediately after this cursor

Example: v1.eyJpZCI6IjEwMDAifQo=
ending_beforestringOptional

Return the page of results immediately before this cursor

Example: v1.eyJpZCI6IjExMDAifQo=
limitinteger · int32 · min: 10 · max: 100Optional

Number of results to return per page

Default: 10Example: 10
typestring · enumOptional

Filter by the learn catalog resource type

Default: lessonPossible values:
titlestringOptionalDeprecated

This is deprecated, use Titles instead

cwesstring[] · min: 1 · max: 50Optional

Filter by CWE rules

cvesstring[] · min: 1 · max: 50Optional

Filter by CVE rules

Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
get
/orgs/{org_id}/learn/progress/catalog
GET /rest/orgs/{org_id}/learn/progress/catalog?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "completed_count": 1,
        "in_progress_count": 1,
        "todo_count": 1,
        "users_completed_count": 1,
        "users_in_progress_count": 1,
        "users_todo_count": 1
      },
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "relationships": {
        "catalog": {
          "data": {
            "attributes": {
              "cves": [
                "text"
              ],
              "cwes": [
                "text"
              ],
              "slug": "text",
              "title": "text"
            },
            "id": "text",
            "type": "lesson"
          },
          "links": {
            "self": "text"
          }
        }
      },
      "type": "progress"
    }
  ],
  "jsonapi": {
    "version": "1.0"
  },
  "links": {
    "first": "https://example.com/api/resource?ending_before=v1.eyJpZCI6IjExIn0K",
    "last": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjMwIn0K",
    "next": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjEwIn0K"
  },
  "meta": {
    "total_org_members": 1
  }
}

Bulk creation of assignments for users in an organization. (Early Access)

post

Allows an admin to create assignments in bulk for all or a subset of users within their organization.

Required permissions

  • Create assignments (org.learn_assignment.create)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
Body
due_datestring · dateOptional
email_custom_messagestringOptional

Custom message given by assignment creator for email notification.

email_notificationbooleanOptional

Email notification is enabled or not for new assignment creation

email_receive_copybooleanOptional

Assigner will receive a copy of the email

reset_learning_progressbooleanOptional

Global flag to reset progress for all lesson assignments in the request

reset_progress_beforestring · dateOptional

Reset progress for all lesson assignments before this date (exclusive)

Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
post
/orgs/{org_id}/learn/assignments
POST /rest/orgs/{org_id}/learn/assignments?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Content-Type: application/vnd.api+json
Accept: */*
Content-Length: 302

{
  "data": [
    {
      "attributes": {
        "lesson_ids": [
          "text"
        ],
        "user_ids": [
          "123e4567-e89b-12d3-a456-426614174000"
        ]
      },
      "type": "lesson_assignment"
    }
  ],
  "due_date": "2025-11-12",
  "email_custom_message": "text",
  "email_notification": true,
  "email_receive_copy": true,
  "reset_learning_progress": true,
  "reset_progress_before": "2025-11-12"
}

No content

Update due date for assignments in an organization. (Early Access)

patch

Allows an admin to update the due date for existing assignments within their organization.

Required permissions

  • Edit assignments (org.learn_assignment.edit)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
Body
Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
patch
/orgs/{org_id}/learn/assignments
PATCH /rest/orgs/{org_id}/learn/assignments?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Content-Type: application/vnd.api+json
Accept: */*
Content-Length: 170

{
  "data": {
    "attributes": {
      "assignments_ids": [
        "123e4567-e89b-12d3-a456-426614174000"
      ],
      "due_date": "2025-11-12"
    },
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "resource"
  }
}

No content

Retrieve a list of assignments for an organization (Early Access)

get

Allows an admin to obtain a comprehensive list of all assignments within their organization.

Required permissions

  • View Organization assignments (org.learn_assignment.read)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
starting_afterstringOptional

Return the page of results immediately after this cursor

Example: v1.eyJpZCI6IjEwMDAifQo=
ending_beforestringOptional

Return the page of results immediately before this cursor

Example: v1.eyJpZCI6IjExMDAifQo=
limitinteger · int32 · min: 10 · max: 100Optional

Number of results to return per page

Default: 10Example: 10
Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
get
/orgs/{org_id}/learn/assignments
GET /rest/orgs/{org_id}/learn/assignments?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "due_date": "2025-11-12",
        "lesson_id": "text",
        "user_id": "123e4567-e89b-12d3-a456-426614174000",
        "assigning_user_id": "123e4567-e89b-12d3-a456-426614174000",
        "completed_date": "2025-11-12T16:21:06.678Z",
        "created_at": "2025-11-12T16:21:06.678Z",
        "updated_at": "2025-11-12T16:21:06.678Z",
        "assigning_user_email": "text",
        "learning_program_id": "123e4567-e89b-12d3-a456-426614174000",
        "lesson_created_at": "2025-11-12T16:21:06.678Z",
        "lesson_slug": "text",
        "lesson_title": "text",
        "lesson_updated_at": "2025-11-12T16:21:06.678Z",
        "user_email": "[email protected]"
      },
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "lesson_assignment"
    }
  ],
  "jsonapi": {
    "version": "1.0"
  },
  "links": {
    "first": "https://example.com/api/resource?ending_before=v1.eyJpZCI6IjExIn0K",
    "last": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjMwIn0K",
    "next": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjEwIn0K"
  }
}

Bulk deletion of assignments in an organization (Early Access)

delete

Allows an admin to delete multiple assignments within their organization.

Note: Assignments that are part of a Learning Program cannot be deleted through this endpoint.

Required permissions

  • Delete assignments (org.learn_assignment.delete)
Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Path parameters
org_idstring · uuidRequired

The unique identifier of the organization.

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
Body
Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
delete
/orgs/{org_id}/learn/assignments
DELETE /rest/orgs/{org_id}/learn/assignments?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Content-Type: application/vnd.api+json
Accept: */*
Content-Length: 83

{
  "data": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "lesson_assignment"
    }
  ]
}

No content

List Snyk Learn's resources (Early Access)

get

List Snyk Learn's catalog resources

Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Query parameters
versionstringRequired

Requested API version

Default: 2024-05-13~experimentalExample: 2024-05-13~experimentalPattern: ^(wip|work-in-progress|experimental|beta|((([0-9]{4})-([0-1][0-9]))-((3[01])|(0[1-9])|([12][0-9]))(~(wip|work-in-progress|experimental|beta))?))$
content_sourcestring · enumOptional

The source of educational resources

Possible values:
limitinteger · int32 · min: 10 · max: 100Optional

Number of results to return per page

Default: 10Example: 10
starting_afterstringOptional

Return the page of results immediately after this cursor

Example: v1.eyJpZCI6IjEwMDAifQo=
ending_beforestringOptional

Return the page of results immediately before this cursor

Example: v1.eyJpZCI6IjExMDAifQo=
Responses
404

Not Found: The resource being operated on could not be found.

application/vnd.api+json
get
/learn/catalog
GET /rest/learn/catalog?version=2024-05-13~experimental HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "author": "text",
        "date_published": "2025-11-12",
        "description": "text",
        "education_content_category": "security education",
        "estimated_duration": 1,
        "image": "text",
        "lesson_ids": [
          "text"
        ],
        "name": "text",
        "seo_title": "text",
        "slug": "text",
        "tags": [
          {
            "tag_type": "text",
            "tag_values": [
              "text"
            ]
          }
        ],
        "url": "text"
      },
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "type": "lesson"
    }
  ],
  "jsonapi": {
    "version": "1.0"
  },
  "links": {
    "first": "https://example.com/api/resource?ending_before=v1.eyJpZCI6IjExIn0K",
    "last": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjMwIn0K",
    "next": "https://example.com/api/resource?starting_after=v1.eyJpZCI6IjEwIn0K"
  }
}

Last updated

Was this helpful?