For the complete documentation index, see llms.txt. This page is also available as Markdown.

Learn

Snyk API reference for the learn endpoints, including request parameters and response schemas

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

Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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: ["john.doe@example.com","jane.smith@example.com"]
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
200

Organization reporting users overview

application/vnd.api+json
get/orgs/{org_id}/learn/progress/users
GET /rest/orgs/{org_id}/learn/progress/users?version=2025-11-05 HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "completion_date": "2026-01-01T00:00:00.000Z",
        "completion_history": [
          "2026-01-01T00:00:00.000Z"
        ],
        "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"
  }
}
Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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

CWE identifiers (e.g. CWE-79). Up to 50 unique values.

Example: ["CWE-79","CWE-89"]
cvesstring[] · min: 1 · max: 50Optional

Filter by CVE rules

Responses
200

Organization reporting users overview

application/vnd.api+json
get/orgs/{org_id}/learn/progress/catalog
GET /rest/orgs/{org_id}/learn/progress/catalog?version=2025-11-05 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
  }
}
Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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
contact_emailstring · emailOptional

Custom contact email to display in email templates when customized_contact_details is true

contact_namestringOptional

Custom contact name to display in email templates when customized_contact_details is true

customized_contact_detailsbooleanOptional

Flag to indicate if custom contact details should be used in email templates

Default: false
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
204

Assignments were successfully created.

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

{
  "contact_email": "name@gmail.com",
  "contact_name": "text",
  "customized_contact_details": false,
  "data": [
    {
      "attributes": {
        "learning_path_ids": [
          "30526dd7-efbd-4254-a963-3e6383c6ebdc"
        ],
        "lesson_ids": [
          "215947a8-d678-50aa-56e0-270c983b4c48",
          "12cde434-5fcb-4c9c-92d0-c4040b735a77",
          "83bc3aa6-df84-478c-8b46-f8499a60129f",
          "eb44604a-48e2-49af-d86b-8ddc2ead52b0",
          "2bcea8ed-fb48-4563-9c1a-10e37bbf70c6",
          "af794526-aa3b-476b-9d20-6806ea87f0b6",
          "f654aed0-4c94-4e83-791f-6d39630ce0ed",
          "7ebd499c-973e-4ec0-4d93-07dbe68a9d9b",
          "cd0b4c2b-b6c9-4c04-f3dd-4094a2819b36",
          "ab3f6f4c-3a45-4388-32b0-5f97e24d46b6"
        ],
        "user_ids": [
          "00000000-0000-0000-0000-000000000001"
        ]
      },
      "type": "lesson_assignment"
    }
  ],
  "due_date": "2026-01-01",
  "email_custom_message": "text",
  "email_notification": true,
  "email_receive_copy": true,
  "reset_learning_progress": true,
  "reset_progress_before": "2026-01-01"
}

No content

Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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
204

Assignments due date was successfully updated.

patch/orgs/{org_id}/learn/assignments
PATCH /rest/orgs/{org_id}/learn/assignments?version=2025-11-05 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": "2026-01-01"
    },
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "type": "resource"
  }
}

No content

Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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
200

A list of assignments was successfully retrieved.

application/vnd.api+json
get/orgs/{org_id}/learn/assignments
GET /rest/orgs/{org_id}/learn/assignments?version=2025-11-05 HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "due_date": "2026-01-01",
        "lesson_id": "text",
        "user_id": "123e4567-e89b-12d3-a456-426614174000",
        "assigning_user_id": "123e4567-e89b-12d3-a456-426614174000",
        "completed_date": "2026-01-01T00:00:00.000Z",
        "created_at": "2026-01-01T00:00:00.000Z",
        "updated_at": "2026-01-01T00:00:00.000Z",
        "assigning_user_email": "text",
        "is_active": true,
        "learning_path_ids": [
          "123e4567-e89b-12d3-a456-426614174000"
        ],
        "learning_program_id": "123e4567-e89b-12d3-a456-426614174000",
        "lesson_created_at": "2026-01-01T00:00:00.000Z",
        "lesson_slug": "text",
        "lesson_title": "text",
        "lesson_updated_at": "2026-01-01T00:00:00.000Z",
        "user_email": "name@gmail.com"
      },
      "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"
  }
}
Deprecated

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: 2025-11-05Example: 2025-11-05Pattern: ^(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
204

Assignments were successfully deleted.

delete/orgs/{org_id}/learn/assignments
DELETE /rest/orgs/{org_id}/learn/assignments?version=2025-11-05 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

Deprecated

Bulk deletion of assignments in an organization (Early Access)

post

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: 2025-11-05Example: 2025-11-05Pattern: ^(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
204

Assignments were successfully deleted.

post/orgs/{org_id}/learn/assignments/bulk_delete
POST /rest/orgs/{org_id}/learn/assignments/bulk_delete?version=2025-11-05 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

Deprecated

List and filter Snyk Learn catalog resources (Early Access)

get

Returns lessons and learning paths. Optional filters narrow lessons by CWE, CVE, Snyk rule, and/or ecosystem.

Multiple identifier params are ANDed by default. Set best_match=true for priority match: rules, then cves, then cwes (first bucket with hits wins). ecosystem is applied after identifier matching.

With filters active, a learning path is returned only if it contains a matching lesson; attributes.lesson_ids lists those lessons only.

For cwes, cves, and rules, pass multiple values comma-separated in one parameter (e.g. ?cwes=CWE-79,CWE-89). Repeated parameters (e.g. ?cwes=CWE-79&cwes=CWE-89) are not accepted.

Authorizations
AuthorizationstringRequired

API key value must be prefixed with "Token ".

Query parameters
versionstringRequired

Requested API version

Default: 2025-11-05Example: 2025-11-05Pattern: ^(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:
sourcestring · max: 64Optional

Optional caller-attribution string for Snyk-internal telemetry. When the value is on Snyk's internal allowlist, it is echoed back into each returned resource URL as ?source=<value>; otherwise the value is silently dropped. Third-party consumers can omit this parameter.

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

CWE identifiers (e.g. CWE-79). Up to 50 unique values.

Example: ["CWE-79","CWE-89"]
cvesstring[] · min: 1 · max: 50Optional

CVE identifiers (e.g. CVE-2021-44228). Up to 50 unique values.

Example: ["CVE-2021-44228"]
rulesstring[] · min: 1 · max: 50Optional

Snyk rule identifiers (SNYK-LANG-...). Up to 50 unique values.

Example: ["SNYK-JS-AXIOS-16298058","SNYK-JAVA-COMSQUAREUPOKHTTP3-1038737"]
ecosystemstring · enumOptional

Lesson language or platform. all skips ecosystem filtering. npm is treated as javascript.

Possible values:
best_matchbooleanOptional

When true, match identifier filters in order rules, cves, cwes and return lessons from the first non-empty bucket (V1 lookup-for-cta behaviour). ecosystem still applies. When false (default), AND all identifier filters. Ignored when cwes, cves, and rules are all omitted.

Default: false
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
200

Catalog resources for this request. Filtered responses may omit lessons and trim learning-path lesson_ids.

application/vnd.api+json
get/learn/catalog
GET /rest/learn/catalog?version=2025-11-05 HTTP/1.1
Host: api.snyk.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "data": [
    {
      "attributes": {
        "author": "text",
        "date_published": "2026-01-01",
        "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": "cwe",
            "tag_values": [
              "CWE-79",
              "CWE-89"
            ]
          }
        ],
        "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?