Udemy

/developer

Beta
Udemy GraphQL API Reference

Udemy GraphQL API Reference

Description of GraphQL objects available at Udemy GraphQL endpoint

Contact

API Platform Team

API Endpoints
https://api.udemy.com/api/2024-01/graphql

Queries

assessmentSearch

Description

Searches assessments by given query

Response

Returns an AssessmentSearchResponse

Arguments
Name Description
query - String!

Example

Query
query assessmentSearch($query: String!) {
  assessmentSearch(query: $query) {
    assessments {
      ...AssessmentFragment
    }
    count
    metadata {
      ...AssessmentSearchResponseMetadataFragment
    }
  }
}
Variables
{"query": "abc123"}
Response
{
  "data": {
    "assessmentSearch": {
      "assessments": [Assessment],
      "count": 987,
      "metadata": AssessmentSearchResponseMetadata
    }
  }
}

badgeAssertionsForCurrentOrganization

Description

Get list of Open Badge Assertions for organization. User must be an admin for the given organization

Response

Returns a BadgeAssertionPaged

Arguments
Name Description
page - NonNegativeInt! Default = 0
pageSize - MaxResultsPerPage! Default = 12
filters - BadgeAssertionsSearchFilters

Example

Query
query badgeAssertionsForCurrentOrganization(
  $page: NonNegativeInt!,
  $pageSize: MaxResultsPerPage!,
  $filters: BadgeAssertionsSearchFilters
) {
  badgeAssertionsForCurrentOrganization(
    page: $page,
    pageSize: $pageSize,
    filters: $filters
  ) {
    items {
      ...BadgeAssertionFragment
    }
    page
    pageCount
    totalCount
  }
}
Variables
{
  "page": 0,
  "pageSize": 12,
  "filters": BadgeAssertionsSearchFilters
}
Response
{
  "data": {
    "badgeAssertionsForCurrentOrganization": {
      "items": [BadgeAssertion],
      "page": 123,
      "pageCount": 987,
      "totalCount": 123
    }
  }
}

badgeCertificationProvidersWithContent

Description

List of Certification Providers filtered for having content

Example

Query
query badgeCertificationProvidersWithContent {
  badgeCertificationProvidersWithContent {
    id
    name
  }
}
Response
{
  "data": {
    "badgeCertificationProvidersWithContent": [
      {
        "id": "4",
        "name": "(AWS) Amazon Web Services"
      }
    ]
  }
}

badgeCertificationSubjectAreas

Description

Get certification subject areas for badges

Example

Query
query badgeCertificationSubjectAreas {
  badgeCertificationSubjectAreas {
    id
    name
  }
}
Response
{
  "data": {
    "badgeCertificationSubjectAreas": [
      {"id": "4", "name": "SQL"}
    ]
  }
}

badgeClass

Description

Get BadgeClass by id

Response

Returns a BadgeClass

Arguments
Name Description
id - ID!

Example

Query
query badgeClass($id: ID!) {
  badgeClass(id: $id) {
    id
    externalUrl
    type
    name
    description
    image {
      ...BadgeClassImageFragment
    }
    criteria {
      ...BadgeClassCriteriaFragment
    }
    issuer {
      ...BadgeClassIssuerFragment
    }
    alignment {
      ...BadgeClassAlignmentFragment
    }
    tags
    topic {
      ...TopicFragment
    }
    assertions {
      ...BadgeAssertionFragment
    }
    subjectAreas {
      ...BadgeCertificationSubjectAreaFragment
    }
    providers {
      ...BadgeCertificationProviderFragment
    }
    visibilityStatus
    examRegistrationUrls {
      ...CertificationExamURLFragment
    }
    certificationExam {
      ...CertificationExamFragment
    }
    totalAssertionsCount
    isEnrolled
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "badgeClass": {
      "id": "4",
      "externalUrl": "https://www.udemy.com/",
      "type": ["abc123"],
      "name": "abc123",
      "description": "xyz789",
      "image": BadgeClassImage,
      "criteria": BadgeClassCriteria,
      "issuer": BadgeClassIssuer,
      "alignment": [BadgeClassAlignment],
      "tags": ["abc123"],
      "topic": Topic,
      "assertions": [BadgeAssertion],
      "subjectAreas": [BadgeCertificationSubjectArea],
      "providers": [BadgeCertificationProvider],
      "visibilityStatus": "VISIBLE",
      "examRegistrationUrls": [CertificationExamURL],
      "certificationExam": CertificationExam,
      "totalAssertionsCount": 987,
      "isEnrolled": false
    }
  }
}

badgeClassIssuers

Description

Issuer list of all BadgeClasses

Response

Returns [BadgeClassIssuer!]!

Example

Query
query badgeClassIssuers {
  badgeClassIssuers {
    id
    type
    name
    url
    email
    telephone
    description
    image {
      ...BadgeClassImageFragment
    }
  }
}
Response
{
  "data": {
    "badgeClassIssuers": [
      {
        "id": "4",
        "type": ["Profile"],
        "name": "Cisco",
        "url": "https://www.cisco.com/",
        "email": "test@test.com",
        "telephone": "1-800-553-6387",
        "description": "Cisco is the worldwide leader in networking that transforms how people connect, communicate and collaborate.",
        "image": BadgeClassImage
      }
    ]
  }
}

badgeClassSearch

Description

Search for BadgeClasses

Response

Returns a BadgeClassSearchResponse

Arguments
Name Description
query - String
page - NonNegativeInt!
pageSize - MaxResultsPerPage! Default = 12
filters - BadgeClassSearchFilters

Example

Query
query badgeClassSearch(
  $query: String,
  $page: NonNegativeInt!,
  $pageSize: MaxResultsPerPage!,
  $filters: BadgeClassSearchFilters
) {
  badgeClassSearch(
    query: $query,
    page: $page,
    pageSize: $pageSize,
    filters: $filters
  ) {
    items {
      ...BadgeClassFragment
    }
    page
    pageCount
  }
}
Variables
{
  "query": "xyz789",
  "page": 123,
  "pageSize": 12,
  "filters": BadgeClassSearchFilters
}
Response
{
  "data": {
    "badgeClassSearch": {
      "items": [BadgeClass],
      "page": 987,
      "pageCount": 987
    }
  }
}

badgeClasses

Description

Get list of BadgeClass for a list of ids

Response

Returns [BadgeClass]!

Arguments
Name Description
ids - [ID!]!

Example

Query
query badgeClasses($ids: [ID!]!) {
  badgeClasses(ids: $ids) {
    id
    externalUrl
    type
    name
    description
    image {
      ...BadgeClassImageFragment
    }
    criteria {
      ...BadgeClassCriteriaFragment
    }
    issuer {
      ...BadgeClassIssuerFragment
    }
    alignment {
      ...BadgeClassAlignmentFragment
    }
    tags
    topic {
      ...TopicFragment
    }
    assertions {
      ...BadgeAssertionFragment
    }
    subjectAreas {
      ...BadgeCertificationSubjectAreaFragment
    }
    providers {
      ...BadgeCertificationProviderFragment
    }
    visibilityStatus
    examRegistrationUrls {
      ...CertificationExamURLFragment
    }
    certificationExam {
      ...CertificationExamFragment
    }
    totalAssertionsCount
    isEnrolled
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "badgeClasses": [
      {
        "id": "4",
        "externalUrl": "https://www.udemy.com/",
        "type": ["abc123"],
        "name": "abc123",
        "description": "abc123",
        "image": BadgeClassImage,
        "criteria": BadgeClassCriteria,
        "issuer": BadgeClassIssuer,
        "alignment": [BadgeClassAlignment],
        "tags": ["abc123"],
        "topic": Topic,
        "assertions": [BadgeAssertion],
        "subjectAreas": [BadgeCertificationSubjectArea],
        "providers": [BadgeCertificationProvider],
        "visibilityStatus": "VISIBLE",
        "examRegistrationUrls": [CertificationExamURL],
        "certificationExam": CertificationExam,
        "totalAssertionsCount": 123,
        "isEnrolled": true
      }
    ]
  }
}

badgeClassesByLearningProducts

Description

Get mapped badge classes for learning products

Response

Returns [BadgeClass!]

Arguments
Name Description
learningProducts - [LearningProductInput!]!

Example

Query
query badgeClassesByLearningProducts($learningProducts: [LearningProductInput!]!) {
  badgeClassesByLearningProducts(learningProducts: $learningProducts) {
    id
    externalUrl
    type
    name
    description
    image {
      ...BadgeClassImageFragment
    }
    criteria {
      ...BadgeClassCriteriaFragment
    }
    issuer {
      ...BadgeClassIssuerFragment
    }
    alignment {
      ...BadgeClassAlignmentFragment
    }
    tags
    topic {
      ...TopicFragment
    }
    assertions {
      ...BadgeAssertionFragment
    }
    subjectAreas {
      ...BadgeCertificationSubjectAreaFragment
    }
    providers {
      ...BadgeCertificationProviderFragment
    }
    visibilityStatus
    examRegistrationUrls {
      ...CertificationExamURLFragment
    }
    certificationExam {
      ...CertificationExamFragment
    }
    totalAssertionsCount
    isEnrolled
  }
}
Variables
{"learningProducts": [LearningProductInput]}
Response
{
  "data": {
    "badgeClassesByLearningProducts": [
      {
        "id": 4,
        "externalUrl": "https://www.udemy.com/",
        "type": ["abc123"],
        "name": "xyz789",
        "description": "xyz789",
        "image": BadgeClassImage,
        "criteria": BadgeClassCriteria,
        "issuer": BadgeClassIssuer,
        "alignment": [BadgeClassAlignment],
        "tags": ["xyz789"],
        "topic": Topic,
        "assertions": [BadgeAssertion],
        "subjectAreas": [BadgeCertificationSubjectArea],
        "providers": [BadgeCertificationProvider],
        "visibilityStatus": "VISIBLE",
        "examRegistrationUrls": [CertificationExamURL],
        "certificationExam": CertificationExam,
        "totalAssertionsCount": 123,
        "isEnrolled": true
      }
    ]
  }
}

badgeClassesByTopic

Description

Get list of BadgeClasses under a topic

Response

Returns [BadgeClass!]!

Arguments
Name Description
topicId - ID!

Example

Query
query badgeClassesByTopic($topicId: ID!) {
  badgeClassesByTopic(topicId: $topicId) {
    id
    externalUrl
    type
    name
    description
    image {
      ...BadgeClassImageFragment
    }
    criteria {
      ...BadgeClassCriteriaFragment
    }
    issuer {
      ...BadgeClassIssuerFragment
    }
    alignment {
      ...BadgeClassAlignmentFragment
    }
    tags
    topic {
      ...TopicFragment
    }
    assertions {
      ...BadgeAssertionFragment
    }
    subjectAreas {
      ...BadgeCertificationSubjectAreaFragment
    }
    providers {
      ...BadgeCertificationProviderFragment
    }
    visibilityStatus
    examRegistrationUrls {
      ...CertificationExamURLFragment
    }
    certificationExam {
      ...CertificationExamFragment
    }
    totalAssertionsCount
    isEnrolled
  }
}
Variables
{"topicId": 4}
Response
{
  "data": {
    "badgeClassesByTopic": [
      {
        "id": "4",
        "externalUrl": "https://www.udemy.com/",
        "type": ["abc123"],
        "name": "abc123",
        "description": "abc123",
        "image": BadgeClassImage,
        "criteria": BadgeClassCriteria,
        "issuer": BadgeClassIssuer,
        "alignment": [BadgeClassAlignment],
        "tags": ["abc123"],
        "topic": Topic,
        "assertions": [BadgeAssertion],
        "subjectAreas": [BadgeCertificationSubjectArea],
        "providers": [BadgeCertificationProvider],
        "visibilityStatus": "VISIBLE",
        "examRegistrationUrls": [CertificationExamURL],
        "certificationExam": CertificationExam,
        "totalAssertionsCount": 987,
        "isEnrolled": true
      }
    ]
  }
}

categories

Description

Retrieve all categories

Response

Returns [Category!]!

Example

Query
query categories {
  categories {
    id
    name
    subcategories {
      ...SubCategoryFragment
    }
  }
}
Response
{
  "data": {
    "categories": [
      {
        "id": "4",
        "name": "abc123",
        "subcategories": [SubCategory]
      }
    ]
  }
}

codingExercise

Description

Fetches a coding exercise by its ID

Response

Returns a CodingExercise

Arguments
Name Description
id - ID!

Example

Query
query codingExercise($id: ID!) {
  codingExercise(id: $id) {
    id
    title
    description
    urlLanding
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    course {
      ...CourseFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "codingExercise": {
      "id": "4",
      "title": "Coding Exercise: Create a Lambda Function",
      "description": "<p>Let's create a Lambda function from scratch. We'll use the AWS console to create a Lambda function that will be triggered by an S3 event.</p>",
      "urlLanding": "https://www.udemy.com/",
      "versionedIdentifier": VersionedIdentifier,
      "course": Course
    }
  }
}

course

Description

Retrieve a course by its ID

Response

Returns a Course

Arguments
Name Description
id - ID!

Example

Query
query course($id: ID!) {
  course(id: $id) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "course": {
      "id": 4,
      "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
      "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
      "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
      "badges": [LearningProductBadge],
      "curriculum": Curriculum,
      "prerequisites": ["Mathematics", "Programming"],
      "targetAudience": ["Developers", "Students"],
      "learningOutcomes": ["abc123"],
      "duration": "5h 21m 3s",
      "durationVideoContent": 19263,
      "durationInSeconds": 19263,
      "private": false,
      "organization": Organization,
      "organizationInfo": CourseOrganizationInfo,
      "images": CourseImages,
      "instructors": [CourseInstructor],
      "categories": [CourseCategory],
      "enrollments": CourseEnrollments,
      "enrollable": false,
      "isEnrolled": true,
      "isFree": false,
      "rating": CourseRating,
      "level": "ALL_LEVELS",
      "urlAutoEnroll": "https://www.udemy.com/",
      "urlCourseLanding": "https://www.udemy.com/",
      "urlCourseTaking": "https://www.udemy.com/",
      "locale": "en_US",
      "updatedOn": "2007-12-03",
      "topics": [Topic],
      "primaryTopic": Topic,
      "xapiActivityId": "4",
      "accreditations": [CourseAccreditation],
      "captions": [CourseCaptionDetails],
      "urlMobileNativeDeeplink": "https://www.udemy.com/",
      "promoVideo": CoursePromoVideo,
      "versionedIdentifier": VersionedIdentifier,
      "subscriptionInfo": CourseSubscriptionInfo,
      "isPracticeTestCourse": true
    }
  }
}

courseAiHighlightsByCourseId

Description

Get AI highlights for a course

Response

Returns a CourseAiHighlights

Arguments
Name Description
courseId - ID!

Example

Query
query courseAiHighlightsByCourseId($courseId: ID!) {
  courseAiHighlightsByCourseId(courseId: $courseId) {
    summary
    learningOutcomes
  }
}
Variables
{"courseId": 4}
Response
{
  "data": {
    "courseAiHighlightsByCourseId": {
      "summary": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
      "learningOutcomes": [
        "All 300+ slides available as downloadable PDF",
        "Full Practice Exam with Explanations included!",
        "Learn the AWS Fundamentals (EC2, ELB, ASG, RDS, ElastiCache, S3)"
      ]
    }
  }
}

courseByLandingURL

Description

Retrieve a course by its landing URL

Response

Returns a Course

Arguments
Name Description
landingURL - URL!

Example

Query
query courseByLandingURL($landingURL: URL!) {
  courseByLandingURL(landingURL: $landingURL) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"landingURL": "https://www.udemy.com/"}
Response
{
  "data": {
    "courseByLandingURL": {
      "id": "4",
      "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
      "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
      "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
      "badges": [LearningProductBadge],
      "curriculum": Curriculum,
      "prerequisites": ["Mathematics", "Programming"],
      "targetAudience": ["Developers", "Students"],
      "learningOutcomes": ["abc123"],
      "duration": "5h 21m 3s",
      "durationVideoContent": 19263,
      "durationInSeconds": 19263,
      "private": false,
      "organization": Organization,
      "organizationInfo": CourseOrganizationInfo,
      "images": CourseImages,
      "instructors": [CourseInstructor],
      "categories": [CourseCategory],
      "enrollments": CourseEnrollments,
      "enrollable": true,
      "isEnrolled": true,
      "isFree": false,
      "rating": CourseRating,
      "level": "ALL_LEVELS",
      "urlAutoEnroll": "https://www.udemy.com/",
      "urlCourseLanding": "https://www.udemy.com/",
      "urlCourseTaking": "https://www.udemy.com/",
      "locale": "en_US",
      "updatedOn": "2007-12-03",
      "topics": [Topic],
      "primaryTopic": Topic,
      "xapiActivityId": "4",
      "accreditations": [CourseAccreditation],
      "captions": [CourseCaptionDetails],
      "urlMobileNativeDeeplink": "https://www.udemy.com/",
      "promoVideo": CoursePromoVideo,
      "versionedIdentifier": VersionedIdentifier,
      "subscriptionInfo": CourseSubscriptionInfo,
      "isPracticeTestCourse": true
    }
  }
}

courseByVersionedIdentifier

Description

Retrieve a course by its versioned identifier

Response

Returns a Course

Arguments
Name Description
versionedIdentifier - VersionedIdentifierInput!

Example

Query
query courseByVersionedIdentifier($versionedIdentifier: VersionedIdentifierInput!) {
  courseByVersionedIdentifier(versionedIdentifier: $versionedIdentifier) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"versionedIdentifier": VersionedIdentifierInput}
Response
{
  "data": {
    "courseByVersionedIdentifier": {
      "id": 4,
      "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
      "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
      "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
      "badges": [LearningProductBadge],
      "curriculum": Curriculum,
      "prerequisites": ["Mathematics", "Programming"],
      "targetAudience": ["Developers", "Students"],
      "learningOutcomes": ["abc123"],
      "duration": "5h 21m 3s",
      "durationVideoContent": 19263,
      "durationInSeconds": 19263,
      "private": true,
      "organization": Organization,
      "organizationInfo": CourseOrganizationInfo,
      "images": CourseImages,
      "instructors": [CourseInstructor],
      "categories": [CourseCategory],
      "enrollments": CourseEnrollments,
      "enrollable": true,
      "isEnrolled": true,
      "isFree": true,
      "rating": CourseRating,
      "level": "ALL_LEVELS",
      "urlAutoEnroll": "https://www.udemy.com/",
      "urlCourseLanding": "https://www.udemy.com/",
      "urlCourseTaking": "https://www.udemy.com/",
      "locale": "en_US",
      "updatedOn": "2007-12-03",
      "topics": [Topic],
      "primaryTopic": Topic,
      "xapiActivityId": 4,
      "accreditations": [CourseAccreditation],
      "captions": [CourseCaptionDetails],
      "urlMobileNativeDeeplink": "https://www.udemy.com/",
      "promoVideo": CoursePromoVideo,
      "versionedIdentifier": VersionedIdentifier,
      "subscriptionInfo": CourseSubscriptionInfo,
      "isPracticeTestCourse": true
    }
  }
}

courseCatalogFull

Description

Retrieve course catalog for the client

Response

Returns a CourseCatalogFullResponsePaged

Arguments
Name Description
cursor - String Cursor to the next page of course catalog
pageSize - MaxResultsPerPage Number of results to return in one page. Default = 12

Example

Query
query courseCatalogFull(
  $cursor: String,
  $pageSize: MaxResultsPerPage
) {
  courseCatalogFull(
    cursor: $cursor,
    pageSize: $pageSize
  ) {
    courses {
      ...CourseFragment
    }
    syncToken
    cursor
  }
}
Variables
{"cursor": "abc123", "pageSize": 12}
Response
{
  "data": {
    "courseCatalogFull": {
      "courses": [Course],
      "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
      "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
    }
  }
}

courseCatalogUpdated

Description

Retrieve changes to course catalog since last sync

Arguments
Name Description
syncToken - String! Sync Token from the last sync
cursor - String Cursor to the next page of course catalog
pageSize - MaxResultsPerPage Number of results to return in one page. Default = 12

Example

Query
query courseCatalogUpdated(
  $syncToken: String!,
  $cursor: String,
  $pageSize: MaxResultsPerPage
) {
  courseCatalogUpdated(
    syncToken: $syncToken,
    cursor: $cursor,
    pageSize: $pageSize
  ) {
    addedCourses {
      ...CourseFragment
    }
    updatedCourses {
      ...CourseFragment
    }
    removedCourses
    syncToken
    cursor
  }
}
Variables
{
  "syncToken": "xyz789",
  "cursor": "abc123",
  "pageSize": 12
}
Response
{
  "data": {
    "courseCatalogUpdated": {
      "addedCourses": [Course],
      "updatedCourses": [Course],
      "removedCourses": [4],
      "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
      "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
    }
  }
}

courseCategory

Description

Retrieve a category by id

Response

Returns a CourseCategory

Arguments
Name Description
id - ID!

Example

Query
query courseCategory($id: ID!) {
  courseCategory(id: $id) {
    id
    name
    url
    subcategories {
      ...CourseSubCategoryFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "courseCategory": {
      "id": 4,
      "name": "IT Operations",
      "url": "https://learning.udemy.com/courses/ufb-it-operations",
      "subcategories": [CourseSubCategory]
    }
  }
}

courseSearch

Description

Search for courses

Response

Returns a CourseSearchResponse

Arguments
Name Description
query - String
page - NonNegativeInt! Default = 0
pageSize - MaxResultsPerPage! Default = 20
sortOrder - CourseSearchSortType
filters - CourseSearchFilters
context - CourseSearchContext

Example

Query
query courseSearch(
  $query: String,
  $page: NonNegativeInt!,
  $pageSize: MaxResultsPerPage!,
  $sortOrder: CourseSearchSortType,
  $filters: CourseSearchFilters,
  $context: CourseSearchContext
) {
  courseSearch(
    query: $query,
    page: $page,
    pageSize: $pageSize,
    sortOrder: $sortOrder,
    filters: $filters,
    context: $context
  ) {
    courses {
      ...CourseFragment
    }
    results {
      ...CourseSearchResultFragment
    }
    count
    filterOptions {
      ...SearchAggregationFragment
    }
    pageCount
    page
    metadata {
      ...CourseSearchResponseMetadataFragment
    }
  }
}
Variables
{
  "query": "abc123",
  "page": 0,
  "pageSize": 20,
  "sortOrder": "RELEVANCE",
  "filters": CourseSearchFilters,
  "context": CourseSearchContext
}
Response
{
  "data": {
    "courseSearch": {
      "courses": [Course],
      "results": [CourseSearchResult],
      "count": 987,
      "filterOptions": [SearchAggregation],
      "pageCount": 987,
      "page": 987,
      "metadata": CourseSearchResponseMetadata
    }
  }
}

courses

Description

Retrieve a set of courses by their IDs

Response

Returns [Course]!

Arguments
Name Description
ids - [ID!]!

Example

Query
query courses($ids: [ID!]!) {
  courses(ids: $ids) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "courses": [
      {
        "id": "4",
        "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
        "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
        "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
        "badges": [LearningProductBadge],
        "curriculum": Curriculum,
        "prerequisites": ["Mathematics", "Programming"],
        "targetAudience": ["Developers", "Students"],
        "learningOutcomes": ["abc123"],
        "duration": "5h 21m 3s",
        "durationVideoContent": 19263,
        "durationInSeconds": 19263,
        "private": true,
        "organization": Organization,
        "organizationInfo": CourseOrganizationInfo,
        "images": CourseImages,
        "instructors": [CourseInstructor],
        "categories": [CourseCategory],
        "enrollments": CourseEnrollments,
        "enrollable": false,
        "isEnrolled": true,
        "isFree": true,
        "rating": CourseRating,
        "level": "ALL_LEVELS",
        "urlAutoEnroll": "https://www.udemy.com/",
        "urlCourseLanding": "https://www.udemy.com/",
        "urlCourseTaking": "https://www.udemy.com/",
        "locale": "en_US",
        "updatedOn": "2007-12-03",
        "topics": [Topic],
        "primaryTopic": Topic,
        "xapiActivityId": "4",
        "accreditations": [CourseAccreditation],
        "captions": [CourseCaptionDetails],
        "urlMobileNativeDeeplink": "https://www.udemy.com/",
        "promoVideo": CoursePromoVideo,
        "versionedIdentifier": VersionedIdentifier,
        "subscriptionInfo": CourseSubscriptionInfo,
        "isPracticeTestCourse": true
      }
    ]
  }
}

coursesByLandingURLs

Description

Retrieve a set of courses by their landing URLs

Response

Returns [Course]!

Arguments
Name Description
landingURLs - [URL!]!

Example

Query
query coursesByLandingURLs($landingURLs: [URL!]!) {
  coursesByLandingURLs(landingURLs: $landingURLs) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"landingURLs": ["https://www.udemy.com/"]}
Response
{
  "data": {
    "coursesByLandingURLs": [
      {
        "id": 4,
        "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
        "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
        "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
        "badges": [LearningProductBadge],
        "curriculum": Curriculum,
        "prerequisites": ["Mathematics", "Programming"],
        "targetAudience": ["Developers", "Students"],
        "learningOutcomes": ["abc123"],
        "duration": "5h 21m 3s",
        "durationVideoContent": 19263,
        "durationInSeconds": 19263,
        "private": false,
        "organization": Organization,
        "organizationInfo": CourseOrganizationInfo,
        "images": CourseImages,
        "instructors": [CourseInstructor],
        "categories": [CourseCategory],
        "enrollments": CourseEnrollments,
        "enrollable": true,
        "isEnrolled": false,
        "isFree": true,
        "rating": CourseRating,
        "level": "ALL_LEVELS",
        "urlAutoEnroll": "https://www.udemy.com/",
        "urlCourseLanding": "https://www.udemy.com/",
        "urlCourseTaking": "https://www.udemy.com/",
        "locale": "en_US",
        "updatedOn": "2007-12-03",
        "topics": [Topic],
        "primaryTopic": Topic,
        "xapiActivityId": 4,
        "accreditations": [CourseAccreditation],
        "captions": [CourseCaptionDetails],
        "urlMobileNativeDeeplink": "https://www.udemy.com/",
        "promoVideo": CoursePromoVideo,
        "versionedIdentifier": VersionedIdentifier,
        "subscriptionInfo": CourseSubscriptionInfo,
        "isPracticeTestCourse": false
      }
    ]
  }
}

coursesByVersionedIdentifiers

Description

Retrieve a set of courses by their versioned identifiers

Response

Returns [Course]!

Arguments
Name Description
versionedIdentifiers - [VersionedIdentifierInput!]!

Example

Query
query coursesByVersionedIdentifiers($versionedIdentifiers: [VersionedIdentifierInput!]!) {
  coursesByVersionedIdentifiers(versionedIdentifiers: $versionedIdentifiers) {
    id
    title
    headline
    description
    badges {
      ...LearningProductBadgeFragment
    }
    curriculum {
      ...CurriculumFragment
    }
    prerequisites
    targetAudience
    learningOutcomes
    duration
    durationVideoContent
    durationInSeconds
    private
    organization {
      ...OrganizationFragment
    }
    organizationInfo {
      ...CourseOrganizationInfoFragment
    }
    images {
      ...CourseImagesFragment
    }
    instructors {
      ...CourseInstructorFragment
    }
    categories {
      ...CourseCategoryFragment
    }
    enrollments {
      ...CourseEnrollmentsFragment
    }
    enrollable
    isEnrolled
    isFree
    rating {
      ...CourseRatingFragment
    }
    level
    urlAutoEnroll
    urlCourseLanding
    urlCourseTaking
    locale
    updatedOn
    topics {
      ...TopicFragment
    }
    primaryTopic {
      ...TopicFragment
    }
    xapiActivityId
    accreditations {
      ...CourseAccreditationFragment
    }
    captions {
      ...CourseCaptionDetailsFragment
    }
    urlMobileNativeDeeplink
    promoVideo {
      ...CoursePromoVideoFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    subscriptionInfo {
      ...CourseSubscriptionInfoFragment
    }
    isPracticeTestCourse
  }
}
Variables
{"versionedIdentifiers": [VersionedIdentifierInput]}
Response
{
  "data": {
    "coursesByVersionedIdentifiers": [
      {
        "id": "4",
        "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
        "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
        "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
        "badges": [LearningProductBadge],
        "curriculum": Curriculum,
        "prerequisites": ["Mathematics", "Programming"],
        "targetAudience": ["Developers", "Students"],
        "learningOutcomes": ["xyz789"],
        "duration": "5h 21m 3s",
        "durationVideoContent": 19263,
        "durationInSeconds": 19263,
        "private": true,
        "organization": Organization,
        "organizationInfo": CourseOrganizationInfo,
        "images": CourseImages,
        "instructors": [CourseInstructor],
        "categories": [CourseCategory],
        "enrollments": CourseEnrollments,
        "enrollable": true,
        "isEnrolled": false,
        "isFree": true,
        "rating": CourseRating,
        "level": "ALL_LEVELS",
        "urlAutoEnroll": "https://www.udemy.com/",
        "urlCourseLanding": "https://www.udemy.com/",
        "urlCourseTaking": "https://www.udemy.com/",
        "locale": "en_US",
        "updatedOn": "2007-12-03",
        "topics": [Topic],
        "primaryTopic": Topic,
        "xapiActivityId": 4,
        "accreditations": [CourseAccreditation],
        "captions": [CourseCaptionDetails],
        "urlMobileNativeDeeplink": "https://www.udemy.com/",
        "promoVideo": CoursePromoVideo,
        "versionedIdentifier": VersionedIdentifier,
        "subscriptionInfo": CourseSubscriptionInfo,
        "isPracticeTestCourse": false
      }
    ]
  }
}

dynamicWebContent

Description

The query to get the dynamic web content for the component represented by the contentId filter

Response

Returns a DynamicWebContent!

Arguments
Name Description
filters - DynamicWebContentFilters!

Example

Query
query dynamicWebContent($filters: DynamicWebContentFilters!) {
  dynamicWebContent(filters: $filters) {
    contents {
      ...DynamicWebContentFragment
    }
    contentUrl
    contentUrlText
    description
    heading
    image {
      ...DynamicWebContentImageFragment
    }
    labelText
    secondaryImage {
      ...DynamicWebContentImageFragment
    }
    trackingId
  }
}
Variables
{"filters": DynamicWebContentFilters}
Response
{
  "data": {
    "dynamicWebContent": {
      "contents": [DynamicWebContent],
      "contentUrl": "https://www.udemy.com/",
      "contentUrlText": "Get the report",
      "description": "GenAI and leadership are at the core of today's skills-based economy. Get the 2024 Global Learning & Skills Trends Report to learn more.",
      "heading": "Top trends for the future of work",
      "image": DynamicWebContentImage,
      "labelText": "Current",
      "secondaryImage": DynamicWebContentImage,
      "trackingId": "4"
    }
  }
}

featureVariantAssignmentsByConfigurationContextCode

Description

Returns assigned feature variants by configuration context code

Response

Returns [FeatureVariantAssignment!]!

Arguments
Name Description
configurationContextCode - String! Code of configuration context to which features belong
filters - FeatureVariantAssignmentFilters

Example

Query
query featureVariantAssignmentsByConfigurationContextCode(
  $configurationContextCode: String!,
  $filters: FeatureVariantAssignmentFilters
) {
  featureVariantAssignmentsByConfigurationContextCode(
    configurationContextCode: $configurationContextCode,
    filters: $filters
  ) {
    featureCode
    configuration
    isInExperiment
    experimentIds
    isLocalDefault
  }
}
Variables
{
  "configurationContextCode": "abc123",
  "filters": FeatureVariantAssignmentFilters
}
Response
{
  "data": {
    "featureVariantAssignmentsByConfigurationContextCode": [
      {
        "featureCode": "ab-testing",
        "configuration": "{\"key\":\"value\"}",
        "isInExperiment": false,
        "experimentIds": [123],
        "isLocalDefault": false
      }
    ]
  }
}

featureVariantAssignmentsByFeatureCodes

Description

Returns assigned feature variants

Response

Returns [FeatureVariantAssignment!]!

Arguments
Name Description
featureCodes - [String!]!
filters - FeatureVariantAssignmentFilters

Example

Query
query featureVariantAssignmentsByFeatureCodes(
  $featureCodes: [String!]!,
  $filters: FeatureVariantAssignmentFilters
) {
  featureVariantAssignmentsByFeatureCodes(
    featureCodes: $featureCodes,
    filters: $filters
  ) {
    featureCode
    configuration
    isInExperiment
    experimentIds
    isLocalDefault
  }
}
Variables
{
  "featureCodes": ["abc123"],
  "filters": FeatureVariantAssignmentFilters
}
Response
{
  "data": {
    "featureVariantAssignmentsByFeatureCodes": [
      {
        "featureCode": "ab-testing",
        "configuration": "{\"key\":\"value\"}",
        "isInExperiment": true,
        "experimentIds": [987],
        "isLocalDefault": false
      }
    ]
  }
}

featuredReviewsByTopics

Description

Return featured reviews for a given set of topics

Response

Returns [Review!]!

Arguments
Name Description
topicIds - [ID!]!

Example

Query
query featuredReviewsByTopics($topicIds: [ID!]!) {
  featuredReviewsByTopics(topicIds: $topicIds) {
    learningProductType
    text
    urlLearningProduct
  }
}
Variables
{"topicIds": [4]}
Response
{
  "data": {
    "featuredReviewsByTopics": [
      {
        "learningProductType": "ASSESSMENT",
        "text": "This course was a great introduction to AWS. I learned a lot and I'm excited to continue learning more about AWS.",
        "urlLearningProduct": "https://www.udemy.com/"
      }
    ]
  }
}

lab

Description

Retrieve a Lab by its ID

Response

Returns a Lab

Arguments
Name Description
id - ID!

Example

Query
query lab($id: ID!) {
  lab(id: $id) {
    id
    title
    description
    learningOutcomes
    activities
    prerequisites
    minEstimatedTime
    maxEstimatedTime
    instructors {
      ...LabInstructorFragment
    }
    topics {
      ...TopicFragment
    }
    urlLanding
    metadata {
      ...LabMetaDataFragment
    }
    durationInSeconds
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "lab": {
      "id": "4",
      "title": "Lab 1: Create a VPC",
      "description": "<p>Learn how to create a VPC</p>",
      "learningOutcomes": ["VPC is created"],
      "activities": ["Create a VPC"],
      "prerequisites": ["AWS Account"],
      "minEstimatedTime": 19263,
      "maxEstimatedTime": 19263,
      "instructors": [LabInstructor],
      "topics": [Topic],
      "urlLanding": "https://www.udemy.com/",
      "metadata": LabMetaData,
      "durationInSeconds": 19263
    }
  }
}

labSearch

Description

Search for labs

Response

Returns a LabSearchResponse

Arguments
Name Description
query - String!
filters - [SearchAggregationInputOption!]

Example

Query
query labSearch(
  $query: String!,
  $filters: [SearchAggregationInputOption!]
) {
  labSearch(
    query: $query,
    filters: $filters
  ) {
    labs {
      ...LabFragment
    }
    count
    filterOptions {
      ...SearchAggregationFragment
    }
    trackingId
  }
}
Variables
{
  "query": "xyz789",
  "filters": [SearchAggregationInputOption]
}
Response
{
  "data": {
    "labSearch": {
      "labs": [Lab],
      "count": 987,
      "filterOptions": [SearchAggregation],
      "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ"
    }
  }
}

labs

Description

Retrieve a set of Labs by their IDs

Response

Returns [Lab]!

Arguments
Name Description
ids - [ID!]!

Example

Query
query labs($ids: [ID!]!) {
  labs(ids: $ids) {
    id
    title
    description
    learningOutcomes
    activities
    prerequisites
    minEstimatedTime
    maxEstimatedTime
    instructors {
      ...LabInstructorFragment
    }
    topics {
      ...TopicFragment
    }
    urlLanding
    metadata {
      ...LabMetaDataFragment
    }
    durationInSeconds
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "labs": [
      {
        "id": 4,
        "title": "Lab 1: Create a VPC",
        "description": "<p>Learn how to create a VPC</p>",
        "learningOutcomes": ["VPC is created"],
        "activities": ["Create a VPC"],
        "prerequisites": ["AWS Account"],
        "minEstimatedTime": 19263,
        "maxEstimatedTime": 19263,
        "instructors": [LabInstructor],
        "topics": [Topic],
        "urlLanding": "https://www.udemy.com/",
        "metadata": LabMetaData,
        "durationInSeconds": 19263
      }
    ]
  }
}

learningPathCatalogFull

Description

Retrieve learning path catalog for the client

Arguments
Name Description
cursor - String Cursor to the next page of course catalog
pageSize - MaxResultsPerPage Number of results to return in one page. Default = 12

Example

Query
query learningPathCatalogFull(
  $cursor: String,
  $pageSize: MaxResultsPerPage
) {
  learningPathCatalogFull(
    cursor: $cursor,
    pageSize: $pageSize
  ) {
    learningPaths {
      ...LearningPathFragment
    }
    syncToken
    cursor
  }
}
Variables
{"cursor": "abc123", "pageSize": 12}
Response
{
  "data": {
    "learningPathCatalogFull": {
      "learningPaths": [LearningPath],
      "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
      "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
    }
  }
}

learningPathCatalogUpdated

Description

Retrieve updates to the learning path catalog for the client

Arguments
Name Description
syncToken - String! Sync Token from the last sync
cursor - String Cursor to the next page of course catalog
pageSize - MaxResultsPerPage Number of results to return in one page. Default = 12

Example

Query
query learningPathCatalogUpdated(
  $syncToken: String!,
  $cursor: String,
  $pageSize: MaxResultsPerPage
) {
  learningPathCatalogUpdated(
    syncToken: $syncToken,
    cursor: $cursor,
    pageSize: $pageSize
  ) {
    addedLearningPaths {
      ...LearningPathFragment
    }
    updatedLearningPaths {
      ...LearningPathFragment
    }
    removedLearningPaths
    syncToken
    cursor
  }
}
Variables
{
  "syncToken": "abc123",
  "cursor": "xyz789",
  "pageSize": 12
}
Response
{
  "data": {
    "learningPathCatalogUpdated": {
      "addedLearningPaths": [LearningPath],
      "updatedLearningPaths": [LearningPath],
      "removedLearningPaths": [4],
      "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
      "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
    }
  }
}

learningPathSearch

Description

Searches paths by given query

Response

Returns a LearningPathSearchResponse

Arguments
Name Description
query - String!
filters - LearningPathSearchFilters

Example

Query
query learningPathSearch(
  $query: String!,
  $filters: LearningPathSearchFilters
) {
  learningPathSearch(
    query: $query,
    filters: $filters
  ) {
    paths {
      ...ProLearningPathFragment
    }
    count
    metadata {
      ...PathSearchResponseMetadataFragment
    }
  }
}
Variables
{
  "query": "xyz789",
  "filters": LearningPathSearchFilters
}
Response
{
  "data": {
    "learningPathSearch": {
      "paths": [ProLearningPath],
      "count": 123,
      "metadata": PathSearchResponseMetadata
    }
  }
}

learningProducts

Description

Returns available learning products for the client

Response

Returns a LearningProductsPaged!

Arguments
Name Description
page - Int Default = 0
size - MaxResultsPerPage Default = 12

Example

Query
query learningProducts(
  $page: Int,
  $size: MaxResultsPerPage
) {
  learningProducts(
    page: $page,
    size: $size
  ) {
    page
    pageCount
    items {
      ...LearningProductFragment
    }
  }
}
Variables
{"page": 0, "size": 12}
Response
{
  "data": {
    "learningProducts": {
      "page": 987,
      "pageCount": 123,
      "items": [LearningProduct]
    }
  }
}

learningTestimonials

Description

Returns a list of Learning Testimonials based on the page type

Response

Returns [LearningTestimonial]!

Arguments
Name Description
filters - LearningTestimonialFilters!

Example

Query
query learningTestimonials($filters: LearningTestimonialFilters!) {
  learningTestimonials(filters: $filters) {
    content
    id
    relatedUrl
    relatedUrlText
    source {
      ...LearningTestimonialSourceFragment
    }
    type
  }
}
Variables
{"filters": LearningTestimonialFilters}
Response
{
  "data": {
    "learningTestimonials": [
      {
        "content": "<p>Udemy was rated the most popular online course or certification program for learning how to code according to StackOverflow&rsquo;s 2023 Developer survey. </p>",
        "id": "4",
        "relatedUrl": "https://www.udemy.com/",
        "relatedUrlText": "<p><b>View Web Development courses</b></p>",
        "source": LearningTestimonialSource,
        "type": "CASE_STUDY"
      }
    ]
  }
}

lecture

Description

Fetches a lecture by its ID

Response

Returns a Lecture

Arguments
Name Description
id - ID!

Example

Query
query lecture($id: ID!) {
  lecture(id: $id) {
    id
    title
    images {
      ...LectureImagesFragment
    }
    urlAutoEnroll
    urlLanding
    thumbnail
    course {
      ...CourseFragment
    }
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "lecture": {
      "id": 4,
      "title": "abc123",
      "images": LectureImages,
      "urlAutoEnroll": "https://www.udemy.com/",
      "urlLanding": "https://www.udemy.com/",
      "thumbnail": "https://www.udemy.com/",
      "course": Course,
      "versionedIdentifier": VersionedIdentifier
    }
  }
}

lectureSearch

Description

Searches lectures semantically for given query. To get a result, query must be in english and at least three words. The search team has been focused on leveraging semantic search to be able to recommend the right lectures for users. Instead of relying on just titles and descriptions, the team leverage caption data to understand content better and provide better results

Response

Returns a LectureSearchResponse

Arguments
Name Description
query - String!

Example

Query
query lectureSearch($query: String!) {
  lectureSearch(query: $query) {
    results {
      ...LectureSearchResultFragment
    }
    metadata {
      ...LectureSearchResponseMetadataFragment
    }
    experimentResults {
      ...FeatureVariantAssignmentFragment
    }
  }
}
Variables
{"query": "abc123"}
Response
{
  "data": {
    "lectureSearch": {
      "results": [LectureSearchResult],
      "metadata": LectureSearchResponseMetadata,
      "experimentResults": [FeatureVariantAssignment]
    }
  }
}

lesson

Description

Fetches the latest released version of a Lesson

Response

Returns a Lesson

Arguments
Name Description
id - LessonIdInput!

Example

Query
query lesson($id: LessonIdInput!) {
  lesson(id: $id) {
    id {
      ...LessonIdFragment
    }
    version
    entityTag
    locale
    created
    updated
    article {
      ...LessonArticleFragment
    }
  }
}
Variables
{"id": LessonIdInput}
Response
{
  "data": {
    "lesson": {
      "id": {"idType": "ASSET_ID", "idValue": "12392384"},
      "version": "@1746636635859356",
      "entityTag": 4,
      "locale": "en-US",
      "created": "2007-12-03T10:15:30Z",
      "updated": "2007-12-03T10:15:30Z",
      "article": {
        "uuid": "a210e247-a33c-478c-82a6-1244cf695de1",
        "title": "Intro to Containers",
        "description": "This article explains what containers are",
        "locale": "en-US",
        "source": "AI",
        "takeaways": {
          "content": "- Containers are lightweight\n- Great for microservices"
        },
        "fragments": [
          {
            "timestamp": 10,
            "content": {
              "__typename": "Markdown",
              "content": "This part explains Docker basics."
            }
          },
          {
            "timestamp": 30,
            "content": {
              "__typename": "Markdown",
              "content": "Now let's dive into layers and images."
            }
          },
          {
            "timestamp": 60,
            "content": {
              "__typename": "CodeBlock",
              "language": "rust",
              "code": "hello.world()"
            }
          }
        ]
      }
    }
  }
}

moreRecommendationContextSections

Description

This query is used to fetch more RecommendationContextSections from a RecommendationContext

Arguments
Name Description
params - MoreRecommendationContextSectionsInput!

Example

Query
query moreRecommendationContextSections($params: MoreRecommendationContextSectionsInput!) {
  moreRecommendationContextSections(params: $params) {
    sections {
      ...RecommendationContextSectionFragment
    }
    sectionsCursor
  }
}
Variables
{"params": MoreRecommendationContextSectionsInput}
Response
{
  "data": {
    "moreRecommendationContextSections": {
      "sections": [RecommendationContextSection],
      "sectionsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
    }
  }
}

moreRecommendationItems

Description

This query is used to fetch more RecommendationItems from a RecommendationUnit

Arguments
Name Description
params - MoreRecommendationItemsInput!

Example

Query
query moreRecommendationItems($params: MoreRecommendationItemsInput!) {
  moreRecommendationItems(params: $params) {
    items {
      ...RecommendationItemFragment
    }
    itemsCursor
  }
}
Variables
{"params": MoreRecommendationItemsInput}
Response
{
  "data": {
    "moreRecommendationItems": {
      "items": [RecommendationItem],
      "itemsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
    }
  }
}

navList

Description

Get the navigation list for a given name

Response

Returns [NavListItem]!

Arguments
Name Description
name - NavListName!

Example

Query
query navList($name: NavListName!) {
  navList(name: $name) {
    children {
      ...NavListItemFragment
    }
  }
}
Variables
{"name": "MAIN"}
Response
{"data": {"navList": [{"children": [NavListItem]}]}}

organizationAuditLogSearch

Description

Retrieves audit logs for a specific organization within a date range

Response

Returns [OrganizationAuditLog!]!

Arguments
Name Description
filter - OrganizationAuditLogFilter!

Example

Query
query organizationAuditLogSearch($filter: OrganizationAuditLogFilter!) {
  organizationAuditLogSearch(filter: $filter) {
    orgId
    timestamp
    actor {
      ...ActorFragment
    }
    entity {
      ...EntityFragment
    }
    event
    metadata {
      ...MetadataEntryFragment
    }
  }
}
Variables
{"filter": OrganizationAuditLogFilter}
Response
{
  "data": {
    "organizationAuditLogSearch": [
      {
        "orgId": 4,
        "timestamp": "2007-12-03T10:15:30Z",
        "actor": Actor,
        "entity": Entity,
        "event": "USER_CREATED",
        "metadata": [MetadataEntry]
      }
    ]
  }
}

popularTopicsByCategoryId

Description

Gets a list of all popular topics

Response

Returns [PopularTopic]!

Arguments
Name Description
categoryId - ID!

Example

Query
query popularTopicsByCategoryId($categoryId: ID!) {
  popularTopicsByCategoryId(categoryId: $categoryId) {
    topic {
      ...TopicFragment
    }
    subcategory {
      ...PopularTopicSubCategoryFragment
    }
    popularityType
  }
}
Variables
{"categoryId": 4}
Response
{
  "data": {
    "popularTopicsByCategoryId": [
      {
        "topic": Topic,
        "subcategory": PopularTopicSubCategory,
        "popularityType": "POPULAR"
      }
    ]
  }
}

practiceAssignment

Description

Fetches a practice assignment by its ID

Response

Returns a PracticeAssignment

Arguments
Name Description
id - ID!

Example

Query
query practiceAssignment($id: ID!) {
  practiceAssignment(id: $id) {
    id
    title
    description
    urlLanding
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    course {
      ...CourseFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "practiceAssignment": {
      "id": "4",
      "title": "Practice Assignment 1",
      "description": "Practice Assignment 1. AWS Certified Solutions Architect Associate",
      "urlLanding": "https://www.udemy.com/",
      "versionedIdentifier": VersionedIdentifier,
      "course": Course
    }
  }
}

practiceTest

Description

Fetches a practice test by its ID

Response

Returns a PracticeTest

Arguments
Name Description
id - ID!

Example

Query
query practiceTest($id: ID!) {
  practiceTest(id: $id) {
    id
    title
    minimumPassingScore
    randomized
    urlLanding
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    course {
      ...CourseFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "practiceTest": {
      "id": "4",
      "title": "Practice Test 1. AWS Certified Solutions Architect Associate",
      "minimumPassingScore": 123,
      "randomized": false,
      "urlLanding": "https://www.udemy.com/",
      "versionedIdentifier": VersionedIdentifier,
      "course": Course
    }
  }
}

quiz

Description

Fetches a quiz by its ID

Response

Returns a Quiz

Arguments
Name Description
id - ID!

Example

Query
query quiz($id: ID!) {
  quiz(id: $id) {
    id
    title
    description
    urlLanding
    versionedIdentifier {
      ...VersionedIdentifierFragment
    }
    course {
      ...CourseFragment
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "quiz": {
      "id": "4",
      "title": "Quiz 1. AWS Certified Solutions Architect Associate",
      "description": "Timed quiz for AWS Certified Solutions Architect Associate",
      "urlLanding": "https://www.udemy.com/",
      "versionedIdentifier": VersionedIdentifier,
      "course": Course
    }
  }
}

recommendations

Description

When a page is being loaded initially, this query is made without a cursor. First slice of sections is returned according to 'requestedSectionCount' parameter. Later, a new slice of sections can be fetched by moreRecommendationContextSections query

Response

Returns a RecommendationContextResponse!

Arguments
Name Description
params - RecommendationContextInput!

Example

Query
query recommendations($params: RecommendationContextInput!) {
  recommendations(params: $params) {
    recommendationContext {
      ...RecommendationContextFragment
    }
  }
}
Variables
{"params": RecommendationContextInput}
Response
{
  "data": {
    "recommendations": {
      "recommendationContext": RecommendationContext
    }
  }
}

searchAutocomplete

Description

Search for autocomplete

Arguments
Name Description
query - String! Default = ""
limit - PositiveInt! Default = 12
filters - SearchAutocompleteRequestFilters
metadata - SearchAutocompleteRequestMetadata Default = null

Example

Query
query searchAutocomplete(
  $query: String!,
  $limit: PositiveInt!,
  $filters: SearchAutocompleteRequestFilters,
  $metadata: SearchAutocompleteRequestMetadata
) {
  searchAutocomplete(
    query: $query,
    limit: $limit,
    filters: $filters,
    metadata: $metadata
  ) {
    trackingId
    resultTrackingId
    item {
      ... on Course {
        ...CourseFragment
      }
      ... on CourseInstructor {
        ...CourseInstructorFragment
      }
      ... on SearchAutocompleteLogItem {
        ...SearchAutocompleteLogItemFragment
      }
    }
  }
}
Variables
{
  "query": "",
  "limit": 12,
  "filters": SearchAutocompleteRequestFilters,
  "metadata": null
}
Response
{
  "data": {
    "searchAutocomplete": [
      {
        "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ",
        "resultTrackingId": "p55X_jHUQ7yNmI0HQ4TmgA",
        "item": Course
      }
    ]
  }
}

subscriptionPlans

Description

Returns available subscription plans for a given user

Response

Returns [SubscriptionPlan!]!

Arguments
Name Description
filters - SubscriptionPlanFilters

Example

Query
query subscriptionPlans($filters: SubscriptionPlanFilters) {
  subscriptionPlans(filters: $filters) {
    id
    productType
    urlLearnMore
    urlExpressCheckout
    urlTermsOfUse
    priceOptions {
      ... on DailySubscriptionPlanPricingOption {
        ...DailySubscriptionPlanPricingOptionFragment
      }
      ... on WeeklySubscriptionPlanPricingOption {
        ...WeeklySubscriptionPlanPricingOptionFragment
      }
      ... on MonthlySubscriptionPlanPricingOption {
        ...MonthlySubscriptionPlanPricingOptionFragment
      }
      ... on AnnualSubscriptionPlanPricingOption {
        ...AnnualSubscriptionPlanPricingOptionFragment
      }
    }
    contentCollections {
      ...ContentCollectionFragment
    }
  }
}
Variables
{"filters": SubscriptionPlanFilters}
Response
{
  "data": {
    "subscriptionPlans": [
      {
        "id": 4,
        "productType": "CONSUMERSUBSCRIPTION",
        "urlLearnMore": "https://www.udemy.com/",
        "urlExpressCheckout": "https://www.udemy.com/",
        "urlTermsOfUse": "https://www.udemy.com/",
        "priceOptions": [
          DailySubscriptionPlanPricingOption
        ],
        "contentCollections": [ContentCollection]
      }
    ]
  }
}

topic

Description

Returns a topic by ID

Response

Returns a Topic

Arguments
Name Description
id - ID!

Example

Query
query topic($id: ID!) {
  topic(id: $id) {
    id
    name
    url
    groups {
      ...TopicGroupFragment
    }
    questionsAndAnswers {
      ...TopicQuestionAndAnswerFragment
    }
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "topic": {
      "id": 4,
      "name": "Python",
      "url": "https://www.udemy.com/topic/python",
      "groups": [TopicGroup],
      "questionsAndAnswers": [TopicQuestionAndAnswer]
    }
  }
}

topicGroups

Description

Returns a list of topic groups by ID

Response

Returns [TopicGroup!]!

Arguments
Name Description
ids - [ID!]

Example

Query
query topicGroups($ids: [ID!]) {
  topicGroups(ids: $ids) {
    id
    name
  }
}
Variables
{"ids": ["4"]}
Response
{"data": {"topicGroups": [{"id": 4, "name": "Programming Languages"}]}}

topicSearch

Description

Search topics

Response

Returns [Topic!]!

Arguments
Name Description
filters - TopicFilters
query - String
limit - PositiveInt!

Example

Query
query topicSearch(
  $filters: TopicFilters,
  $query: String,
  $limit: PositiveInt!
) {
  topicSearch(
    filters: $filters,
    query: $query,
    limit: $limit
  ) {
    id
    name
    url
    groups {
      ...TopicGroupFragment
    }
    questionsAndAnswers {
      ...TopicQuestionAndAnswerFragment
    }
  }
}
Variables
{
  "filters": TopicFilters,
  "query": "abc123",
  "limit": 123
}
Response
{
  "data": {
    "topicSearch": [
      {
        "id": 4,
        "name": "Python",
        "url": "https://www.udemy.com/topic/python",
        "groups": [TopicGroup],
        "questionsAndAnswers": [TopicQuestionAndAnswer]
      }
    ]
  }
}

topics

Description

Return a list of topics by ID

Response

Returns [Topic!]!

Arguments
Name Description
ids - [ID!]!

Example

Query
query topics($ids: [ID!]!) {
  topics(ids: $ids) {
    id
    name
    url
    groups {
      ...TopicGroupFragment
    }
    questionsAndAnswers {
      ...TopicQuestionAndAnswerFragment
    }
  }
}
Variables
{"ids": [4]}
Response
{
  "data": {
    "topics": [
      {
        "id": 4,
        "name": "Python",
        "url": "https://www.udemy.com/topic/python",
        "groups": [TopicGroup],
        "questionsAndAnswers": [TopicQuestionAndAnswer]
      }
    ]
  }
}

Interfaces

BadgeClass

Description

The BadgeClass interface. A collection of information about the accomplishment recognized by the Open Badge. It means Certification for the most cases

Fields
Field Name Description
id - ID! ID of the BadgeClass
externalUrl - URL! IRI of the BadgeClass. IRI of OpenBadge specification
type - [String!]! Type of the BadgeClass. In most cases, this will simply be the string BadgeClass
name - String! Name of the BadgeClass
description - String! A short description of BadgeClass
image - BadgeClassImage! A PNG or SVG image of the BadgeClass
criteria - BadgeClassCriteria! Criteria document describing how to earn the BadgeClass (Certification)
issuer - BadgeClassIssuer! Organization that issued the badge
alignment - [BadgeClassAlignment!] An object describing which objectives or educational standards this badge aligns to, if any
tags - [String!]! A tag that describes the type of achievement. (Skills)
topic - Topic Topic of badge class. Can be null for badge classes uploaded by users
assertions - [BadgeAssertion!]! User's assertions for the badge class
subjectAreas - [BadgeCertificationSubjectArea!] Subject Area (recently renamed to Skill Area) for this BadgeClass (i.e. Data Science, CyberSecurity)
providers - [BadgeCertificationProvider!] Certification Provider for this Badge Class
visibilityStatus - BadgeClassVisibilityStatus! Visibility of the badge class on the Udemy platform (only available for applications with admin:application scope)
examRegistrationUrls - [CertificationExamURL!]! Links to exam registration page for this certification (deprecated)
certificationExam - CertificationExam Exam registration details, if an exam is required for earning this Badge
totalAssertionsCount - Int! Total number of assertions issued for this badge class
isEnrolled - Boolean! Whether the current user is enrolled
Possible Types
BadgeClass Types

OpenBadgeClass

Example
{
  "id": 4,
  "externalUrl": "https://www.udemy.com/",
  "type": ["abc123"],
  "name": "abc123",
  "description": "xyz789",
  "image": BadgeClassImage,
  "criteria": BadgeClassCriteria,
  "issuer": BadgeClassIssuer,
  "alignment": [BadgeClassAlignment],
  "tags": ["xyz789"],
  "topic": Topic,
  "assertions": [BadgeAssertion],
  "subjectAreas": [BadgeCertificationSubjectArea],
  "providers": [BadgeCertificationProvider],
  "visibilityStatus": "VISIBLE",
  "examRegistrationUrls": [CertificationExamURL],
  "certificationExam": CertificationExam,
  "totalAssertionsCount": 123,
  "isEnrolled": false
}

Category

Description

Category the Course belongs to

Fields
Field Name Description
id - ID! ID of the category
name - String! Name of the category
subcategories - [SubCategory!]! Subcategories belonging to the category
Possible Types
Category Types

CourseCategory

Example
{
  "id": 4,
  "name": "abc123",
  "subcategories": [SubCategory]
}

CurriculumItem

Description

Interface for a curriculum item

Fields
Field Name Description
id - ID! Id of the curriculum item
title - String! Title of the curriculum item
versionedIdentifier - VersionedIdentifier! Versioned identifier of the curriculum item
course - Course Course this curriculum item belongs to
Example
{
  "id": "4",
  "title": "abc123",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

CustomizableRecommendationPresentation

Description

If a part of the response needs customizations about how it should be rendered on the UI, this interface should be implemented

Fields
Field Name Description
viewType - String

Frontend application should always be able to determine how to render a recommendations based on basic information such as context, item type, unit type, etc. However, there might be some edge cases where the person who configures the RecommendationContext and RecommendationUnits on Tapen might want to a customize UI behavior slightly for a unit. This person coordinates with the FE teams and they agree on a specific value for this field. When this specific value is received, FE uses an alternative appearance for that recommendation.

The field is a string because the responsibility of this API and related backend services is just to convey this field. It is never processed in recommendation backend services, just conveyed

Possible Types
CustomizableRecommendationPresentation Types

RecommendationUnit

RecommendationUnitGroup

Example
{"viewType": "xyz789"}

Instructor

Description

Instructor for a learning product

Fields
Field Name Description
id - ID! ID of the Instructor
name - String! Instructor's name
url - URL The URL to access the instructor page
images - InstructorImages! Instructor's image by varying pixels
Possible Types
Instructor Types

CourseInstructor

LabInstructor

Example
{
  "id": 4,
  "name": "Stephane Maarek",
  "url": "https://www.udemy.com/user/stephane-maarek/",
  "images": InstructorImages
}

LearningPath

Description

The learning path object

Fields
Field Name Description
id - ID! ID of the learning path
title - String! Title of the learning path
description - SafeHtml Description of the learning path
itemCount - Int! Number of items in the learning path
topics - [Topic!] Topics associated with the learning path
badges - [BadgeClass!] Badges of the learning path
urlLanding - URL! Landing page to view this LearningPath
trackingId - String Unique analytics ID for this instance of LearningPath returned from the server in this request
durationInSeconds - DurationInSeconds The duration of the learning path
sectionCount - Int! Number of sections in the learning path
sections - [LearningPathSection!] Sections of the learning path
isEnrolled - Boolean! Is the user enrolled in this learning path or not
Possible Types
LearningPath Types

ProLearningPath

OrganizationLearningPath

Example
{
  "id": "4",
  "title": "abc123",
  "description": SafeHtml,
  "itemCount": 123,
  "topics": [Topic],
  "badges": [BadgeClass],
  "urlLanding": "https://www.udemy.com/",
  "trackingId": "xyz789",
  "durationInSeconds": 19263,
  "sectionCount": 123,
  "sections": [LearningPathSection],
  "isEnrolled": true
}

LearningPathItem

Description

Learning Path Item can be Course, Lab, Assessment, Learning Path Resource, and Course Portion

Fields
Field Name Description
id - ID! ID of the item
title - String! Title of the item
description - SafeHtml Description of the item
durationInSeconds - DurationInSeconds The duration of the item
Possible Types
LearningPathItem Types

Assessment

Course

Lab

LearningPathCoursePortion

LearningPathResource

Example
{
  "id": "4",
  "title": "xyz789",
  "description": SafeHtml,
  "durationInSeconds": 19263
}

LearningProduct

Description

All partner's content collection items that are available, currently just course

Fields
Field Name Description
id - ID! ID of the learning product
Example
{"id": "4"}

LearningProductBadge

Example
{"name": "xyz789"}

Lecture

Description

Represents a lecture type

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "abc123",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/",
  "urlLanding": "https://www.udemy.com/",
  "thumbnail": "https://www.udemy.com/",
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

NavListItem

Description

Item in navigation list

Fields
Field Name Description
children - [NavListItem]! List of child navigation items
Possible Types
NavListItem Types

CategoryNavListItem

SubcategoryNavListItem

Example
{"children": [NavListItem]}

Paginated

Description

Interface for implementing paginated results

Fields
Field Name Description
pageCount - Int! The total amount of pages. Calculated as (total result count / page size)
page - Int! The current page number, 0 based
Example
{"pageCount": 987, "page": 123}

RecommendationContextSection

Description

RecommendationContext comprises multiple sections. Sections might be a RecommendationUnit or RecommendationUnitGroup

Fields
Field Name Description
id - ID! ID of the actual section object (RecommendationUnit or RecommendationUnitGroup)
title - String Title of the actual section object (RecommendationUnit or RecommendationUnitGroup)
Possible Types
RecommendationContextSection Types

RecommendationUnit

RecommendationUnitGroup

Example
{
  "id": "4",
  "title": "xyz789"
}

RecommendationItem

Description

A recommendation item comprises the actual entity (ex. course) to be recommended and some additional fields required specifically by the recommendations domain

Fields
Field Name Description
id - ID! This ID is different from the ID of the underlying recommended object to provide uniqueness across item types. For example, the ID of the course in a CourseRecommendation object might be 123 and there might be a LectureRecommendation object with a lecture ID 123. To achieve uniqueness for the ID of the wrapper objects CourseRecommendation and LectureRecommendation), this ID of the wrapper object is different from the ID of the underlying object
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
Example
{
  "id": "4",
  "trackingId": "abc123"
}

SubCategory

Description

SubCategory interface

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
Example
{
  "id": "4",
  "name": "xyz789"
}

TrackableRecommendation

Description

If backend generates a tracking ID for any part of the response, and if the tracking ID ıs needed in the frontend, the object should implement this interface

Fields
Field Name Description
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation is served
Example
{"trackingId": "abc123"}

Types

Actor

Description

Represents the actor who performed the event

Fields
Field Name Description
actorId - ID! The unique identifier for the actor
actorType - ActorType! The type of actor, such as an end user, impersonator, or service
Example
{"actorId": "4", "actorType": "END_USER"}

AnnualSubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for annual plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
monthlyPrice - Money! The monthly list price of the subscription price plan. Applicable for annual plan only. Represents fraction of list price
annualSavings - Money The annual savings amount for the subscription price plan when compared to monthly plans. calculated on pricing backend can be null
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": 4,
  "listPrice": Money,
  "monthlyPrice": Money,
  "annualSavings": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

ArticleLecture

Description

Article lecture

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

Assessment

Description

An Assessment represents a collection of Forms (which are variations of items and orderings of items). A user chooses to take an Assessment. They are then give a Form to take from that Assessment

Fields
Field Name Description
id - ID! ID of the assessment
title - String! The name, for example: 'HTML' or 'AWS Developer Certification'
description - SafeHtml! Description of the assessment
isBeta - Boolean! Is the assessment beta or not
isActive - Boolean! Is the assessment active or not
urlLanding - URL! Landing page to view this Assessment
metadata - AssessmentMetadata Metadata associated with the assessment
assignment - AssessmentAssignment The assessment's assignment information, if the assessment has been assigned to the user
durationInSeconds - DurationInSeconds Duration of an assessment in seconds
Example
{
  "id": "10",
  "title": "AWS Certified Developer - Associate",
  "description": "<p>Put your knowledge to the test with this series of multiple-choice and multi-select questions.</p> <p>If you exit before finishing and return within 24 hours, you can restart where you left off. Otherwise, you can start again with a new set of questions.</p>",
  "isBeta": false,
  "isActive": true,
  "urlLanding": "https://learning.udemy.com/skills-assessment/advanced-java/",
  "metadata": {"trackingId": "O9eKKCzdQim95RLDVXI3OA"},
  "assignment": {"dueDat": "2024-04-19T20:13:25.000Z", "id": "10"},
  "durationInSeconds": 19263
}

AssessmentAssignment

Description

A unique assignment of an assessment to a user, with optional due date

Fields
Field Name Description
id - ID! ID of the assignment
dueDate - DateTime An optional due date by which the assignment should be completed
Example
{"id": "10", "dueDate": "2024-04-19T20:13:25.000Z"}

AssessmentMetadata

Description

MetaData for an assessment

Fields
Field Name Description
trackingId - String Unique analytics ID for this instance of Assessment returned from the server in this request
Example
{"trackingId": "O9eKKCzdQim95RLDVXI3OA"}

AssessmentRecommendation

Description

A wrapper type to include the recommended Assessment and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
assessment - Assessment Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "assessment": Assessment
}

AssessmentSearchResponse

Description

List of Assessment and additional data about search response

Fields
Field Name Description
assessments - [Assessment]! List of Assessment objects
count - Int! Total number of Assessments matching the search query and filters
metadata - AssessmentSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "assessments": [Assessment],
  "count": 987,
  "metadata": AssessmentSearchResponseMetadata
}

AssessmentSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{"trackingId": "JjBqqc4LS2K9Ht_1LTpaMg"}

AudioLecture

Description

Lecture in the form of just audio (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

BadgeAssertion

Description

Issued Badge of a user (Assertion in OpenBadge specification)

Fields
Field Name Description
id - ID! ID of the Assertion
externalUrl - URL! IRI of the Assertion. IRI of OpenBadge specification
issuedOn - Date! The date this assertion is issued
expires - Date The date this assertion expires
user - User! Owner of the assertion
badgeClass - BadgeClass! The BadgeClass object that this Assertion is issued for
uploadedImageUrl - URL The url of the uploaded baked image of assertion
Example
{
  "id": "4",
  "externalUrl": "https://www.udemy.com/",
  "issuedOn": "2007-12-03",
  "expires": "2007-12-03",
  "user": User,
  "badgeClass": BadgeClass,
  "uploadedImageUrl": "https://www.udemy.com/"
}

BadgeAssertionPaged

Description

Issued badges of a user (Assertion in OpenBadge specification)

Fields
Field Name Description
items - [BadgeAssertion!]! List of BadgeAssertions
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page pageSize)
totalCount - Int! Total number of BadgeAssertions
Example
{
  "items": [BadgeAssertion],
  "page": 123,
  "pageCount": 987,
  "totalCount": 987
}

BadgeCertificationProvider

Description

Certification Provider (topic descriptor) for Open Badges

Fields
Field Name Description
id - ID! ID of certification provider
name - String! Title of certification provider(Google, Microsoft)
Example
{
  "id": "4",
  "name": "(AWS) Amazon Web Services"
}

BadgeCertificationSubjectArea

Description

Certification Subject Area (topic descriptor) for Open Badges

Fields
Field Name Description
id - ID! ID of certification subject area
name - String! Title of certification subject area(Cloud, SQL)
Example
{"id": 4, "name": "SQL"}

BadgeClassAlignment

Description

Alignment object. An intangible item that describes an alignment between a learning resource and a BadgeClass

Fields
Field Name Description
targetName - String Name of the alignment
targetUrl - URL URL linking to the official description of the alignment target, for example an individual standard within an educational framework
targetDescription - String Short description of the alignment target
targetFramework - String Name of the framework the alignment target
targetCode - String If applicable, a locally unique string identifier that identifies the alignment target within its framework and/or targetUrl
Example
{
  "targetName": "Badge target name",
  "targetUrl": "https://www.udemy.com/",
  "targetDescription": "Badge target description",
  "targetFramework": "Badge target framework",
  "targetCode": "Python"
}

BadgeClassCriteria

Description

Descriptive metadata about the achievements necessary to be issued with particular BadgeClass (Certification)

Fields
Field Name Description
id - URL The URI of a webpage that describes in a human-readable format the criteria for the BadgeClass
type - [String!] Type of the Criteria
narrative - String A narrative of what is needed to earn the badge
Example
{
  "id": "https://www.udemy.com/",
  "type": ["CERTIFICATION"],
  "narrative": "Maintain an active status as a CCIE or as a CCIE Emeritus for 20 consecutive years in at least one CCIE track."
}

BadgeClassImage

Description

Image object of BadgeClass or Issuer

Fields
Field Name Description
id - ID! URI of the image
caption - String The caption for the image
author - String The author of the image
type - [String!] Type of Image
Example
{
  "id": "4",
  "caption": "image.png",
  "author": "Cisco",
  "type": ["logo"]
}

BadgeClassIssuer

Description

Issuer of BadgeClass. A collection of information that describes the entity or organization

Fields
Field Name Description
id - ID! Unique IRI for the Issuer/Profile file
type - [String!]! Issuer type. In most cases, this will simply be the string Issuer or the more general Profile
name - String! The name of the entity or organization
url - URL! The homepage or social media profile of the entity, whether individual or institutional
email - EmailAddress Contact address for the individual or organization
telephone - String A phone number for the entity
description - String A short description of the issuer entity or organization
image - BadgeClassImage IRI or document representing an image of the issuer. This must be a PNG or SVG image
Example
{
  "id": "4",
  "type": ["Profile"],
  "name": "Cisco",
  "url": "https://www.cisco.com/",
  "email": "test@test.com",
  "telephone": "1-800-553-6387",
  "description": "Cisco is the worldwide leader in networking that transforms how people connect, communicate and collaborate.",
  "image": BadgeClassImage
}

BadgeClassSearchResponse

Description

Paginated list of BadgeClasses for search response

Fields
Field Name Description
items - [BadgeClass!]! List of BadgeClasses
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page pageSize)
Example
{"items": [BadgeClass], "page": 123, "pageCount": 123}

BadgeSubCategory

Description

SubCategory with no additional fields

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
Example
{"id": "4", "name": "Cloud Certifications"}

BeginnerTopRatedCategoryTopicBadge

Description

Represents a badge awarded to a beginner top-rated category topic

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge, e.g. 1,2,3
category - Category The category associated with the badge
topic - Topic The topic associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "category": Category,
  "topic": Topic
}

BeginnerTopRatedSubcategoryBadge

Description

Represents a badge awarded to a beginner top-rated subcategory

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "subcategory": BadgeSubCategory
}

BeginnerTopRatedSubcategoryTopicBadge

Description

Represents a badge awarded to a beginner top-rated subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
topic - Topic The topic associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "subcategory": BadgeSubCategory,
  "topic": Topic
}

BestSellerCategoryTopicBadge

Description

Represents a badge awarded to a best seller category topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
category - Category The category associated with the badge
Example
{
  "name": "Good for Beginners",
  "topic": Topic,
  "category": Category
}

BestSellerSubcategoryBadge

Description

Represents a badge awarded to a best seller subcategory

Fields
Field Name Description
name - String! The localized name of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{"name": "Bestseller", "subcategory": BadgeSubCategory}

BestSellerSubcategoryTopicBadge

Description

Represents a badge awarded to a best seller subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Bestseller",
  "topic": Topic,
  "subcategory": BadgeSubCategory
}

CategoryNavListItem

Description

Category navigation list item

Fields
Field Name Description
category - CourseCategory! The category this item represents
children - [NavListItem]! List of child navigation items
Example
{
  "category": CourseCategory,
  "children": [NavListItem]
}

CategoryRecommendation

Description

A wrapper type to include the recommended Category and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
category - Category Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "category": Category
}

CertificationExam

Description

Certification Exam for earning a Badge

Fields
Field Name Description
urlRegistration - URL URL to the exam registration page for a certification
incentiveOfferTextPublic - SafeHtml If the Cert/Badge provider offers discount/incentive to Udemy students. Public version is for display on e.g. Course Landing Page (when the person has not yet purchased). Whether or not incentive is offered may depend on the specific LearningProduct
Arguments
learningProduct - LearningProductInput
incentiveOfferTextPrivate - SafeHtml If the Cert/Badge provider offers discount/incentive to Udemy students. Private version is for display on e.g. Course Taking Page (after the person has purchased) Whether or not incentive is offered may depend on the specific LearningProduct
Arguments
learningProduct - LearningProductInput
Example
{
  "urlRegistration": "https://www.cncf.io/training/certification/cka/",
  "incentiveOfferTextPublic": "Enroll in this course and get <strong>20% off</strong>exam registration",
  "incentiveOfferTextPrivate": "Use code <strong>MUCHDISCOUNT</strong> for 20% off exam registration"
}

CertificationExamURL

Description

URL to the exam registration page for a certification with its locale (deprecated)

Fields
Field Name Description
url - URL! URL to the exam registration page for a certification
locale - Locale! Locale this exam Is administered in
Example
{"url": "https://www.cncf.io/training/certification/cka/", "locale": "en"}

CodeBlock

Description

A micro-content representing a code block

Fields
Field Name Description
language - String! The language of the code
code - String! The code value
Example
{"language": "java", "code": "System.out.println(msg);"}

CodingExercise

Description

Coding exercise for students to practice their programming

Fields
Field Name Description
id - ID! The Id of the coding exercise
title - String! The title of the coding exercise
description - String Problem statement
urlLanding - URL! Landing page to view this CodingExercise
versionedIdentifier - VersionedIdentifier! Versioned identifier of the coding exercise
course - Course Course this coding exercise belongs to
Example
{
  "id": "4",
  "title": "Coding Exercise: Create a Lambda Function",
  "description": "<p>Let's create a Lambda function from scratch. We'll use the AWS console to create a Lambda function that will be triggered by an S3 event.</p>",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

CodingExerciseRecommendation

Description

A wrapper type to include the recommended Coding Exercise and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
codingExercise - CodingExercise Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "codingExercise": CodingExercise
}

ContentCollection

Description

Type representing a group of content for a subscription plan

Fields
Field Name Description
id - ID! ID of the Content Collection
Example
{"id": "4"}

Course

Description

The Course object

Fields
Field Name Description
id - ID! ID of the course
title - String! Title of the course
headline - String Headline to show under the title
description - SafeHtml Description of the course
badges - [LearningProductBadge!]! Badges awarded to the course
curriculum - Curriculum! Course's curriculum
prerequisites - [String!]! Prerequisites for taking the course
targetAudience - [String!]! Who should attend the course
learningOutcomes - [String!]! What you will learn in this course
duration - CourseDuration Total duration of the course's content
durationVideoContent - DurationInSeconds Total duration of video content only in seconds
durationInSeconds - DurationInSeconds Total duration of the course's content in seconds
private - Boolean Whether the course is publicly available or not
organization - Organization The UB organization this course belongs to, only visible if you are part of that organization
organizationInfo - CourseOrganizationInfo Organization specific course properties, only visible if you are part of that organization
images - CourseImages! Images by their dimensions
instructors - [CourseInstructor!]! Instructors of the Course
categories - [CourseCategory!]! Categories the course is part of
enrollments - CourseEnrollments! Learners enrolled in a course
enrollable - Boolean! Whether a learner can enroll in a course or not
isEnrolled - Boolean! Whether the course is enrolled by the current user or not
isFree - Boolean! Whether the course is a free course or not
rating - CourseRating! How do students rate the course
level - DifficultyLevel Instruction level of the course
urlAutoEnroll - URL The URL to access the auto-enroll page
urlCourseLanding - URL The URL to access the course landing page
urlCourseTaking - URL The URL to access the course taking page
locale - Locale! Course locale e.g. en-US or en-GB
updatedOn - Date When the course was last updated
topics - [Topic!] Topics course is tagged with
primaryTopic - Topic Primary topic course is tagged with
xapiActivityId - ID! Activity ID of xAPI statement to identify course
accreditations - [CourseAccreditation!] Accreditations a course has
captions - [CourseCaptionDetails!] Caption and subtitles the course has
urlMobileNativeDeeplink - URL! Mobile Native deep link of the course
promoVideo - CoursePromoVideo Promotional video for the course. Clients need to renew it if URL expires by querying it again
versionedIdentifier - VersionedIdentifier! Versioned identifier of the course
subscriptionInfo - CourseSubscriptionInfo Subscription specific course properties
isPracticeTestCourse - Boolean! Indicates if Course is a practice test only, made to prepare for a certification exam
Example
{
  "id": 4,
  "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
  "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
  "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
  "badges": [LearningProductBadge],
  "curriculum": Curriculum,
  "prerequisites": ["Mathematics", "Programming"],
  "targetAudience": ["Developers", "Students"],
  "learningOutcomes": ["xyz789"],
  "duration": "5h 21m 3s",
  "durationVideoContent": 19263,
  "durationInSeconds": 19263,
  "private": true,
  "organization": Organization,
  "organizationInfo": CourseOrganizationInfo,
  "images": CourseImages,
  "instructors": [CourseInstructor],
  "categories": [CourseCategory],
  "enrollments": CourseEnrollments,
  "enrollable": false,
  "isEnrolled": false,
  "isFree": true,
  "rating": CourseRating,
  "level": "ALL_LEVELS",
  "urlAutoEnroll": "https://www.udemy.com/",
  "urlCourseLanding": "https://www.udemy.com/",
  "urlCourseTaking": "https://www.udemy.com/",
  "locale": "en_US",
  "updatedOn": "2007-12-03",
  "topics": [Topic],
  "primaryTopic": Topic,
  "xapiActivityId": 4,
  "accreditations": [CourseAccreditation],
  "captions": [CourseCaptionDetails],
  "urlMobileNativeDeeplink": "https://www.udemy.com/",
  "promoVideo": CoursePromoVideo,
  "versionedIdentifier": VersionedIdentifier,
  "subscriptionInfo": CourseSubscriptionInfo,
  "isPracticeTestCourse": true
}

CourseAccreditation

Description

Accreditations

Fields
Field Name Description
type - CourseAccreditationType! The type of accreditation
subject - String Technical subject area
compliantSince - Date Start date of accreditation
level - String The level of the accreditation
creditCount - NonNegativeFloat! The amount of credits this accreditations supplies
Example
{
  "type": "CPE",
  "subject": "Data Science",
  "compliantSince": "2007-12-03",
  "level": "Beginner",
  "creditCount": 123.45
}

CourseAiHighlights

Description

AI generated highlights for a course

Fields
Field Name Description
summary - String! AI generated summary of the course
learningOutcomes - [String!]! Skills or learning outcomes for the course
Example
{
  "summary": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
  "learningOutcomes": [
    "All 300+ slides available as downloadable PDF",
    "Full Practice Exam with Explanations included!",
    "Learn the AWS Fundamentals (EC2, ELB, ASG, RDS, ElastiCache, S3)"
  ]
}

CourseCaptionDetails

Description

Course caption details such as locale, type, and source

Fields
Field Name Description
locale - Locale! The caption's locale
automaticallyGenerated - Boolean! Whether the caption is automatically generated
type - CaptionType! The caption type, either subtitles or closed captions
Example
{
  "locale": "en_US",
  "automaticallyGenerated": false,
  "type": "SUBTITLE"
}

CourseCatalogFullResponsePaged

Description

A catalog of all courses available to the client

Fields
Field Name Description
courses - [Course!]! List of courses in the catalog
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "courses": [Course],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
}

CourseCatalogUpdatedResponsePaged

Description

Changes to catalog of all courses available to the client

Fields
Field Name Description
addedCourses - [Course!]! Courses added since last sync
updatedCourses - [Course!]! Courses updated since last sync
removedCourses - [ID!]! Course IDs for courses removed since last sync
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "addedCourses": [Course],
  "updatedCourses": [Course],
  "removedCourses": [4],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
}

CourseCategory

Description

Category the Course belongs to

Fields
Field Name Description
id - ID! ID of the category
name - String! Name of the category
url - URL! The URL to the category page this course is a part of
subcategories - [CourseSubCategory!]! Subcategories belonging to the category
Example
{
  "id": 4,
  "name": "IT Operations",
  "url": "https://learning.udemy.com/courses/ufb-it-operations",
  "subcategories": [CourseSubCategory]
}

CourseCurriculumContentCounts

Description

Count of the course curriculum content by type

Fields
Field Name Description
lecturesCount - Int! Count of all lectures in the course curriculum
quizzesCount - Int! Count of all quizzes in the course curriculum
codingExercisesCount - Int! Count of all coding exercises in the course curriculum
practiceAssignmentsCount - Int! Count of all practice assignments in the course curriculum
practiceTestsCount - Int! Count of all practice tests in the course curriculum
practiceTestQuestionsCount - Int! Count of all questions in the PracticeTests in the course curriculum
Example
{
  "lecturesCount": 123,
  "quizzesCount": 123,
  "codingExercisesCount": 987,
  "practiceAssignmentsCount": 123,
  "practiceTestsCount": 987,
  "practiceTestQuestionsCount": 123
}

CourseEnrollments

Description

Enrollments belonging to the course

Fields
Field Name Description
count - Int Exact count of how many students are there currently enrolled (course purchase and subscription). Requires token scope 'udemy:application' to access
roundedCount - Int! Count of how many students are currently enrolled (course purchase and subscription) rounded to the nearest decimal Exception: if there are fewer than 10 enrollments we show the exact amount (instead of 0)
Example
{"count": 123, "roundedCount": 987}

CourseImages

Description

Course images by varying dimensions

Fields
Field Name Description
px100x100 - String Course preview image with 100x100 dimensions in pixels
px240x135 - String Course preview image with 240x135 dimensions in pixels
px304x171 - String Course preview image with 304x171 dimensions in pixels
px480x270 - String Course preview image with 480x270 dimensions in pixels
px48x27 - String Course preview image with 48x27 dimensions in pixels
px50x50 - String Course preview image with 50x50 dimensions in pixels
px75x75 - String Course preview image with 75x75 dimensions in pixels
px96x54 - String Course preview image with 96x54 dimensions in pixels
px750x422 - String Course preview image with 750x422 dimensions in pixels
height125 - String Course preview image with 125 pixels height
height200 - String Course preview image with 200 pixels height
Example
{
  "px100x100": "https://img-c.udemycdn.com/course/100x100/11112134.jpg",
  "px240x135": "https://img-c.udemycdn.com/course/240x135/11112134.jpg",
  "px304x171": "https://img-c.udemycdn.com/course/304x171/11112134.jpg",
  "px480x270": "https://img-c.udemycdn.com/course/480x270/11112134.jpg",
  "px48x27": "https://img-c.udemycdn.com/course/48x27/11112134.jpg",
  "px50x50": "https://img-c.udemycdn.com/course/50x50/11112134.jpg",
  "px75x75": "https://img-c.udemycdn.com/course/75x75/11112134.jpg",
  "px96x54": "https://img-c.udemycdn.com/course/96x54/11112134.jpg",
  "px750x422": "https://img-c.udemycdn.com/course/750x422/11112134.jpg",
  "height125": "https://img-c.udemycdn.com/course/125_H/11112134.jpg",
  "height200": "https://img-c.udemycdn.com/course/200_H/11112134.jpg"
}

CourseInstructor

Description

Instructor for a course

Fields
Field Name Description
id - ID! ID of the Instructor
name - String! Instructor's name
url - URL The URL to access the instructor page
images - InstructorImages! Instructor's image by varying pixels
Example
{
  "id": "4",
  "name": "Stephane Maarek",
  "url": "https://www.udemy.com/user/stephane-maarek/",
  "images": InstructorImages
}

CourseOrganizationInfo

Description

Organization specific course properties

Fields
Field Name Description
isOrganizationSpecific - Boolean True if this course was created specifically for this organization
isMarketplaceImported - Boolean True if this course was purchased separately from the marketplace
retiresOn - Date If not null returns the Date this course will retire from organization's content collection
Example
{
  "isOrganizationSpecific": true,
  "isMarketplaceImported": false,
  "retiresOn": "2007-12-03"
}

CoursePromoVideo

Description

Object to store URL and expiration time for course's promo video

Fields
Field Name Description
url - URL! URL for a promo video asset in mp4 format
expiresOn - Timestamp Expiration time of the promo video URL. If null URL doesn't expire
Example
{
  "url": "https://mp4-c.udemycdn.com/2020-08-31_18-10-39-0ff314ead0e4f7f3519b8285af262046/1/original.mp4?Expires=1695960374&Signature=qOCfN840cCmL4GHBt8JU6DPE9B2sR9UpUsZC5HTVng~0l44cTdFm92v1~BhCRaDaLH4AjKBXelMYVqj4BczBPNNSV4Q2OTMJ4Q4QPhDByD16TAzyVFP2gSX40Rxlfqi1jc-Mnii3IMLLLSJlQGhpAKnHh~ZVx9JX2jFiH-k8ShJ1VQxciUxEbOO-VrrKrkapdF5P7MhEI2WMIZ817s~FN2~~1zBK3V-8L0cdBTVwDbxFC3n-WtF0eAT8ZJhPzJgXuF93uUrAnYGnnlCwU3u7mxkr900LbJDJ79nit8-MOmP0QCBRuou-2-8KCKqWhPwbh--JCYJLsE2L6NaAjdWmvw__&Key-Pair-Id=dev",
  "expiresOn": 1592577642
}

CourseRating

Description

Ratings of a course

Fields
Field Name Description
average - AverageRating Weighted average rating. Ranges from 0 to 5.0
count - Int! Number of ratings
Example
{"average": 4.5, "count": 123}

CourseRecommendation

Description

A wrapper type to include the recommended Course and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
course - Course Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "course": Course
}

CourseSearchResponse

Description

List of Courses and additional data about search response

Fields
Field Name Description
courses - [Course!]! List of Course objects Use results instead
results - [CourseSearchResult]! List of CourseSearchResult objects containing course and additional search related fields
count - Int! Total number of Courses matching the search query and filters
filterOptions - [SearchAggregation!]! Identifies available search filter facets
pageCount - Int! The total amount of pages in search response
page - Int! The current page number, 0 based
metadata - CourseSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "courses": [Course],
  "results": [CourseSearchResult],
  "count": 123,
  "filterOptions": [SearchAggregation],
  "pageCount": 987,
  "page": 123,
  "metadata": CourseSearchResponseMetadata
}

CourseSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
originalQuery - String! Original search query, without any manipulation
querySuggestion - SearchQuerySuggestion Search query suggestion containing the suggested query and the suggestion type
hasOrgCourses - Boolean! Whether there are available courses for organizations in the search result or not
associatedTopic - Topic Associated topic for the search response
certificationTopic - Topic Certification topic for the search response
experimentResults - [FeatureVariantAssignment!]! For the request, show experiment metadata results like bucketing info, experiment IDs of assigned feature variants
debug - JSON Debug information for the search response
Example
{
  "trackingId": "O9eKKCzdQim95RLDVXI3OA",
  "originalQuery": "pyt",
  "querySuggestion": SearchQuerySuggestion,
  "hasOrgCourses": true,
  "associatedTopic": Topic,
  "certificationTopic": Topic,
  "experimentResults": [FeatureVariantAssignment],
  "debug": "{\"key\":\"value\"}"
}

CourseSearchResult

Description

Represents a course search result with additional data about the search response

Fields
Field Name Description
course - Course! The course information returned in the search result
trackingId - String! Unique analytics ID for this instance of Course returned from the server in this request
curriculumItemMatches - [CurriculumItem]! Curriculum items that match with the search query
searchDebugFeatures - JSON Debugging information related to the search process for this course
Example
{
  "course": Course,
  "trackingId": "O9eKKCzdQim95RLDVXI3OA",
  "curriculumItemMatches": [CurriculumItem],
  "searchDebugFeatures": "{\"key\":\"value\"}"
}

CourseSection

Description

Section of the course containing all types of curriculum items

Fields
Field Name Description
id - ID! Identifier for the course section
title - String! Title of the section
description - String What will students be able to do at the end of this section?
items - [CurriculumItem!]! Content of the section
versionedIdentifier - VersionedIdentifier! Versioned identifier of the course section
course - Course Course this section belongs to
Example
{
  "id": 4,
  "title": "Introduction",
  "description": "<p><strong>Welcome to the AWS Certified Cloud Practitioner Course!</strong></p>",
  "items": [CurriculumItem],
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

CourseSectionRecommendation

Description

A wrapper type to include the recommended Course Section and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
courseSection - CourseSection Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "courseSection": CourseSection
}

CourseSubCategory

Description

SubCategory that is part of CourseCategory

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
url - URL! The URL to the subcategory page this course is a part of
Example
{
  "id": "4",
  "name": "IT Certifications",
  "url": "https://learning.udemy.com/courses/ufb-it-operations/ufb-it-certifications"
}

CourseSubscriptionInfo

Description

Subscription specific course properties

Fields
Field Name Description
inSubscriptions - [SubscriptionPlan!] Indicates which type of user's subscription course is included in
availableInSubscriptions - [SubscriptionPlan!] Indicates which types of subscription this course can be purchased in
Example
{
  "inSubscriptions": [SubscriptionPlan],
  "availableInSubscriptions": [SubscriptionPlan]
}

Curriculum

Description

Curriculum part of a course

Fields
Field Name Description
sections - [CourseSection!]! Each course section containing the course curriculum content
course - Course Course this curriculum belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the curriculum
contentCounts - CourseCurriculumContentCounts Count of the course curriculum content by type
Example
{
  "sections": [CourseSection],
  "course": Course,
  "versionedIdentifier": VersionedIdentifier,
  "contentCounts": CourseCurriculumContentCounts
}

DailySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for daily plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

DateInterval

Description

Type representing details about an interval of dates

Fields
Field Name Description
count - Int! The count of type in the interval
type - DateIntervalType! Type type of interval
Example
{"count": 123, "type": "DAY"}

DynamicWebContent

Description

The content of a component defined in the CMS

Fields
Field Name Description
contents - [DynamicWebContent] The associated sub content contained within this piece of content. This allows us to create a collection of nested web content
contentUrl - URL The URL to the associated content
contentUrlText - String The text for the URL to the piece of content
description - String The description text for the dynamic web content
heading - String The heading text for the dynamic web content
image - DynamicWebContentImage The text for the content label
labelText - String The image URL of the secondary image asset associated with this content, usually an icon, with optional alt text
secondaryImage - DynamicWebContentImage The image URL of the main image asset associated with this content, with optional alt text
trackingId - ID The tracking ID of the piece of content. To be used to uniquely identify the content in event tracking
Example
{
  "contents": [DynamicWebContent],
  "contentUrl": "https://www.udemy.com/",
  "contentUrlText": "Get the report",
  "description": "GenAI and leadership are at the core of today's skills-based economy. Get the 2024 Global Learning & Skills Trends Report to learn more.",
  "heading": "Top trends for the future of work",
  "image": DynamicWebContentImage,
  "labelText": "Current",
  "secondaryImage": DynamicWebContentImage,
  "trackingId": "4"
}

DynamicWebContentImage

Description

The dynamic web image object. This combines the image URL and the alt text for the image for a11y purposes

Fields
Field Name Description
altText - String The alt text of the image for a11y purposes
url - URL The URL to the image asset
Example
{
  "altText": "VW logo",
  "url": "https://www.udemy.com/"
}

EBookLecture

Description

Lecture in form of an EBook (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

Entity

Description

Represents the entity who was affected by the event

Fields
Field Name Description
entityId - ID! The unique identifier for the entity
entityType - EntityType! The type of entity, such as an end user, group, or license
Example
{"entityId": "4", "entityType": "NA"}

ExternalLecture

Description

Lecture that refers to an external source (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

FeatureVariantAssignment

Description

Holds assigned feature variant

Fields
Field Name Description
featureCode - String! Feature code of assigned feature variant
configuration - JSON Configuration data of assigned feature variant
isInExperiment - Boolean Shows whether this feature variant is in experiment
experimentIds - [Int!]! List of experiment ids bucketed for current feature
isLocalDefault - Boolean! Indicates whether the presentation on the frontend is the actual response of the Experimentation Platform or not
Example
{
  "featureCode": "ab-testing",
  "configuration": "{\"key\":\"value\"}",
  "isInExperiment": false,
  "experimentIds": [987],
  "isLocalDefault": true
}

FileLecture

Description

Lecture in the form of a single file (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

HotAndNewBadge

Description

Represents a badge awarded to a hot and new learning product

Fields
Field Name Description
name - String! The localized name of the badge
Example
{"name": "Hot & New"}

InstructorImages

Description

Instructor images by varying dimensions

Fields
Field Name Description
px50x50 - String Instructor image with 50x50 dimensions in pixels
Example
{"px50x50": "https://img-c.udemycdn.com/user/50x50/11112134_64e1_2.jpg"}

InstructorRecommendation

Description

A wrapper type to include the recommended Instructor and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
instructor - CourseInstructor Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "instructor": CourseInstructor
}

Lab

Description

The Lab object

Fields
Field Name Description
id - ID! ID of the Lab
title - String! Title of the Lab
description - SafeHtml Top level description of the Lab
learningOutcomes - [String!]! Bulleted list of things a person will learn in this Lab
activities - [String!]! Bulleted list of things a person will accomplish in this Lab
prerequisites - [String!]! Bulleted list of things a person should already know in order to do this Lab
minEstimatedTime - DurationInSeconds! Lower bound of estimated time (in seconds) to complete Lab
maxEstimatedTime - DurationInSeconds! Upper bound of estimated time (in seconds) to complete Lab
instructors - [LabInstructor!]! The Lab's Instructors
topics - [Topic!] The Lab's topics
urlLanding - URL! The Lab's landing URL
metadata - LabMetaData Metadata associated with the lab
durationInSeconds - DurationInSeconds Average duration of lab in seconds
Example
{
  "id": "4",
  "title": "Lab 1: Create a VPC",
  "description": "<p>Learn how to create a VPC</p>",
  "learningOutcomes": ["VPC is created"],
  "activities": ["Create a VPC"],
  "prerequisites": ["AWS Account"],
  "minEstimatedTime": 19263,
  "maxEstimatedTime": 19263,
  "instructors": [LabInstructor],
  "topics": [Topic],
  "urlLanding": "https://www.udemy.com/",
  "metadata": LabMetaData,
  "durationInSeconds": 19263
}

LabInstructor

Description

Instructor for a lab

Fields
Field Name Description
id - ID! ID of the Instructor
name - String! Instructor's name
url - URL The URL to access the instructor page
images - InstructorImages! Instructor's image by varying pixels
Example
{
  "id": "4",
  "name": "Stephane Maarek",
  "url": "https://www.udemy.com/user/stephane-maarek/",
  "images": InstructorImages
}

LabMetaData

Description

MetaData for a lab

Fields
Field Name Description
trackingId - String Unique analytics ID for this instance of Lab returned from the server in this request
Example
{"trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ"}

LabRecommendation

Description

A wrapper type to include the recommended Lab and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
lab - Lab Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "lab": Lab
}

LabSearchResponse

Description

List of Labs and additional data about search response

Fields
Field Name Description
labs - [Lab!]! List of Lab objects
count - Int! Total number of Labs matching the search query and filters
filterOptions - [SearchAggregation!]! Identifies available search filter facets
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{
  "labs": [Lab],
  "count": 123,
  "filterOptions": [SearchAggregation],
  "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ"
}

LearningPathCatalogFullResponsePaged

Description

Catalog of all learning paths available to the client

Fields
Field Name Description
learningPaths - [LearningPath]! List of courses in the catalog
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "learningPaths": [LearningPath],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
}

LearningPathCatalogUpdatedResponsePaged

Description

Changes to catalog of all learning paths available to the client since last sync

Fields
Field Name Description
addedLearningPaths - [LearningPath]! Learning Paths added since last sync
updatedLearningPaths - [LearningPath]! Learning Paths updated since last sync
removedLearningPaths - [ID!]! Learning Path IDs for courses removed since last sync
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "addedLearningPaths": [LearningPath],
  "updatedLearningPaths": [LearningPath],
  "removedLearningPaths": [4],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
}

LearningPathCoursePortion

Description

Collection of curriculum items presented in a learning path as a one item

Fields
Field Name Description
id - ID! ID of the course portion
title - String! Title of the course portion
description - SafeHtml Description of the course portion
durationInSeconds - DurationInSeconds The duration of the course portion
items - [CurriculumItem] Items in the course portion
Example
{
  "id": 4,
  "title": "LLM Fine Tuning on OpenAI",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "items": [CurriculumItem]
}

LearningPathRecommendation

Description

A wrapper type to include the recommended Learning Path and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
learningPath - LearningPath Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "learningPath": LearningPath
}

LearningPathResource

Description

Learning Path Resource represents a link to another resource

Fields
Field Name Description
id - ID! ID of the learning path resource
title - String! Title of the learning path resource
description - SafeHtml Description of the learning path resource
durationInSeconds - DurationInSeconds The duration of the learning path resource
urlLanding - URL! Landing URL for the learning path resource
Example
{
  "id": 4,
  "title": "COURSE FAQs and DOWNLOADS HERE",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "urlLanding": "https://www.udemy.com/"
}

LearningPathSearchResponse

Description

List of LearningPath and additional data about search response

Fields
Field Name Description
paths - [ProLearningPath!]! Found learning for search request
count - Int! Total number of Paths matching the search query and filters
metadata - PathSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "paths": [ProLearningPath],
  "count": 123,
  "metadata": PathSearchResponseMetadata
}

LearningPathSection

Description

Learning Path Section represents a collection of items in a learning path

Fields
Field Name Description
id - ID! ID of the section
title - String! Title of the section
description - SafeHtml Description of the section
durationInSeconds - DurationInSeconds The duration of the section
itemCount - Int! Number of items in the section
items - [LearningPathItem] Items in the section
Example
{
  "id": 4,
  "title": "Improving LLM Performance",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "itemCount": 987,
  "items": [LearningPathItem]
}

LearningProductsPaged

Description

A collection of learning products for a partner

Fields
Field Name Description
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page size)
items - [LearningProduct!]! The contents of the collection, currently just courses. Items may be less than requested size if objects become unavailable
Example
{
  "page": 123,
  "pageCount": 123,
  "items": [LearningProduct]
}

LearningTestimonial

Description

The testimonial given relevant to a learning item or event

Fields
Field Name Description
content - String! The localized content of the Learning Testimonial
id - ID! The ID of the Learning Testimonial
relatedUrl - URL! The URL related to the Learning Testimonial
relatedUrlText - String! The localized text for the URL related to the Learning Testimonial
source - LearningTestimonialSource! The source of the Learning Testimonial
type - LearningTestimonialType! The type of Learning Testimonial
Example
{
  "content": "<p>Udemy was rated the most popular online course or certification program for learning how to code according to StackOverflow&rsquo;s 2023 Developer survey. </p>",
  "id": 4,
  "relatedUrl": "https://www.udemy.com/",
  "relatedUrlText": "<p><b>View Web Development courses</b></p>",
  "source": LearningTestimonialSource,
  "type": "CASE_STUDY"
}

LearningTestimonialSource

Description

The source of the learning testimonial

Fields
Field Name Description
image - URL! The URL to the image asset of the source for the Learning Testimonial
description - String Description text of the source for the Learning Testimonial (e.g., job title for Course Review types, etc)
name - String! Name of the source for the Learning Testimonial
Example
{
  "image": "https://www.udemy.com/",
  "description": "<p>Stack<b>Overflow</b></p>",
  "name": "Stack Overflow"
}

LectureImages

Description

Lecture images by varying dimensions

Fields
Field Name Description
height50 - String Lecture preview image with 50 pixels height
height75 - String Lecture preview image with 75 pixels height
height100 - String Lecture preview image with 100 pixels height
height320 - String Lecture preview image with 320 pixels height
height480 - String Lecture preview image with 480 pixels height
Example
{
  "height50": "https://img-c.udemycdn.com/lecture/50_H/32955996_03ea_2.jpg",
  "height75": "https://img-c.udemycdn.com/lecture/75_H/32955996_03ea_2.jpg",
  "height100": "https://img-c.udemycdn.com/lecture/100_H/32955996_03ea_2.jpg",
  "height320": "https://img-c.udemycdn.com/lecture/320_H/32955996_03ea_2.jpg",
  "height480": "https://img-c.udemycdn.com/lecture/480_H/32955996_03ea_2.jpg"
}

LectureRecommendation

Description

A wrapper type to include the recommended Lecture and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
lecture - Lecture Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "lecture": Lecture
}

LectureSearchResponse

Description

List of LectureResults and additional data about search response

Fields
Field Name Description
results - [LectureSearchResult]! List of LectureResult objects. The main search result is found in this list. This result is made nullable as a catch point for any errors that may occur downstream
metadata - LectureSearchResponseMetadata Metadata for whole search result used by front end
experimentResults - [FeatureVariantAssignment!]! For the request, shows experiment metadata result like bucking info, experiment IDs of assigned feature variants
Example
{
  "results": [LectureSearchResult],
  "metadata": LectureSearchResponseMetadata,
  "experimentResults": [FeatureVariantAssignment]
}

LectureSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
lectureExperimentVariant - String! Experiment variant for the lecture unit
lectureUnitOrder - Int! Order of the lecture unit at the search result page. The value is calculated according to query intent evaluation
labUnitOrder - Int! Order of the lab unit at the search result page. The value is calculated according to query intent evaluation
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{
  "lectureExperimentVariant": "control",
  "lectureUnitOrder": "3",
  "labUnitOrder": "6",
  "trackingId": "p55X_jHUQ7yNmI0HQ4TmgA"
}

LectureSearchResult

Description

Identifies each result for lecture search

Fields
Field Name Description
lecture - Lecture! Found lecture for lecture search request
course - Course! Containing course of the found lecture
trackingId - String Unique analytics ID for the found lecture
Example
{
  "lecture": Lecture,
  "course": Course,
  "trackingId": "p55X_jHUQ7yNmI0HQ4TmgA"
}

Lesson

Description

A lesson associated with a learning product

Fields
Field Name Description
id - LessonId! The id of the lesson
version - String! The version of the lesson
entityTag - Int! The entity tag for optimistic locking, to be provided, as read, when updating
locale - Locale! The lesson's original locale
created - DateTime The creation timestamp
updated - DateTime The last update timestamp
article - LessonArticle The lesson article whose fragments are mapped within the playable media
Example
{
  "id": {"idType": "ASSET_ID", "idValue": "12392384"},
  "version": "@1746636635859356",
  "entityTag": 4,
  "locale": "en-US",
  "created": "2007-12-03T10:15:30Z",
  "updated": "2007-12-03T10:15:30Z",
  "article": {
    "uuid": "a210e247-a33c-478c-82a6-1244cf695de1",
    "title": "Intro to Containers",
    "description": "This article explains what containers are",
    "locale": "en-US",
    "source": "AI",
    "takeaways": {
      "content": "- Containers are lightweight\n- Great for microservices"
    },
    "fragments": [
      {
        "timestamp": 10,
        "content": {
          "__typename": "Markdown",
          "content": "This part explains Docker basics."
        }
      },
      {
        "timestamp": 30,
        "content": {
          "__typename": "Markdown",
          "content": "Now let's dive into layers and images."
        }
      },
      {
        "timestamp": 60,
        "content": {
          "__typename": "CodeBlock",
          "language": "rust",
          "code": "hello.world()"
        }
      }
    ]
  }
}

LessonArticle

Description

A rich article whose fragments can map to timestamps within the playable media

Fields
Field Name Description
uuid - UUID! A uuid uniquely identifying an article
title - String! The title of the article
description - String! A description for the article
locale - Locale! The article's locale. Supports translation
takeaways - Markdown The key takeaways of an article in markdown format
fragments - [LessonArticleFragment!]! The article's fragments
source - ContentSourceType! The source of the article
Example
{
  "uuid": "a210e247-a33c-478c-82a6-1244cf695de1",
  "title": "some title",
  "description": "some description",
  "locale": "en-US",
  "takeaways": Markdown,
  "fragments": [LessonArticleFragment],
  "source": "AI"
}

LessonArticleFragment

Description

A fragment of an article with possible mapping to the lesson's playable media

Fields
Field Name Description
timestamp - OffsetInSeconds The offset in seconds within the playable media this fragment corresponds to
content - LessonArticleFragmentContent! The polymorphic content of the fragment
Example
{
  "timestamp": OffsetInSeconds,
  "content": Markdown
}

LessonId

Description

A flexible identification for a lesson

Fields
Field Name Description
idType - LessonIdType! The type of the id
idValue - ID! The id value
Example
{"idType": "ASSET_ID", "idValue": 4}

Markdown

Description

A micro-content representing markdown

Fields
Field Name Description
content - String! The markdown value
Example
{"content": "#section head\nsome paragraph"}

MetadataEntry

Description

Represents a key-value pair in metadata

Fields
Field Name Description
key - String! The key for the metadata entry, describing the type of information (e.g., 'ROLE')
value - String! The value for the metadata entry, containing the actual data associated with the key
Example
{"key": "actorEmail", "value": "awesomeActor@udemy.com"}

Money

Description

Money

Fields
Field Name Description
amount - Decimal Amount
currency - CurrencyCode Currency
Example
{"amount": "1234.5678", "currency": "AUD"}

MonthlySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for monthly plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

MoreRecommendationContextSectionsResponse

Description

Response returned when more RecommendationContextSections are queried for a RecommendationContext

Fields
Field Name Description
sections - [RecommendationContextSection!]! A slice of RecommendationContextSections available in a RecommendationContext. Slice boundaries are determined by the cursor and count parameters in the query
sectionsCursor - String Cursor to get more RecommendationContextSections from the RecommendationContext. Null, if there is no more
Example
{
  "sections": [RecommendationContextSection],
  "sectionsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

MoreRecommendationItemsResponse

Description

Response returned when more RecommendationItems are queried for a RecommendationUnit

Fields
Field Name Description
items - [RecommendationItem!]! A slice of RecommendationItems available in a RecommendationUnit. Slice boundaries are determined by the cursor and count parameters in the query
itemsCursor - String Cursor to get more RecommendationItems from this RecommendationUnit. Null, if there is no more
Example
{
  "items": [RecommendationItem],
  "itemsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

NewBadge

Description

Represents a badge awarded to a new learning product

Fields
Field Name Description
name - String! The localized name of the badge
Example
{"name": "New"}

OccupationRecommendation

Description

A wrapper type to include the recommended Occupation and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
Example
{"id": 4, "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj"}

OpenBadgeClass

Description

The OpenBadgeClass object. This implements the BadgeClass

Fields
Field Name Description
id - ID! ID of the BadgeClass
externalUrl - URL! IRI of the BadgeClass. IRI of OpenBadge specification
type - [String!]! Type of the BadgeClass. In most cases, this will simply be the string BadgeClass
name - String! Name of the BadgeClass
description - String! A short description of BadgeClass
image - BadgeClassImage! A PNG or SVG image of the BadgeClass
criteria - BadgeClassCriteria! Criteria document describing how to earn the BadgeClass (Certification)
issuer - BadgeClassIssuer! Organization that issued the badge
alignment - [BadgeClassAlignment!] An object describing which objectives or educational standards this badge aligns to, if any
tags - [String!]! A tag that describes the type of achievement. (Skills)
topic - Topic Topic of badge class. Can be null for badge classes uploaded by users
assertions - [BadgeAssertion!]! User's assertions for the badge class
subjectAreas - [BadgeCertificationSubjectArea!] Subject Area (recently renamed to Skill Area) for this BadgeClass (i.e. Data Science, CyberSecurity)
providers - [BadgeCertificationProvider!] Certification Provider for this Badge Class
examRegistrationUrls - [CertificationExamURL!]! Links to exam registration page for this certification (deprecated)
certificationExam - CertificationExam Exam registration details, if an exam is required for earning this Badge
totalAssertionsCount - Int! Total number of assertions issued for this badge class
isEnrolled - Boolean! Whether the current user is enrolled
Example
{
  "id": "4",
  "externalUrl": "https://www.udemy.com/",
  "type": ["CERTIFICATION"],
  "name": "CCIE Lifetime Emeritus - Data Center",
  "description": "Lifetime Emeritus status signifies that a member maintains an active status as a CCIE or as a CCIE Emeritus for 20 consecutive years in at least one CCIE track.",
  "image": BadgeClassImage,
  "criteria": BadgeClassCriteria,
  "issuer": BadgeClassIssuer,
  "alignment": [BadgeClassAlignment],
  "tags": ["CCIE", "Data Center"],
  "topic": Topic,
  "assertions": [BadgeAssertion],
  "subjectAreas": [BadgeCertificationSubjectArea],
  "providers": [BadgeCertificationProvider],
  "examRegistrationUrls": [CertificationExamURL],
  "certificationExam": CertificationExam,
  "totalAssertionsCount": 987,
  "isEnrolled": true
}

Organization

Description

A UB organization

Fields
Field Name Description
id - ID! The UB organization's unique identifier
images - OrganizationImages! Images for an organization
type - OrganizationType! Organization type
Example
{
  "id": "4",
  "images": OrganizationImages,
  "type": "UDEMY_BUSINESS"
}

OrganizationAuditLog

Description

Represents an audit log entry for an organization

Fields
Field Name Description
orgId - ID! The unique identifier for the organization associated with the audit log
timestamp - DateTime! The timestamp for when the event occurred
actor - Actor! The actor who performed the action logged in this entry
entity - Entity The entity who was affected by the action logged in this entry. This is optional as some events may not have a directly associated entity
event - AuditEvent! The event that occurred (e.g., 'USER_CREATED')
metadata - [MetadataEntry!]! Additional metadata associated with the event, as a list of key-value pairs
Example
{
  "orgId": 4,
  "timestamp": "2007-12-03T10:15:30Z",
  "actor": Actor,
  "entity": Entity,
  "event": "USER_CREATED",
  "metadata": [MetadataEntry]
}

OrganizationBackgroundImages

Description

Background images for an organization

Fields
Field Name Description
px960x540 - URL Background image size 960x540
px1920x1080 - URL Background image size 1920x1080
Example
{
  "px960x540": "https://www.udemy.com/",
  "px1920x1080": "https://www.udemy.com/"
}

OrganizationFaviconImages

Description

Favicon images for an organization

Fields
Field Name Description
px16x16 - URL Favicon image size 16x16
px32x32 - URL Favicon image size 32x32
Example
{
  "px16x16": "https://www.udemy.com/",
  "px32x32": "https://www.udemy.com/"
}

OrganizationImages

Description

Images for an organization

Fields
Field Name Description
background - OrganizationBackgroundImages Background images for an organization
logo - OrganizationLogoImages Logo images for an organization
favicon - OrganizationFaviconImages Favicon images for an organization
Example
{
  "background": OrganizationBackgroundImages,
  "logo": OrganizationLogoImages,
  "favicon": OrganizationFaviconImages
}

OrganizationLearningPath

Description

Learning Path object that belongs to an organization

Fields
Field Name Description
id - ID! ID of the learning path
title - String! Title of the learning path
description - SafeHtml Description of the learning path
itemCount - Int! Number of items in the learning path
numberOfEnrollments - Int! Total No of enrollments for the learning path
isEnrolled - Boolean! Is the user enrolled in this learning path or not
topics - [Topic!] Topics associated with the learning path
badges - [BadgeClass!] Badges of the learning path
urlLanding - URL! Landing page to view this LearningPath
trackingId - String Unique analytics ID for this instance of LearningPath returned from the server in this request
organization - Organization! Organization that owns the learning path
durationInSeconds - DurationInSeconds! The duration of the learning path
urlAutoEnroll - URL The URL to enroll in the learning path
sectionCount - Int! Number of sections in the learning path
sections - [LearningPathSection!] Sections of the learning path
Example
{
  "id": "4",
  "title": "Improving LLM Performance",
  "description": SafeHtml,
  "itemCount": 123,
  "numberOfEnrollments": 123,
  "isEnrolled": true,
  "topics": [Topic],
  "badges": [BadgeClass],
  "urlLanding": "https://www.udemy.com/",
  "trackingId": "nTjSznw2SbGLuE-Cd3T2Eg",
  "organization": Organization,
  "durationInSeconds": 19263,
  "urlAutoEnroll": "https://www.udemy.com/",
  "sectionCount": 123,
  "sections": [LearningPathSection]
}

OrganizationLogoImages

Description

Logo images for an organization

Fields
Field Name Description
width35 - URL Logo image W_35
width70 - URL Logo image W_70
Example
{
  "width35": "https://www.udemy.com/",
  "width70": "https://www.udemy.com/"
}

PathSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
experimentResults - [FeatureVariantAssignment!]! For the request, shows experiment metadata result like bucking info, experiment IDs of assigned feature variants
Example
{
  "trackingId": "JjBqqc4LS2K9Ht_1LTpaMg",
  "experimentResults": [FeatureVariantAssignment]
}

PopularTopic

Description

Popular topic

Fields
Field Name Description
topic - Topic! A topic
subcategory - PopularTopicSubCategory Associated Subcategory
popularityType - TopicPopularityTypes The type of popularity associated with this topic
Example
{
  "topic": Topic,
  "subcategory": PopularTopicSubCategory,
  "popularityType": "POPULAR"
}

PopularTopicSubCategory

Description

Topic SubCategory

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
Example
{"id": "4", "name": "Data Science"}

PracticeAssignment

Description

Assigment test with multiple-choice and free-from questions reviewed by instructors

Fields
Field Name Description
id - ID! The Id of the assignment
title - String! The title of the assignment
description - String! Description of the assignment
urlLanding - URL! Landing page to view this PracticeAssignment
versionedIdentifier - VersionedIdentifier! Versioned identifier of the practice assignment
course - Course Course this practice assignment belongs to
Example
{
  "id": 4,
  "title": "Practice Assignment 1",
  "description": "Practice Assignment 1. AWS Certified Solutions Architect Associate",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

PracticeTest

Description

Practice test that is more detailed than a Quiz

Fields
Field Name Description
id - ID! The Id of the practice test
title - String! The title of the practice test
minimumPassingScore - Int! Percentage required to pass (0 - 100)
randomized - Boolean! Whether the question and answer order is randomized
urlLanding - URL! Landing page to view this PracticeTest
versionedIdentifier - VersionedIdentifier! Versioned identifier of the practice test
course - Course Course this practice test belongs to
Example
{
  "id": "4",
  "title": "Practice Test 1. AWS Certified Solutions Architect Associate",
  "minimumPassingScore": 987,
  "randomized": true,
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

PresentationLecture

Description

Presentation Lecture for Udemy Business

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

ProLearningPath

Description

The LearningPath only available for PRO subscriptions

Fields
Field Name Description
id - ID! ID of the learning path
title - String! Title of the learning path
description - SafeHtml Description of the learning path
itemCount - Int! Number of items in the learning path
numberOfEnrollments - Int! Total No of enrollments for the learning path
isEnrolled - Boolean! Is the user enrolled in this learning path or not
topics - [Topic!] Topics associated with the learning path
badges - [BadgeClass!] Badges of the learning path
urlLanding - URL! Landing page to view this LearningPath
trackingId - String Unique analytics ID for this instance of LearningPath returned from the server in this request
durationInSeconds - DurationInSeconds! The duration of the learning path
urlAutoEnroll - URL The URL to enroll in the learning path
sectionCount - Int! Number of sections in the learning path
sections - [LearningPathSection!] Sections of the learning path
Example
{
  "id": 4,
  "title": "AWS Certified Solutions Architect Associate Learning Path",
  "description": "Path to AWS Certified Solutions Architect Associate",
  "itemCount": 123,
  "numberOfEnrollments": 987,
  "isEnrolled": false,
  "topics": [Topic],
  "badges": [BadgeClass],
  "urlLanding": "https://www.udemy.com/",
  "trackingId": "nTjSznw2SbGLuE-Cd3T2Eg",
  "durationInSeconds": 19263,
  "urlAutoEnroll": "https://www.udemy.com/",
  "sectionCount": 987,
  "sections": [LearningPathSection]
}

Quiz

Description

Quiz with simple questions and multiple choice answers

Fields
Field Name Description
id - ID! The Id of the quiz
title - String! The title of the quiz
description - String An optional description
urlLanding - URL! Landing page to view this Quiz
versionedIdentifier - VersionedIdentifier! Versioned identifier of the quiz
course - Course Course this quiz belongs to
Example
{
  "id": "4",
  "title": "Quiz 1. AWS Certified Solutions Architect Associate",
  "description": "Timed quiz for AWS Certified Solutions Architect Associate",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

RecommendationContext

Description

This is a top level grouping comprising all recommendations queried by a context code (ID of this object).

Usually, this corresponds to the entire page of the application. In that case, there would be just one recommendation context on a single page. The biggest advantage of serving all recommendations in one response, is the ability to run unit ranking and deduplication comprehensively for the entire recommendation context.

Even though, it is common to see a single page of the application uses only one recommendation context, it is not an obligation. The 'page' and 'context' concepts are decoupled. Having multiple contexts on a page might be acceptable if the trade-offs about compromising comprehensive ranking and deduplication are evaluated.

RecommendationContext doesn't directly contain a list of RecommendationItems. Instead, it has a list of sections. The UI should follow this grouping while rendering the recommendations

Fields
Field Name Description
id - ID! Also known as 'Context Code'
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation context is served
sections - [RecommendationContextSection!]! First slice of RecommendationContextSections available in this RecommendationContext. The field 'sectionsCursor' is used to fetch a new slice of sections starting with the next section after this slice
sectionsCursor - String Cursor to get more RecommendationContextSections from the RecommendationContext. Null, if there is no more
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "sections": [RecommendationContextSection],
  "sectionsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

RecommendationContextResponse

Description

Response returned when a RecommendationContext is queried

Fields
Field Name Description
recommendationContext - RecommendationContext! The actual recommendation context object
Example
{"recommendationContext": RecommendationContext}

RecommendationSourceObject

Description

A type to specify what objects were used as a source object (seed) for a recommendation unit

Fields
Field Name Description
id - ID! ID of the actual item. For example, the ID of a course
type - RecommendationSourceObjectType! Type of the actual item. For example, COURSE
title - String Title of the actual source object item, if applicable. E.g. title of a course
description - String Description of the actual item, if applicable. E.g. description of a course
relativeUrl - String Relative URL of the actual item, if applicable. It excludes the domain. E.g. /topic/web-development/
Example
{
  "id": 4,
  "type": "COURSE",
  "title": "Python",
  "description": "Python Topic Description",
  "relativeUrl": "/topic/python/"
}

RecommendationUnit

Description

Finest grained grouping of recommendations. Each recommendation unit corresponds to a specific algorithm, source object (recommendation seed), and recommendation item type

Fields
Field Name Description
id - ID!

ID of the RecommendationUnit object that will be unique among all units inside a recommendation context including the member units of unit groups.

In addition, this ID will be unique for all units in the initial 'recommendations' query response and the subsequent 'moreRecommendationContextSections' queries

title - String Localized title that is also interpolated with source object titles if necessary. For example, "Newest courses in 'JavaScript'"
rawTitle - String Some unit titles contain titles of source objects like "Newest courses in 'JavaScript'". If frontend needs to insert source object links instead of just source object titles, this field can be used instead of the title field. It will give "Newest courses in '{}'" instead of "Newest courses in 'JavaScript'"
viewType - String Can optionally be entered on Tapen to give a hint to frontend about how it should be presented
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation context is served
items - [RecommendationItem!]! First slice of items available in this RecommendationUnit. The field 'itemsCursor' is used to fetch a new slice of items starting with the next item after this slice
itemsCursor - String Cursor to get more RecommendationItems from this RecommendationUnit. Null, if there is no more
sourceObjects - [RecommendationSourceObject!]

If the recommendation is seeded with some other objects such as viewed course, label affinity, or search query, etc., they are listed here.

Title and URLs of these source objects should be used to build a HTML title with links if the title field has template placeholders ({})

Example
{
  "id": 4,
  "title": "Courses in 'Python'",
  "rawTitle": "Courses in '{}'",
  "viewType": "default",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "items": [RecommendationItem],
  "itemsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago=",
  "sourceObjects": [RecommendationSourceObject]
}

RecommendationUnitGroup

Description

Group of units that should be presented together

Fields
Field Name Description
id - ID!

ID of the RecommendationUnitGroup object that will be unique among all sections inside a recommendation context.

In addition, this ID will be unique for all sections in the initial 'recommendations' query response and the subsequent 'moreRecommendationContextSections' queries

title - String Localized title
viewType - String Can optionally be entered on Tapen to give a hint to frontend about how it should be presented
units - [RecommendationUnit!]! Nested units in this unit group
Example
{
  "id": 4,
  "title": "Courses recommended based on your occupation",
  "viewType": "default",
  "units": [RecommendationUnit]
}

Review

Description

A review of a learning product

Fields
Field Name Description
learningProductType - LearningProductType! The type of learning product being reviewed
text - String! The review text
urlLearningProduct - URL! The URL of the reviewed learning product
Example
{
  "learningProductType": "ASSESSMENT",
  "text": "This course was a great introduction to AWS. I learned a lot and I'm excited to continue learning more about AWS.",
  "urlLearningProduct": "https://www.udemy.com/"
}

SearchAggregation

Description

Identifies available search filter facets

Fields
Field Name Description
label - String! Label for this type/group of aggregation; e.g. 'Topic'
key - String! Key argument that can be passed to query to filter by this option
buckets - [SearchAggregationOption!]! Available values for this aggregation
Example
{
  "label": "Subtitles",
  "key": "closed_caption_locale_languages",
  "buckets": [SearchAggregationOption]
}

SearchAggregationOption

Description

One of the available options within a search facet type

Fields
Field Name Description
value - String! Value argument that can be passed to query to filter by this option
label - String! Human-readable label for this filter option
countWithFilterApplied - Int! Number of results if this filter option were to be applied
key - String! Key that can be passed to the query to filter by this option
isSelected - Boolean! Whether this filter option is selected or not
Example
{
  "value": "en",
  "label": "EN",
  "countWithFilterApplied": 987,
  "key": "lang",
  "isSelected": true
}

SearchAutocompleteLogItem

Description

Search Log suggestion for autocomplete

Fields
Field Name Description
title - String! Phrase that will be shows as a suggestion
sectionLabel - String Which section this log item belongs to. It will be used to group the items
Example
{"title": "aws", "sectionLabel": "Popular searches"}

SearchAutocompleteSuggestion

Description

A simple autocomplete item with the tracking metadata

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this item
resultTrackingId - String! Search analytics tracking id; for uniquely identifying whole result set; for this request
item - SearchAutocompleteItem Search Autocomplete suggestion for autocomplete
Example
{
  "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ",
  "resultTrackingId": "p55X_jHUQ7yNmI0HQ4TmgA",
  "item": Course
}

SearchQuerySuggestion

Description

Represents a search suggestion for a search

Fields
Field Name Description
query - String The suggested query based on the original search input
type - SearchQuerySuggestionType The type of search query suggestion
Example
{"query": "python", "type": "REWRITE"}

SubCategoryRecommendation

Description

A wrapper type to include the recommended SubCategory and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
subCategory - SubCategory Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "subCategory": SubCategory
}

SubcategoryNavListItem

Description

Subcategory navigation list item

Fields
Field Name Description
subcategory - CourseSubCategory! The subcategory this item represents
children - [NavListItem]! List of child navigation items
Example
{
  "subcategory": CourseSubCategory,
  "children": [NavListItem]
}

SubscriptionPlan

Description

A Subscription plan to access a catalog of Udemy content

Fields
Field Name Description
id - ID! ID of the subscription plan:
productType - SubscriptionPlanProductType! Type of subscription plan being offered
urlLearnMore - URL! Learn more url for a given plan
urlExpressCheckout - URL! Express checkout url for given plan
urlTermsOfUse - URL! Terms and Conditions url for a given plan
priceOptions - [SubscriptionPlanPricingOptionItem!]! Computed price options for given plan
Arguments
licenseCount - Int
marketingURL - URL
contentCollections - [ContentCollection!]! List of content groups included in a given plan
Example
{
  "id": 4,
  "productType": "CONSUMERSUBSCRIPTION",
  "urlLearnMore": "https://www.udemy.com/",
  "urlExpressCheckout": "https://www.udemy.com/",
  "urlTermsOfUse": "https://www.udemy.com/",
  "priceOptions": [DailySubscriptionPlanPricingOption],
  "contentCollections": [ContentCollection]
}

SubscriptionPlanDiscount

Description

Contains information about the discount metadata for a given subscription plan price option

Fields
Field Name Description
appliedDiscounts - [SubscriptionPlanDiscountDetails!]! List of applied discounts on the plan price option data
Example
{"appliedDiscounts": [SubscriptionPlanDiscountDetails]}

SubscriptionPlanDiscountDateIntervalType

Description

Contains information on the start and end perioid for the discount interval type can be month/year

Fields
Field Name Description
start - Int! Start period of the discounted data
end - Int! End period of the discounted data
type - DateIntervalType! Interval type for the discounted period
duration - Int! Total duration of the discount period
Example
{"start": 123, "end": 987, "type": "DAY", "duration": 123}

SubscriptionPlanDiscountDetails

Description

Discount details for applied discount

Fields
Field Name Description
code - String! Coupon code/campaign code for the discount applied
sourceType - DiscountSourceType! Type of coupon code. will be either one of udemy/customer coupon
discountType - SubscriptionPlanDiscountType! Specific discount type for subscriptions ex: trial/price/seat discounts
data - SubscriptionPlanDiscountDataItem! Discount data for the specific discount type
isRemovable - Boolean! Flag for the applied code. tells if the applied discount can be removed on FE
Example
{
  "code": "DEAL-CODE",
  "sourceType": "GENERAL_COUPON",
  "discountType": "TRIAL_DISCOUNT",
  "data": SubscriptionPlanTrialDiscountData,
  "isRemovable": false
}

SubscriptionPlanLicenseContext

Description

Contains information about the license context for a given subscription plan price option

Fields
Field Name Description
unitPrice - Money! The unit price of the subscription price plan option based on provided requested count from request
licenseCount - Int! License count for the subscription plan option
defaultLicenseCount - Int! Default license count to be offered for purchase for given subscription plan option
minimumLicenseCount - Int! Minimum license count for purchase for given subscription plan option
maximumLicenseCount - Int! Maximum license count for purchase for given subscription plan option
Example
{
  "unitPrice": Money,
  "licenseCount": 987,
  "defaultLicenseCount": 123,
  "minimumLicenseCount": 987,
  "maximumLicenseCount": 987
}

SubscriptionPlanPrice

Description

Price data for plan pricing options

Fields
Field Name Description
list - Decimal! List price for the pricing option
discount - Decimal Discount price for the pricing option
monthly - Decimal Monthly price for the annual pricing option, for monthly plan price option will be equal to list price
annualSavings - Decimal The annual savings amount for the subscription price plan when compared to monthly plans. calculated on pricing backend can be null
discountMonthly - Decimal The monthly price for the discounted annual price option
discountAnnualSavings - Decimal The annual savings amount on discounted annual price for the subscription price plan when compared to monthly plans
currency - CurrencyCode Currency
Example
{
  "list": "1234.5678",
  "discount": "1234.5678",
  "monthly": "1234.5678",
  "annualSavings": "1234.5678",
  "discountMonthly": "1234.5678",
  "discountAnnualSavings": "1234.5678",
  "currency": "AUD"
}

SubscriptionPlanPriceDiscountData

Description

Contains information on the plan price discount

Fields
Field Name Description
type - SubscriptionPlanPriceDiscountType! Discount type for the price can be percentage off/fixed price discount
value - Decimal! Discount value applied on the actual price
interval - SubscriptionPlanDiscountDateIntervalType! Contains information on the start and end period for discount
Example
{
  "type": "FIXED",
  "value": "1234.5678",
  "interval": SubscriptionPlanDiscountDateIntervalType
}

SubscriptionPlanTrialDiscountData

Description

contains information on the trial discount if available

Fields
Field Name Description
days - Int! The total trial days offered as part of the discount
Example
{"days": 987}

SubscriptionTrial

Description

Type representing details about the trial subscription offer available for a given user and plan

Fields
Field Name Description
dateInterval - DateInterval! The length of the trial available to a user for a subscription plan
Example
{"dateInterval": DateInterval}

TopRatedCategoryTopicBadge

Description

Represents a badge awarded to a top-rated category topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
category - Category The category associated with the badge
Example
{
  "name": "Highest Rated",
  "topic": Topic,
  "category": Category
}

TopRatedSubcategoryBadge

Description

Represents a badge awarded to a top-rated subcategory

Fields
Field Name Description
name - String! The localized name of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{"name": "Highest Rated", "subcategory": BadgeSubCategory}

TopRatedSubcategoryTopicBadge

Description

Represents a badge awarded to a top-rated subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Highest Rated",
  "topic": Topic,
  "subcategory": BadgeSubCategory
}

Topic

Description

Topic

Fields
Field Name Description
id - ID! ID of topic
name - String! Title of topic (Python, Programming Languages)
url - URL! Web url of the topic page
groups - [TopicGroup!]! Topic groups this topic belongs to
questionsAndAnswers - [TopicQuestionAndAnswer!]! A collection of question and answer pairs with optional link for additional context
Example
{
  "id": "4",
  "name": "Python",
  "url": "https://www.udemy.com/topic/python",
  "groups": [TopicGroup],
  "questionsAndAnswers": [TopicQuestionAndAnswer]
}

TopicGroup

Description

Topic Group

Fields
Field Name Description
id - ID! ID of topic group
name - String! Name of topic group
Example
{"id": 4, "name": "Programming Languages"}

TopicQuestionAndAnswer

Description

A question and answer pair with optional link for additional context

Fields
Field Name Description
id - ID! ID of the question and answer
question - String! The question text
answer - String! The answer text
urlReadMore - URL The URL for additional information about the question and answer
linkText - String Text to display for the link to additional information about the question and answer
Example
{
  "id": "499882",
  "question": "What is the difference between a list and a tuple?",
  "answer": "A list is mutable, a tuple is immutable.",
  "urlReadMore": "https://blog.udemy.com/javascript-tutorial-learn-the-basics/",
  "linkText": "Learn more about JavqScript"
}

TopicRecommendation

Description

A wrapper type to include the recommended Topic (aka. Label) and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
topic - Topic Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "topic": Topic
}

User

Description

A Udemy user

Fields
Field Name Description
id - ID! Id of the user
Example
{"id": "4"}

VersionedIdentifier

Description

A versioned identifier type

Fields
Field Name Description
id - ID! ID of the entity
version - String Versioned of the entity, not set when not versioned
Example
{"id": "4", "version": "s@1720737548772424"}

VideoLecture

Description

Video lecture

Fields
Field Name Description
id - ID! Id of the video lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com//course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

VideoMashupLecture

Description

Mashup lecture has both video and a presentation

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com//course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

WeeklySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for weekly plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

Inputs

AuditLogDateFilter

Description

Input type for filtering logs based on a date time range

Fields
Input Field Description
startDate - DateTime The start date time of the range for fetching logs
endDate - DateTime The end date time of the range for fetching logs
Example
{
  "startDate": "2007-12-03T10:15:30Z",
  "endDate": "2007-12-03T10:15:30Z"
}

BadgeAssertionsSearchFilters

Description

Search filters for Badge Assertion search

Fields
Input Field Description
startDate - Date startDate to filter assertions by dateUploaded. If not given, all assertions will be returned
endDate - Date endDate to filter assertions by dateUploaded. If not given, all assertions will be returned
badgeClassExternalUrls - [URL!] if given, assertions will be filtered by these badgeClasses
Example
{
  "startDate": "2007-12-03",
  "endDate": "2007-12-03",
  "badgeClassExternalUrls": [
    "https://www.udemy.com/"
  ]
}

BadgeClassSearchFilters

Description

Search filters for BadgeClass search

Fields
Input Field Description
certificationAreaIds - [ID!] Filter by certification subject area
visibilityStatus - [BadgeClassVisibilityStatus!] If not given, all badges will be returned
certificationProviderIds - [ID!] Filter by certification provider. this has precedence over issuerIds
Example
{
  "certificationAreaIds": ["4"],
  "visibilityStatus": ["VISIBLE"],
  "certificationProviderIds": [4]
}

CourseSearchContext

Description

Additional search context for specific UX cases

Fields
Input Field Description
triggerType - CourseSearchTriggerType Trigger type for the course search
originalQuery - String The original query written before any manipulation, e.g., 'pyt' when autocompleted to 'python'
refinedQuery - String Refined query for the search, used for related or narrowing search
isDebug - Boolean Enables debugging mode for search queries
Example
{
  "triggerType": "USER_QUERY",
  "originalQuery": "abc123",
  "refinedQuery": "abc123",
  "isDebug": true
}

CourseSearchFilters

Description

Search filters to apply on search request

Fields
Input Field Description
mustHaveClosedCaption - Boolean Whether or not course must have closed captions
mustHaveQuiz - Boolean Whether or not course must have quizzes
mustHaveCodingExercise - Boolean Whether or not course must have coding exercises
mustHavePracticeTest - Boolean Whether or not course must have practice tests
mustHaveWorkspace - Boolean Whether or not course must have workspaces
mustHaveRoleplay - Boolean Whether or not course must have roleplays
showPracticeTestCoursesOnly - Boolean Filter courses that solely consist of practice tests
isCertificationPrep - Boolean Whether or not course is for certification preparation
minAverageRating - AverageRating Minimum average rating for the course. Ranges from 0 to 5.0
closedCaptionLanguage - [LanguageCode!] Filter results based on closed caption language
language - [LanguageCode!] Filter results based on course language
level - [DifficultyLevel!] Filter course based on difficulty level
videoLength - [VideoLength!] Filter course based on video length
topicIds - [ID!] Filter courses based on topics
price - [PriceOption!] Filter courses based on price, paid or free
mustBeInConsumerSubscription - Boolean Determines if the course is available in the user's Consumer Subscription when user has one. If true, only courses included in the user's Consumer Subscription are shown. If false, only purchasable courses outside the user's Consumer Subscription are shown
pageId - ID Filter courses based on pageId, used in the "All Courses" section on topic, category, and subcategory pages. When pageId is provided, the search query is skipped and courses are filtered directly by pageId. Each topic, category, and subcategory page has a unique pageId (e.g., 7380 for Python topic, 288 for Development category, 8 for Web Development subcategory)
Example
{
  "mustHaveClosedCaption": false,
  "mustHaveQuiz": true,
  "mustHaveCodingExercise": true,
  "mustHavePracticeTest": false,
  "mustHaveWorkspace": false,
  "mustHaveRoleplay": true,
  "showPracticeTestCoursesOnly": false,
  "isCertificationPrep": true,
  "minAverageRating": 4.5,
  "closedCaptionLanguage": ["AF"],
  "language": ["AF"],
  "level": ["ALL_LEVELS"],
  "videoLength": ["EXTRA_SHORT"],
  "topicIds": ["4"],
  "price": ["FREE"],
  "mustBeInConsumerSubscription": true,
  "pageId": 4
}

DynamicWebContentFilters

Description

The dynamic web content query filter options

Fields
Input Field Description
contentId - String! The ID of the content to fetch (e.g. promotionItem, organizationLogs, etc)
pageType - DynamicWebContentPageType! The specific page type for the dynamic web content that will match values set in the CMS
isContentPreviewEnabled - Boolean! The URL query param that will be parsed to enable returning the content that has been saved but not yet published in the CMS. Default = false
contentPreviewOverrides - [String] The overriding parameters that will be parsed from URL
Example
{
  "contentId": "abc123",
  "pageType": "LOGGED_OUT_HOME_PAGE",
  "isContentPreviewEnabled": false,
  "contentPreviewOverrides": ["abc123"]
}

FeatureRequestAttributeInput

Description

Stores realtime attribute like build_number->20220322_v1

Fields
Input Field Description
key - String! Key, ex: build_number
value - String! Value, ex: 20220322_v1
Example
{"key": "build_number", "value": "20220322_v1"}

FeatureVariantAssignmentFilters

Description

Holds filters for feature variant assignments

Fields
Input Field Description
realtimeAttributes - [FeatureRequestAttributeInput!] Filter by real time attributes
Example
{"realtimeAttributes": [FeatureRequestAttributeInput]}

LearningObjectiveInput

Description

This holds data to create a learning objective

Fields
Input Field Description
id - ID Id to identify for learning objective
name - String! Name of learning objective
learningObjectives - [LearningObjectiveInput!]! Child Learning objectives associated with this learning objective
Example
{
  "id": 4,
  "name": "xyz789",
  "learningObjectives": [LearningObjectiveInput]
}

LearningPathSearchFilters

Description

Search filters to apply on path search request

Fields
Input Field Description
mustHaveCertificate - Boolean Indicates whether path must have a certificate or not
Example
{"mustHaveCertificate": false}

LearningProductInput

Description

Input for getting badge classes by learning products

Fields
Input Field Description
id - ID! ID of the learning product
type - LearningProductType! Type of the learning product
versionId - String Version ID of the learning product
Example
{
  "id": "4",
  "type": "ASSESSMENT",
  "versionId": "xyz789"
}

LearningTestimonialFilters

Description

The Learning Testimonials query filter options

Fields
Input Field Description
pageType - LearningTestimonialPageType! The specific page type for Learning Testimonials that will match values set in the CMS
isContentPreviewEnabled - Boolean! The URL query param that will be parsed to enable returning the content that has been saved but not yet published in the CMS. Default = false
Example
{"pageType": "LOGGED_OUT_HOME_PAGE", "isContentPreviewEnabled": false}

LessonIdInput

Description

Input type for providing a lesson id

Fields
Input Field Description
idType - LessonIdType! The type of the id
idValue - ID! The id value
Example
{"idType": "ASSET_ID", "idValue": 4}

MoreRecommendationContextSectionsInput

Description

Input for querying more RecommendationContextSections from a RecommendationContext

Fields
Input Field Description
cursor - String! The 'sectionsCursor' field in the RecommendationContext
requestedSectionCount - PositiveInt Requested number of sections to fetch. The result might have less sections. Default = 6
Example
{
  "cursor": "abc123",
  "requestedSectionCount": 123
}

MoreRecommendationItemsInput

Description

Input for querying more RecommendationItems from a RecommendationUnit

Fields
Input Field Description
cursor - String! The 'itemsCursor' field in the RecommendationUnit
requestedItemCount - PositiveInt Requested number of items to fetch. The result might have less items. Default = 6
Example
{
  "cursor": "abc123",
  "requestedItemCount": 123
}

OrganizationAuditLogFilter

Description

Input type for filtering organization logs

Fields
Input Field Description
dateRange - AuditLogDateFilter The filter for the date time range
Example
{"dateRange": AuditLogDateFilter}

RecommendationContextInput

Description

All information required to query a recommendation context

Fields
Input Field Description
contextId - ID! Also known as 'Context Code'
sourceObjects - [RecommendationSourceObjectInput!] In some cases, the client application might provide it's own set of recommendation source objects as a seed to recommendations. For example, a category page adds the category object here while querying the RecommendationContext for the 'category' context
excludedItems - [RecommendationItemInput!] Can be used when the frontend application wants to ensure some items will not be recommended
requestedSectionCount - PositiveInt Requested number of sections to fetch. The result might have less sections. Default = 6
requestedItemCountPerUnit - PositiveInt Requested number of items to fetch for each unit. The result might have less items. Default = 6
Example
{
  "contextId": "4",
  "sourceObjects": [RecommendationSourceObjectInput],
  "excludedItems": [RecommendationItemInput],
  "requestedSectionCount": 123,
  "requestedItemCountPerUnit": 123
}

RecommendationItemInput

Description

Input version of RecommendationItem type to specify a recommendation item in queries

Fields
Input Field Description
id - ID! ID of the actual item. For example, the ID of a course
type - RecommendationItemType! Type of the actual item. For example, COURSE
Example
{"id": "4", "type": "COURSE"}

RecommendationSourceObjectInput

Description

Input version of RecommendationSourceObject

Fields
Input Field Description
id - ID! ID of the actual item. For example, the ID of a course
type - RecommendationSourceObjectType! Type of the actual item. For example, COURSE
Example
{"id": "4", "type": "COURSE"}

SearchAggregationInputOption

Description

Options for search aggregates

Fields
Input Field Description
key - String! Key of search aggregation to apply
value - String! Value of search aggregation to apply
Example
{"key": "closed_caption_locale_languages", "value": "en"}

SearchAutocompleteOriginPageInput

Description

Info about the page or component that sends the request

Fields
Input Field Description
pageKey - String page/component key that sends the request
entityId - ID related entity id of the page if exists
Example
{"pageKey": "abc123", "entityId": 4}

SearchAutocompleteRequestFilters

Description

Search Autocomplete request filters

Fields
Input Field Description
freeCourseSuppression - Boolean Indicates either free courses will be shown or not
showPracticeTestCoursesOnly - Boolean If flag is true then only courses solely consisting of practice tests will be shown
Example
{"freeCourseSuppression": true, "showPracticeTestCoursesOnly": false}

SearchAutocompleteRequestMetadata

Description

Search Autocomplete request metadata

Fields
Input Field Description
searchAutocompleteOriginPage - SearchAutocompleteOriginPageInput origin of the page that sends the request
Example
{
  "searchAutocompleteOriginPage": SearchAutocompleteOriginPageInput
}

SubscriptionPlanFilters

Description

Filers for subscription plans

Fields
Input Field Description
productType - SubscriptionPlanProductType Filter by product type. Default = CONSUMERSUBSCRIPTION
Example
{"productType": "CONSUMERSUBSCRIPTION"}

TopicFilters

Description

Topic Filters for searching topics. All filters are ANDed together

Fields
Input Field Description
includeTopicGroupIds - [ID!] Include topic group IDs
excludeTopicGroupIds - [ID!] Exclude topic group IDs
occupationGroupIds - [ID!] Include topics related to occupation group IDs
occupationIds - [ID!] Include topics related to occupation IDs
associatedWithTopicIds - [ID!] Include topics associated with these topic ids
Example
{
  "includeTopicGroupIds": [4],
  "excludeTopicGroupIds": ["4"],
  "occupationGroupIds": [4],
  "occupationIds": [4],
  "associatedWithTopicIds": ["4"]
}

VersionedIdentifierInput

Description

A versioned identifier input

Fields
Input Field Description
id - ID! ID of the entity
version - String Version of the entity, not set when not versioned
Example
{"id": 4, "version": "abc123"}

Enums

ActorType

Description

Defines the type of actor performing the event

Values
Enum Value Description

END_USER

Represents an end user who performed the action

IMPERSONATION

Represents an impersonation of another user performing the action

SERVICE

Represents a service or automated system performing the action
Example
"END_USER"

AuditEvent

Description

Defines the types of events that occurred

Values
Enum Value Description

USER_CREATED

A user has been created

USER_ACTIVATED

A user has been activated

USER_DEACTIVATED

A user has been deactivated

USER_REACTIVATED

A user has been reactivated

USER_PENDING

A user is pending

USER_ANONYMIZED

A user has been anonymized

LICENSE_ACTIVATED

A license has been created

LICENSE_DEACTIVATED

A license has been deactivated

INVITATION_CREATED

An invitation has been created

GROUP_EDITED

A group has been edited

GROUP_CREATED

A group has been created

GROUP_DELETED

A group has been deleted

USER_ROLE_ASSIGNED

A user role has been assigned

USER_ROLE_EDITED

A user role has been edited

USER_EMAIL_EDITED

A user email has been edited

USER_LIST_EXPORTED_TO_CSV

A user list has been exported to csv

USER_UPDATED

A user has been updated

ASSIGN_USERS_BY_CSV

A user has been assigned by csv
Example
"USER_CREATED"

BadgeClassVisibilityStatus

Description

Visibility of the badge class on the Udemy platform

Values
Enum Value Description

VISIBLE

Visible to all users

PENDING

Hidden from users on the platform, awaiting content or planning updates

HIDDEN

Hidden from users on the platform

INSTRUCTOR_ISSUED

Visible to users on the platform, but not discoverable in search

ORGANIZATION

Visible to users on the platform, but not discoverable in search, and only visible to users in the issuing organization

DELETED

Deleted badges
Example
"VISIBLE"

CaptionType

Description

Types of captions

Values
Enum Value Description

SUBTITLE

Captions covering speech only

CLOSED_CAPTION

Captions covering speech and descriptions of non-spoken sounds
Example
"SUBTITLE"

ContentSourceType

Description

Source of a lesson component

Values
Enum Value Description

AI

The source is the AI

INSTRUCTOR

The source is the instructor

MIXED

The source is mixed
Example
"AI"

CourseAccreditationType

Description

Accreditation types

Values
Enum Value Description

CPE

Continuing professional education
Example
"CPE"

CourseSearchSortType

Description

Sort order for courses in search response

Values
Enum Value Description

RELEVANCE

Most relevant

REVIEWS

Most reviewed

RATING

Highest rated

TIME

Newest
Example
"RELEVANCE"

CourseSearchTriggerType

Description

Trigger types for the course search

Values
Enum Value Description

USER_QUERY

User inputs query in the search bar

SEARCH_AUTOCOMPLETE

User selects a search autocomplete

SEARCH_QUERY_SUGGESTION

User selects a search suggested query

SEARCH_ORIGINAL_QUERY

User insists on the original query, exactly as typed

RELATED_SEARCHES

User clicks on related searches suggestion

RECOMMENDATION

User clicks on recommendation unit

NARROWING_SEARCH

User clicks on a narrowing search suggestion

BROWSE_CERTIFICATION

Course search triggered by a browse certification page This includes pages like:

BROWSE_TOPIC

Course search triggered by a topic page (e.g, https://www.udemy.com/topic/machine-learning/)

BROWSE_CATEGORY

Course search triggered by a category page (e.g, https://www.udemy.com/courses/development/)

BROWSE_SUBCATEGORY

Course search triggered by a subcategory page (e.g, https://www.udemy.com/courses/development/web-development/)

BROWSE_ROLEPLAY

Course search triggered by a roleplay browse page
Example
"USER_QUERY"

CurrencyCode

Description

Currencies available

Values
Enum Value Description

AUD

Australian dollar

BRL

Brazilian real

CAD

Canadian dollar

CLP

Chilean peso

COP

Colombian peso

DKK

Danish crone

EGP

Egyptian pound

EUR

Euro

GBP

Sterling

IDR

Indonesian rupiah

ILS

Israel new shekel

INR

Indian rupee

JPY

Japanese yen

KRW

South Korean won

MXN

Mexican peso

MYR

Malaysian ringgit

NOK

Norwegian krone

NGN

Nigerian naira

PEN

Peruvian sol

PLN

Polish złoty

PHP

Philippine peso

RON

Romanian leu

RUB

Russian ruble

SGD

Singapore dollar

THB

Thai baht

TRY

Turkish lira

TWD

New Taiwan dollar

VND

Vietnamese dong

USD

United States dollar

ZAR

South African rand
Example
"AUD"

DateIntervalType

Description

Supported units of time over which a subscription trial or billing cycle can occur

Values
Enum Value Description

DAY

Daily interval

MONTH

Monthly interval

WEEK

Weekly interval

YEAR

Yearly interval
Example
"DAY"

DifficultyLevel

Description

Instruction level of the course

Values
Enum Value Description

ALL_LEVELS

Item is appropriate for all skill levels

BEGINNER

Item is for beginners

INTERMEDIATE

Item is for students with intermediates knowledge

EXPERT

Item is for students with expert knowledge
Example
"ALL_LEVELS"

DiscountSourceType

Description

definition of different discount source types

Values
Enum Value Description

GENERAL_COUPON

General discount coupon code

UDEMY_COUPON

Udemy discount coupon code

INSTRUCTOR_COUPON

Instructor discount coupon code
Example
"GENERAL_COUPON"

DynamicWebContentPageType

Description

The specific page type for the dynamic web content. This is important for narrowing down the content in the CMS to where Marketing wants to render it

Values
Enum Value Description

LOGGED_OUT_HOME_PAGE

Logged out home page of udemy

REQUEST_DEMO_FORM

Udemy Business request demo form

PERSONAL_PLAN_LANDING_PAGE

Personal Plan Landing page
Example
"LOGGED_OUT_HOME_PAGE"

EntityType

Description

Defines the type of entity who was affected by the event

Values
Enum Value Description

NA

Means the entity type is not applicable for this event

END_USER

Represents an end user who was affected by the action

GROUP

Represents a group which was affected by the action

LICENSE

Represents a license which was affected by the action
Example
"NA"

LanguageCode

Description

The LanguageCode scalar type as defined by ISO 639-1

Values
Enum Value Description

AF

Afrikaans

AK

Akan

AM

Amharic

AR

Arabic

AS

Assamese

AZ

Azerbaijani

BE

Belarusian

BG

Bulgarian

BM

Bambara

BN

Bangla

BO

Tibetan

BR

Breton

BS

Bosnian

CA

Catalan

CE

Chechen

CS

Czech

CU

Church Slavic

CY

Welsh

DA

Danish

DE

German

DZ

Dzongkha

EE

Ewe

EL

Greek

EN

English

EO

Esperanto

ES

Spanish

ET

Estonian

EU

Basque

FA

Persian

FF

Fulah

FI

Finnish

FO

Faroese

FR

French

FY

Western Frisian

GA

Irish

GD

Scottish Gaelic

GL

Galician

GU

Gujarati

GV

Manx

HA

Hausa

HE

Hebrew

HI

Hindi

HR

Croatian

HU

Hungarian

HY

Armenian

IA

Interlingua

ID

Indonesian

IG

Igbo

II

Sichuan Yi

IS

Icelandic

IT

Italian

JA

Japanese

JV

Javanese

KA

Georgian

KI

Kikuyu

KK

Kazakh

KL

Kalaallisut

KM

Khmer

KN

Kannada

KO

Korean

KS

Kashmiri

KU

Kurdish

KW

Cornish

KY

Kyrgyz

LB

Luxembourgish

LG

Ganda

LN

Lingala

LO

Lao

LT

Lithuanian

LU

Luba-Katanga

LV

Latvian

MG

Malagasy

MI

Māori

MK

Macedonian

ML

Malayalam

MN

Mongolian

MR

Marathi

MS

Malay

MT

Maltese

MY

Burmese

NB

Norwegian (Bokmål)

ND

North Ndebele

NE

Nepali

NL

Dutch

NN

Norwegian Nynorsk

NO

Norwegian

OM

Oromo

OR

Odia

OS

Ossetic

PA

Punjabi

PL

Polish

PS

Pashto

PT

Portuguese

PT_BR

Portuguese (Brazil)

PT_PT

Portuguese (Portugal)

QU

Quechua

RM

Romansh

RN

Rundi

RO

Romanian

RU

Russian

RW

Kinyarwanda

SD

Sindhi

SE

Northern Sami

SG

Sango

SI

Sinhala

SK

Slovak

SL

Slovenian

SN

Shona

SO

Somali

SQ

Albanian

SR

Serbian

SU

Sundanese

SV

Swedish

SW

Swahili

TA

Tamil

TE

Telugu

TG

Tajik

TH

Thai

TI

Tigrinya

TK

Turkmen

TO

Tongan

TR

Turkish

TT

Tatar

UG

Uyghur

UK

Ukrainian

UR

Urdu

UZ

Uzbek

VI

Vietnamese

VO

Volapük

WO

Wolof

XH

Xhosa

YI

Yiddish

YO

Yoruba

ZH

Chinese

ZH_CN

Chinese (Simplified)

ZH_TW

Chinese (Traditional)

ZU

Zulu
Example
"AF"

LearningProductType

Description

Type of learning product

Values
Enum Value Description

ASSESSMENT

Assessment

BADGE_CLASS

Badge Class (OpenBadgeClass & OrganizationBadgeClass)

COURSE

Course

LAB

Lab

LEARNING_PATH

Learning path

PRACTICE_TEST

Practice test
Example
"ASSESSMENT"

LearningTestimonialPageType

Description

The specific page type for the Learning Testimonial. This is important for narrowing down the testimonial content in the CMS to where Marketing wants to render it. (Other pages will be added in the future, e.g., Personal Plan, etc)

Values
Enum Value Description

LOGGED_OUT_HOME_PAGE

Logged out home page of udemy
Example
"LOGGED_OUT_HOME_PAGE"

LearningTestimonialType

Description

Type of Learning Testimonial

Values
Enum Value Description

CASE_STUDY

Case study Learning Testimonial

COURSE_REVIEW

Course review Learning Testimonial

THIRD_PARTY

Third party Learning Testimonial
Example
"CASE_STUDY"

LessonIdType

Description

The types of a LessonId

Values
Enum Value Description

ASSET_ID

A lesson attached to an asset ID

UUID

A standalone lesson with a UUID
Example
"ASSET_ID"

NavListName

Description

Identifies the name of the navigation list

Values
Enum Value Description

MAIN

The main navigation list seen in explore menu

LINK_BAR

The navigation tabs seen on category and subcategory landing pages
Example
"MAIN"

OrganizationType

Description

Type of an organization

Values
Enum Value Description

UDEMY_BUSINESS

Udemy Business

UDEMY_BUSINESS_CHINA

Udemy Business China

UDEMY_GOVERNMENT

Udemy Government
Example
"UDEMY_BUSINESS"

PriceOption

Description

Price of the course, free or paid

Values
Enum Value Description

FREE

Free

PAID

Paid
Example
"FREE"

RecommendationItemType

Description

Currently supported RecommendationItem types

Values
Enum Value Description

COURSE

The recommended object is a 'Course'

CATEGORY

The recommended object is a 'Category'

SUBCATEGORY

The recommended object is a 'SubCategory'

LABEL

The recommended object is a 'Label (aka. Topic)'

INSTRUCTOR

The recommended object is a 'Instructor'

LECTURE

The recommended object is a 'Lecture'

OCCUPATION

The recommended object is a 'Occupation'

COURSE_SECTION

The recommended object is a 'Course Section'

LAB

The recommended object is a 'Lab'

CODING_EXERCISE

The recommended object is a 'Coding Exercise'

ASSESSMENT

The recommended object is a 'Assessment'

LEARNING_PATH

The recommended object is a 'Learning Path'
Example
"COURSE"

RecommendationSourceObjectType

Description

Currently supported recommendation source (aka. seed) object types

Values
Enum Value Description

COURSE

The type of recommendation source (aka. seed) object is 'Course'

LECTURE

The type of recommendation source (aka. seed) object is 'Lecture'

CATEGORY

The type of recommendation source (aka. seed) object is 'Category'

SUBCATEGORY

The type of recommendation source (aka. seed) object is 'SubCategory'

LABEL

The type of recommendation source (aka. seed) object is 'Label (aka. Topic)'

COLLECTION

The type of recommendation source (aka. seed) object is 'Collection'

OCCUPATION

The type of recommendation source (aka. seed) object is 'Occupation'

OCCUPATION_GROUP

The type of recommendation source (aka. seed) object is 'Occupation Group'

INSTRUCTOR

The type of recommendation source (aka. seed) object is 'Instructor'
Example
"COURSE"

SearchQuerySuggestionType

Description

Possible suggestion types for the search query

Values
Enum Value Description

REWRITE

'Rewrite' suggestion for the search query

DID_YOU_MEAN

'Did you mean' suggestion for the search query
Example
"REWRITE"

SubscriptionPlanDiscountType

Description

enum definition for different discount types for subscription

Values
Enum Value Description

TRIAL_DISCOUNT

discount on the trial days

PLAN_PRICE_DISCOUNT

discount on the plan price monthly/yearly
Example
"TRIAL_DISCOUNT"

SubscriptionPlanPriceDiscountType

Description

Definition for different price discount types

Values
Enum Value Description

FIXED

fixed value discount on the price

PERCENTAGE

percentage of on the price
Example
"FIXED"

SubscriptionPlanProductType

Description

The type of subscription plan being offered

Values
Enum Value Description

CONSUMERSUBSCRIPTION

Consumer subscription (previously Spadefish)

ENTERPRISE

Enterprise Plan

ENTERPRISEPRO

Enterprise PRO Plan

TEAM

Team Plan

UDEMYPRO

Udemy Pro
Example
"CONSUMERSUBSCRIPTION"

TopicPopularityTypes

Description

Types of popularity for Topics

Values
Enum Value Description

POPULAR

Popular popularity type

TRENDING

Trending popularity type
Example
"POPULAR"

VideoLength

Description

Length of the video in course

Values
Enum Value Description

EXTRA_SHORT

Extra short

SHORT

Short

MEDIUM

Medium

LONG

Long

EXTRA_LONG

Extra long
Example
"EXTRA_SHORT"

Unions

Actor

Description

Represents the actor who performed the event

Fields
Field Name Description
actorId - ID! The unique identifier for the actor
actorType - ActorType! The type of actor, such as an end user, impersonator, or service
Example
{"actorId": 4, "actorType": "END_USER"}

AnnualSubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for annual plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
monthlyPrice - Money! The monthly list price of the subscription price plan. Applicable for annual plan only. Represents fraction of list price
annualSavings - Money The annual savings amount for the subscription price plan when compared to monthly plans. calculated on pricing backend can be null
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": 4,
  "listPrice": Money,
  "monthlyPrice": Money,
  "annualSavings": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

ArticleLecture

Description

Article lecture

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

Assessment

Description

An Assessment represents a collection of Forms (which are variations of items and orderings of items). A user chooses to take an Assessment. They are then give a Form to take from that Assessment

Fields
Field Name Description
id - ID! ID of the assessment
title - String! The name, for example: 'HTML' or 'AWS Developer Certification'
description - SafeHtml! Description of the assessment
isBeta - Boolean! Is the assessment beta or not
isActive - Boolean! Is the assessment active or not
urlLanding - URL! Landing page to view this Assessment
metadata - AssessmentMetadata Metadata associated with the assessment
assignment - AssessmentAssignment The assessment's assignment information, if the assessment has been assigned to the user
durationInSeconds - DurationInSeconds Duration of an assessment in seconds
Example
{
  "id": "10",
  "title": "AWS Certified Developer - Associate",
  "description": "<p>Put your knowledge to the test with this series of multiple-choice and multi-select questions.</p> <p>If you exit before finishing and return within 24 hours, you can restart where you left off. Otherwise, you can start again with a new set of questions.</p>",
  "isBeta": false,
  "isActive": true,
  "urlLanding": "https://learning.udemy.com/skills-assessment/advanced-java/",
  "metadata": {"trackingId": "O9eKKCzdQim95RLDVXI3OA"},
  "assignment": {"dueDat": "2024-04-19T20:13:25.000Z", "id": "10"},
  "durationInSeconds": 19263
}

AssessmentAssignment

Description

A unique assignment of an assessment to a user, with optional due date

Fields
Field Name Description
id - ID! ID of the assignment
dueDate - DateTime An optional due date by which the assignment should be completed
Example
{"id": "10", "dueDate": "2024-04-19T20:13:25.000Z"}

AssessmentMetadata

Description

MetaData for an assessment

Fields
Field Name Description
trackingId - String Unique analytics ID for this instance of Assessment returned from the server in this request
Example
{"trackingId": "O9eKKCzdQim95RLDVXI3OA"}

AssessmentRecommendation

Description

A wrapper type to include the recommended Assessment and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
assessment - Assessment Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "assessment": Assessment
}

AssessmentSearchResponse

Description

List of Assessment and additional data about search response

Fields
Field Name Description
assessments - [Assessment]! List of Assessment objects
count - Int! Total number of Assessments matching the search query and filters
metadata - AssessmentSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "assessments": [Assessment],
  "count": 987,
  "metadata": AssessmentSearchResponseMetadata
}

AssessmentSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{"trackingId": "JjBqqc4LS2K9Ht_1LTpaMg"}

AudioLecture

Description

Lecture in the form of just audio (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

BadgeAssertion

Description

Issued Badge of a user (Assertion in OpenBadge specification)

Fields
Field Name Description
id - ID! ID of the Assertion
externalUrl - URL! IRI of the Assertion. IRI of OpenBadge specification
issuedOn - Date! The date this assertion is issued
expires - Date The date this assertion expires
user - User! Owner of the assertion
badgeClass - BadgeClass! The BadgeClass object that this Assertion is issued for
uploadedImageUrl - URL The url of the uploaded baked image of assertion
Example
{
  "id": "4",
  "externalUrl": "https://www.udemy.com/",
  "issuedOn": "2007-12-03",
  "expires": "2007-12-03",
  "user": User,
  "badgeClass": BadgeClass,
  "uploadedImageUrl": "https://www.udemy.com/"
}

BadgeAssertionPaged

Description

Issued badges of a user (Assertion in OpenBadge specification)

Fields
Field Name Description
items - [BadgeAssertion!]! List of BadgeAssertions
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page pageSize)
totalCount - Int! Total number of BadgeAssertions
Example
{
  "items": [BadgeAssertion],
  "page": 123,
  "pageCount": 987,
  "totalCount": 987
}

BadgeCertificationProvider

Description

Certification Provider (topic descriptor) for Open Badges

Fields
Field Name Description
id - ID! ID of certification provider
name - String! Title of certification provider(Google, Microsoft)
Example
{"id": 4, "name": "(AWS) Amazon Web Services"}

BadgeCertificationSubjectArea

Description

Certification Subject Area (topic descriptor) for Open Badges

Fields
Field Name Description
id - ID! ID of certification subject area
name - String! Title of certification subject area(Cloud, SQL)
Example
{"id": "4", "name": "SQL"}

BadgeClassAlignment

Description

Alignment object. An intangible item that describes an alignment between a learning resource and a BadgeClass

Fields
Field Name Description
targetName - String Name of the alignment
targetUrl - URL URL linking to the official description of the alignment target, for example an individual standard within an educational framework
targetDescription - String Short description of the alignment target
targetFramework - String Name of the framework the alignment target
targetCode - String If applicable, a locally unique string identifier that identifies the alignment target within its framework and/or targetUrl
Example
{
  "targetName": "Badge target name",
  "targetUrl": "https://www.udemy.com/",
  "targetDescription": "Badge target description",
  "targetFramework": "Badge target framework",
  "targetCode": "Python"
}

BadgeClassCriteria

Description

Descriptive metadata about the achievements necessary to be issued with particular BadgeClass (Certification)

Fields
Field Name Description
id - URL The URI of a webpage that describes in a human-readable format the criteria for the BadgeClass
type - [String!] Type of the Criteria
narrative - String A narrative of what is needed to earn the badge
Example
{
  "id": "https://www.udemy.com/",
  "type": ["CERTIFICATION"],
  "narrative": "Maintain an active status as a CCIE or as a CCIE Emeritus for 20 consecutive years in at least one CCIE track."
}

BadgeClassImage

Description

Image object of BadgeClass or Issuer

Fields
Field Name Description
id - ID! URI of the image
caption - String The caption for the image
author - String The author of the image
type - [String!] Type of Image
Example
{
  "id": "4",
  "caption": "image.png",
  "author": "Cisco",
  "type": ["logo"]
}

BadgeClassIssuer

Description

Issuer of BadgeClass. A collection of information that describes the entity or organization

Fields
Field Name Description
id - ID! Unique IRI for the Issuer/Profile file
type - [String!]! Issuer type. In most cases, this will simply be the string Issuer or the more general Profile
name - String! The name of the entity or organization
url - URL! The homepage or social media profile of the entity, whether individual or institutional
email - EmailAddress Contact address for the individual or organization
telephone - String A phone number for the entity
description - String A short description of the issuer entity or organization
image - BadgeClassImage IRI or document representing an image of the issuer. This must be a PNG or SVG image
Example
{
  "id": "4",
  "type": ["Profile"],
  "name": "Cisco",
  "url": "https://www.cisco.com/",
  "email": "test@test.com",
  "telephone": "1-800-553-6387",
  "description": "Cisco is the worldwide leader in networking that transforms how people connect, communicate and collaborate.",
  "image": BadgeClassImage
}

BadgeClassSearchResponse

Description

Paginated list of BadgeClasses for search response

Fields
Field Name Description
items - [BadgeClass!]! List of BadgeClasses
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page pageSize)
Example
{"items": [BadgeClass], "page": 987, "pageCount": 987}

BadgeSubCategory

Description

SubCategory with no additional fields

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
Example
{"id": "4", "name": "Cloud Certifications"}

BeginnerTopRatedCategoryTopicBadge

Description

Represents a badge awarded to a beginner top-rated category topic

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge, e.g. 1,2,3
category - Category The category associated with the badge
topic - Topic The topic associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "category": Category,
  "topic": Topic
}

BeginnerTopRatedSubcategoryBadge

Description

Represents a badge awarded to a beginner top-rated subcategory

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "subcategory": BadgeSubCategory
}

BeginnerTopRatedSubcategoryTopicBadge

Description

Represents a badge awarded to a beginner top-rated subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
rank - NonNegativeInt! The rank of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
topic - Topic The topic associated with the badge
Example
{
  "name": "Good for Beginners",
  "rank": 123,
  "subcategory": BadgeSubCategory,
  "topic": Topic
}

BestSellerCategoryTopicBadge

Description

Represents a badge awarded to a best seller category topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
category - Category The category associated with the badge
Example
{
  "name": "Good for Beginners",
  "topic": Topic,
  "category": Category
}

BestSellerSubcategoryBadge

Description

Represents a badge awarded to a best seller subcategory

Fields
Field Name Description
name - String! The localized name of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{"name": "Bestseller", "subcategory": BadgeSubCategory}

BestSellerSubcategoryTopicBadge

Description

Represents a badge awarded to a best seller subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Bestseller",
  "topic": Topic,
  "subcategory": BadgeSubCategory
}

CategoryNavListItem

Description

Category navigation list item

Fields
Field Name Description
category - CourseCategory! The category this item represents
children - [NavListItem]! List of child navigation items
Example
{
  "category": CourseCategory,
  "children": [NavListItem]
}

CategoryRecommendation

Description

A wrapper type to include the recommended Category and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
category - Category Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "category": Category
}

CertificationExam

Description

Certification Exam for earning a Badge

Fields
Field Name Description
urlRegistration - URL URL to the exam registration page for a certification
incentiveOfferTextPublic - SafeHtml If the Cert/Badge provider offers discount/incentive to Udemy students. Public version is for display on e.g. Course Landing Page (when the person has not yet purchased). Whether or not incentive is offered may depend on the specific LearningProduct
Arguments
learningProduct - LearningProductInput
incentiveOfferTextPrivate - SafeHtml If the Cert/Badge provider offers discount/incentive to Udemy students. Private version is for display on e.g. Course Taking Page (after the person has purchased) Whether or not incentive is offered may depend on the specific LearningProduct
Arguments
learningProduct - LearningProductInput
Example
{
  "urlRegistration": "https://www.cncf.io/training/certification/cka/",
  "incentiveOfferTextPublic": "Enroll in this course and get <strong>20% off</strong>exam registration",
  "incentiveOfferTextPrivate": "Use code <strong>MUCHDISCOUNT</strong> for 20% off exam registration"
}

CertificationExamURL

Description

URL to the exam registration page for a certification with its locale (deprecated)

Fields
Field Name Description
url - URL! URL to the exam registration page for a certification
locale - Locale! Locale this exam Is administered in
Example
{"url": "https://www.cncf.io/training/certification/cka/", "locale": "en"}

CodeBlock

Description

A micro-content representing a code block

Fields
Field Name Description
language - String! The language of the code
code - String! The code value
Example
{"language": "java", "code": "System.out.println(msg);"}

CodingExercise

Description

Coding exercise for students to practice their programming

Fields
Field Name Description
id - ID! The Id of the coding exercise
title - String! The title of the coding exercise
description - String Problem statement
urlLanding - URL! Landing page to view this CodingExercise
versionedIdentifier - VersionedIdentifier! Versioned identifier of the coding exercise
course - Course Course this coding exercise belongs to
Example
{
  "id": "4",
  "title": "Coding Exercise: Create a Lambda Function",
  "description": "<p>Let's create a Lambda function from scratch. We'll use the AWS console to create a Lambda function that will be triggered by an S3 event.</p>",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

CodingExerciseRecommendation

Description

A wrapper type to include the recommended Coding Exercise and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
codingExercise - CodingExercise Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "codingExercise": CodingExercise
}

ContentCollection

Description

Type representing a group of content for a subscription plan

Fields
Field Name Description
id - ID! ID of the Content Collection
Example
{"id": 4}

Course

Description

The Course object

Fields
Field Name Description
id - ID! ID of the course
title - String! Title of the course
headline - String Headline to show under the title
description - SafeHtml Description of the course
badges - [LearningProductBadge!]! Badges awarded to the course
curriculum - Curriculum! Course's curriculum
prerequisites - [String!]! Prerequisites for taking the course
targetAudience - [String!]! Who should attend the course
learningOutcomes - [String!]! What you will learn in this course
duration - CourseDuration Total duration of the course's content
durationVideoContent - DurationInSeconds Total duration of video content only in seconds
durationInSeconds - DurationInSeconds Total duration of the course's content in seconds
private - Boolean Whether the course is publicly available or not
organization - Organization The UB organization this course belongs to, only visible if you are part of that organization
organizationInfo - CourseOrganizationInfo Organization specific course properties, only visible if you are part of that organization
images - CourseImages! Images by their dimensions
instructors - [CourseInstructor!]! Instructors of the Course
categories - [CourseCategory!]! Categories the course is part of
enrollments - CourseEnrollments! Learners enrolled in a course
enrollable - Boolean! Whether a learner can enroll in a course or not
isEnrolled - Boolean! Whether the course is enrolled by the current user or not
isFree - Boolean! Whether the course is a free course or not
rating - CourseRating! How do students rate the course
level - DifficultyLevel Instruction level of the course
urlAutoEnroll - URL The URL to access the auto-enroll page
urlCourseLanding - URL The URL to access the course landing page
urlCourseTaking - URL The URL to access the course taking page
locale - Locale! Course locale e.g. en-US or en-GB
updatedOn - Date When the course was last updated
topics - [Topic!] Topics course is tagged with
primaryTopic - Topic Primary topic course is tagged with
xapiActivityId - ID! Activity ID of xAPI statement to identify course
accreditations - [CourseAccreditation!] Accreditations a course has
captions - [CourseCaptionDetails!] Caption and subtitles the course has
urlMobileNativeDeeplink - URL! Mobile Native deep link of the course
promoVideo - CoursePromoVideo Promotional video for the course. Clients need to renew it if URL expires by querying it again
versionedIdentifier - VersionedIdentifier! Versioned identifier of the course
subscriptionInfo - CourseSubscriptionInfo Subscription specific course properties
isPracticeTestCourse - Boolean! Indicates if Course is a practice test only, made to prepare for a certification exam
Example
{
  "id": "4",
  "title": "[NEW] Ultimate AWS Certified Cloud Practitioner - 2023",
  "headline": "Full Practice Exam included + explanations | Learn Cloud Computing | Pass the AWS Cloud Practitioner CLF-C01 exam!",
  "description": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
  "badges": [LearningProductBadge],
  "curriculum": Curriculum,
  "prerequisites": ["Mathematics", "Programming"],
  "targetAudience": ["Developers", "Students"],
  "learningOutcomes": ["xyz789"],
  "duration": "5h 21m 3s",
  "durationVideoContent": 19263,
  "durationInSeconds": 19263,
  "private": true,
  "organization": Organization,
  "organizationInfo": CourseOrganizationInfo,
  "images": CourseImages,
  "instructors": [CourseInstructor],
  "categories": [CourseCategory],
  "enrollments": CourseEnrollments,
  "enrollable": false,
  "isEnrolled": false,
  "isFree": false,
  "rating": CourseRating,
  "level": "ALL_LEVELS",
  "urlAutoEnroll": "https://www.udemy.com/",
  "urlCourseLanding": "https://www.udemy.com/",
  "urlCourseTaking": "https://www.udemy.com/",
  "locale": "en_US",
  "updatedOn": "2007-12-03",
  "topics": [Topic],
  "primaryTopic": Topic,
  "xapiActivityId": 4,
  "accreditations": [CourseAccreditation],
  "captions": [CourseCaptionDetails],
  "urlMobileNativeDeeplink": "https://www.udemy.com/",
  "promoVideo": CoursePromoVideo,
  "versionedIdentifier": VersionedIdentifier,
  "subscriptionInfo": CourseSubscriptionInfo,
  "isPracticeTestCourse": false
}

CourseAccreditation

Description

Accreditations

Fields
Field Name Description
type - CourseAccreditationType! The type of accreditation
subject - String Technical subject area
compliantSince - Date Start date of accreditation
level - String The level of the accreditation
creditCount - NonNegativeFloat! The amount of credits this accreditations supplies
Example
{
  "type": "CPE",
  "subject": "Data Science",
  "compliantSince": "2007-12-03",
  "level": "Beginner",
  "creditCount": 123.45
}

CourseAiHighlights

Description

AI generated highlights for a course

Fields
Field Name Description
summary - String! AI generated summary of the course
learningOutcomes - [String!]! Skills or learning outcomes for the course
Example
{
  "summary": "<p><strong>Welcome!&nbsp;I'm here to help you prepare and PASS the newest AWS&nbsp;Certified Cloud Practitioner exam.</strong></p>",
  "learningOutcomes": [
    "All 300+ slides available as downloadable PDF",
    "Full Practice Exam with Explanations included!",
    "Learn the AWS Fundamentals (EC2, ELB, ASG, RDS, ElastiCache, S3)"
  ]
}

CourseCaptionDetails

Description

Course caption details such as locale, type, and source

Fields
Field Name Description
locale - Locale! The caption's locale
automaticallyGenerated - Boolean! Whether the caption is automatically generated
type - CaptionType! The caption type, either subtitles or closed captions
Example
{
  "locale": "en_US",
  "automaticallyGenerated": true,
  "type": "SUBTITLE"
}

CourseCatalogFullResponsePaged

Description

A catalog of all courses available to the client

Fields
Field Name Description
courses - [Course!]! List of courses in the catalog
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "courses": [Course],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
}

CourseCatalogUpdatedResponsePaged

Description

Changes to catalog of all courses available to the client

Fields
Field Name Description
addedCourses - [Course!]! Courses added since last sync
updatedCourses - [Course!]! Courses updated since last sync
removedCourses - [ID!]! Course IDs for courses removed since last sync
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "addedCourses": [Course],
  "updatedCourses": [Course],
  "removedCourses": ["4"],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WWpjM1lUWmxPVEV0TW1Vek55MDBNemN4TFdKaFpqUXRaV1E1WldNNE1USmpPREE0T2pFMk9EVTJOREl4T1RRNmJHVmhjbTVwYm1jdE9ESXdNVEV5TmpNdE1UVmpNaTAwTmpoaDoxMg=="
}

CourseCategory

Description

Category the Course belongs to

Fields
Field Name Description
id - ID! ID of the category
name - String! Name of the category
url - URL! The URL to the category page this course is a part of
subcategories - [CourseSubCategory!]! Subcategories belonging to the category
Example
{
  "id": 4,
  "name": "IT Operations",
  "url": "https://learning.udemy.com/courses/ufb-it-operations",
  "subcategories": [CourseSubCategory]
}

CourseCurriculumContentCounts

Description

Count of the course curriculum content by type

Fields
Field Name Description
lecturesCount - Int! Count of all lectures in the course curriculum
quizzesCount - Int! Count of all quizzes in the course curriculum
codingExercisesCount - Int! Count of all coding exercises in the course curriculum
practiceAssignmentsCount - Int! Count of all practice assignments in the course curriculum
practiceTestsCount - Int! Count of all practice tests in the course curriculum
practiceTestQuestionsCount - Int! Count of all questions in the PracticeTests in the course curriculum
Example
{
  "lecturesCount": 987,
  "quizzesCount": 123,
  "codingExercisesCount": 987,
  "practiceAssignmentsCount": 123,
  "practiceTestsCount": 987,
  "practiceTestQuestionsCount": 123
}

CourseEnrollments

Description

Enrollments belonging to the course

Fields
Field Name Description
count - Int Exact count of how many students are there currently enrolled (course purchase and subscription). Requires token scope 'udemy:application' to access
roundedCount - Int! Count of how many students are currently enrolled (course purchase and subscription) rounded to the nearest decimal Exception: if there are fewer than 10 enrollments we show the exact amount (instead of 0)
Example
{"count": 123, "roundedCount": 987}

CourseImages

Description

Course images by varying dimensions

Fields
Field Name Description
px100x100 - String Course preview image with 100x100 dimensions in pixels
px240x135 - String Course preview image with 240x135 dimensions in pixels
px304x171 - String Course preview image with 304x171 dimensions in pixels
px480x270 - String Course preview image with 480x270 dimensions in pixels
px48x27 - String Course preview image with 48x27 dimensions in pixels
px50x50 - String Course preview image with 50x50 dimensions in pixels
px75x75 - String Course preview image with 75x75 dimensions in pixels
px96x54 - String Course preview image with 96x54 dimensions in pixels
px750x422 - String Course preview image with 750x422 dimensions in pixels
height125 - String Course preview image with 125 pixels height
height200 - String Course preview image with 200 pixels height
Example
{
  "px100x100": "https://img-c.udemycdn.com/course/100x100/11112134.jpg",
  "px240x135": "https://img-c.udemycdn.com/course/240x135/11112134.jpg",
  "px304x171": "https://img-c.udemycdn.com/course/304x171/11112134.jpg",
  "px480x270": "https://img-c.udemycdn.com/course/480x270/11112134.jpg",
  "px48x27": "https://img-c.udemycdn.com/course/48x27/11112134.jpg",
  "px50x50": "https://img-c.udemycdn.com/course/50x50/11112134.jpg",
  "px75x75": "https://img-c.udemycdn.com/course/75x75/11112134.jpg",
  "px96x54": "https://img-c.udemycdn.com/course/96x54/11112134.jpg",
  "px750x422": "https://img-c.udemycdn.com/course/750x422/11112134.jpg",
  "height125": "https://img-c.udemycdn.com/course/125_H/11112134.jpg",
  "height200": "https://img-c.udemycdn.com/course/200_H/11112134.jpg"
}

CourseInstructor

Description

Instructor for a course

Fields
Field Name Description
id - ID! ID of the Instructor
name - String! Instructor's name
url - URL The URL to access the instructor page
images - InstructorImages! Instructor's image by varying pixels
Example
{
  "id": 4,
  "name": "Stephane Maarek",
  "url": "https://www.udemy.com/user/stephane-maarek/",
  "images": InstructorImages
}

CourseOrganizationInfo

Description

Organization specific course properties

Fields
Field Name Description
isOrganizationSpecific - Boolean True if this course was created specifically for this organization
isMarketplaceImported - Boolean True if this course was purchased separately from the marketplace
retiresOn - Date If not null returns the Date this course will retire from organization's content collection
Example
{
  "isOrganizationSpecific": false,
  "isMarketplaceImported": false,
  "retiresOn": "2007-12-03"
}

CoursePromoVideo

Description

Object to store URL and expiration time for course's promo video

Fields
Field Name Description
url - URL! URL for a promo video asset in mp4 format
expiresOn - Timestamp Expiration time of the promo video URL. If null URL doesn't expire
Example
{
  "url": "https://mp4-c.udemycdn.com/2020-08-31_18-10-39-0ff314ead0e4f7f3519b8285af262046/1/original.mp4?Expires=1695960374&Signature=qOCfN840cCmL4GHBt8JU6DPE9B2sR9UpUsZC5HTVng~0l44cTdFm92v1~BhCRaDaLH4AjKBXelMYVqj4BczBPNNSV4Q2OTMJ4Q4QPhDByD16TAzyVFP2gSX40Rxlfqi1jc-Mnii3IMLLLSJlQGhpAKnHh~ZVx9JX2jFiH-k8ShJ1VQxciUxEbOO-VrrKrkapdF5P7MhEI2WMIZ817s~FN2~~1zBK3V-8L0cdBTVwDbxFC3n-WtF0eAT8ZJhPzJgXuF93uUrAnYGnnlCwU3u7mxkr900LbJDJ79nit8-MOmP0QCBRuou-2-8KCKqWhPwbh--JCYJLsE2L6NaAjdWmvw__&Key-Pair-Id=dev",
  "expiresOn": 1592577642
}

CourseRating

Description

Ratings of a course

Fields
Field Name Description
average - AverageRating Weighted average rating. Ranges from 0 to 5.0
count - Int! Number of ratings
Example
{"average": 4.5, "count": 123}

CourseRecommendation

Description

A wrapper type to include the recommended Course and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
course - Course Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "course": Course
}

CourseSearchResponse

Description

List of Courses and additional data about search response

Fields
Field Name Description
courses - [Course!]! List of Course objects Use results instead
results - [CourseSearchResult]! List of CourseSearchResult objects containing course and additional search related fields
count - Int! Total number of Courses matching the search query and filters
filterOptions - [SearchAggregation!]! Identifies available search filter facets
pageCount - Int! The total amount of pages in search response
page - Int! The current page number, 0 based
metadata - CourseSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "courses": [Course],
  "results": [CourseSearchResult],
  "count": 123,
  "filterOptions": [SearchAggregation],
  "pageCount": 123,
  "page": 987,
  "metadata": CourseSearchResponseMetadata
}

CourseSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
originalQuery - String! Original search query, without any manipulation
querySuggestion - SearchQuerySuggestion Search query suggestion containing the suggested query and the suggestion type
hasOrgCourses - Boolean! Whether there are available courses for organizations in the search result or not
associatedTopic - Topic Associated topic for the search response
certificationTopic - Topic Certification topic for the search response
experimentResults - [FeatureVariantAssignment!]! For the request, show experiment metadata results like bucketing info, experiment IDs of assigned feature variants
debug - JSON Debug information for the search response
Example
{
  "trackingId": "O9eKKCzdQim95RLDVXI3OA",
  "originalQuery": "pyt",
  "querySuggestion": SearchQuerySuggestion,
  "hasOrgCourses": true,
  "associatedTopic": Topic,
  "certificationTopic": Topic,
  "experimentResults": [FeatureVariantAssignment],
  "debug": "{\"key\":\"value\"}"
}

CourseSearchResult

Description

Represents a course search result with additional data about the search response

Fields
Field Name Description
course - Course! The course information returned in the search result
trackingId - String! Unique analytics ID for this instance of Course returned from the server in this request
curriculumItemMatches - [CurriculumItem]! Curriculum items that match with the search query
searchDebugFeatures - JSON Debugging information related to the search process for this course
Example
{
  "course": Course,
  "trackingId": "O9eKKCzdQim95RLDVXI3OA",
  "curriculumItemMatches": [CurriculumItem],
  "searchDebugFeatures": "{\"key\":\"value\"}"
}

CourseSection

Description

Section of the course containing all types of curriculum items

Fields
Field Name Description
id - ID! Identifier for the course section
title - String! Title of the section
description - String What will students be able to do at the end of this section?
items - [CurriculumItem!]! Content of the section
versionedIdentifier - VersionedIdentifier! Versioned identifier of the course section
course - Course Course this section belongs to
Example
{
  "id": 4,
  "title": "Introduction",
  "description": "<p><strong>Welcome to the AWS Certified Cloud Practitioner Course!</strong></p>",
  "items": [CurriculumItem],
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

CourseSectionRecommendation

Description

A wrapper type to include the recommended Course Section and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
courseSection - CourseSection Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "courseSection": CourseSection
}

CourseSubCategory

Description

SubCategory that is part of CourseCategory

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
url - URL! The URL to the subcategory page this course is a part of
Example
{
  "id": 4,
  "name": "IT Certifications",
  "url": "https://learning.udemy.com/courses/ufb-it-operations/ufb-it-certifications"
}

CourseSubscriptionInfo

Description

Subscription specific course properties

Fields
Field Name Description
inSubscriptions - [SubscriptionPlan!] Indicates which type of user's subscription course is included in
availableInSubscriptions - [SubscriptionPlan!] Indicates which types of subscription this course can be purchased in
Example
{
  "inSubscriptions": [SubscriptionPlan],
  "availableInSubscriptions": [SubscriptionPlan]
}

Curriculum

Description

Curriculum part of a course

Fields
Field Name Description
sections - [CourseSection!]! Each course section containing the course curriculum content
course - Course Course this curriculum belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the curriculum
contentCounts - CourseCurriculumContentCounts Count of the course curriculum content by type
Example
{
  "sections": [CourseSection],
  "course": Course,
  "versionedIdentifier": VersionedIdentifier,
  "contentCounts": CourseCurriculumContentCounts
}

DailySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for daily plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

DateInterval

Description

Type representing details about an interval of dates

Fields
Field Name Description
count - Int! The count of type in the interval
type - DateIntervalType! Type type of interval
Example
{"count": 123, "type": "DAY"}

DynamicWebContent

Description

The content of a component defined in the CMS

Fields
Field Name Description
contents - [DynamicWebContent] The associated sub content contained within this piece of content. This allows us to create a collection of nested web content
contentUrl - URL The URL to the associated content
contentUrlText - String The text for the URL to the piece of content
description - String The description text for the dynamic web content
heading - String The heading text for the dynamic web content
image - DynamicWebContentImage The text for the content label
labelText - String The image URL of the secondary image asset associated with this content, usually an icon, with optional alt text
secondaryImage - DynamicWebContentImage The image URL of the main image asset associated with this content, with optional alt text
trackingId - ID The tracking ID of the piece of content. To be used to uniquely identify the content in event tracking
Example
{
  "contents": [DynamicWebContent],
  "contentUrl": "https://www.udemy.com/",
  "contentUrlText": "Get the report",
  "description": "GenAI and leadership are at the core of today's skills-based economy. Get the 2024 Global Learning & Skills Trends Report to learn more.",
  "heading": "Top trends for the future of work",
  "image": DynamicWebContentImage,
  "labelText": "Current",
  "secondaryImage": DynamicWebContentImage,
  "trackingId": 4
}

DynamicWebContentImage

Description

The dynamic web image object. This combines the image URL and the alt text for the image for a11y purposes

Fields
Field Name Description
altText - String The alt text of the image for a11y purposes
url - URL The URL to the image asset
Example
{
  "altText": "VW logo",
  "url": "https://www.udemy.com/"
}

EBookLecture

Description

Lecture in form of an EBook (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

Entity

Description

Represents the entity who was affected by the event

Fields
Field Name Description
entityId - ID! The unique identifier for the entity
entityType - EntityType! The type of entity, such as an end user, group, or license
Example
{"entityId": "4", "entityType": "NA"}

ExternalLecture

Description

Lecture that refers to an external source (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

FeatureVariantAssignment

Description

Holds assigned feature variant

Fields
Field Name Description
featureCode - String! Feature code of assigned feature variant
configuration - JSON Configuration data of assigned feature variant
isInExperiment - Boolean Shows whether this feature variant is in experiment
experimentIds - [Int!]! List of experiment ids bucketed for current feature
isLocalDefault - Boolean! Indicates whether the presentation on the frontend is the actual response of the Experimentation Platform or not
Example
{
  "featureCode": "ab-testing",
  "configuration": "{\"key\":\"value\"}",
  "isInExperiment": true,
  "experimentIds": [123],
  "isLocalDefault": false
}

FileLecture

Description

Lecture in the form of a single file (deprecated)

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

HotAndNewBadge

Description

Represents a badge awarded to a hot and new learning product

Fields
Field Name Description
name - String! The localized name of the badge
Example
{"name": "Hot & New"}

InstructorImages

Description

Instructor images by varying dimensions

Fields
Field Name Description
px50x50 - String Instructor image with 50x50 dimensions in pixels
Example
{"px50x50": "https://img-c.udemycdn.com/user/50x50/11112134_64e1_2.jpg"}

InstructorRecommendation

Description

A wrapper type to include the recommended Instructor and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
instructor - CourseInstructor Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "instructor": CourseInstructor
}

Lab

Description

The Lab object

Fields
Field Name Description
id - ID! ID of the Lab
title - String! Title of the Lab
description - SafeHtml Top level description of the Lab
learningOutcomes - [String!]! Bulleted list of things a person will learn in this Lab
activities - [String!]! Bulleted list of things a person will accomplish in this Lab
prerequisites - [String!]! Bulleted list of things a person should already know in order to do this Lab
minEstimatedTime - DurationInSeconds! Lower bound of estimated time (in seconds) to complete Lab
maxEstimatedTime - DurationInSeconds! Upper bound of estimated time (in seconds) to complete Lab
instructors - [LabInstructor!]! The Lab's Instructors
topics - [Topic!] The Lab's topics
urlLanding - URL! The Lab's landing URL
metadata - LabMetaData Metadata associated with the lab
durationInSeconds - DurationInSeconds Average duration of lab in seconds
Example
{
  "id": "4",
  "title": "Lab 1: Create a VPC",
  "description": "<p>Learn how to create a VPC</p>",
  "learningOutcomes": ["VPC is created"],
  "activities": ["Create a VPC"],
  "prerequisites": ["AWS Account"],
  "minEstimatedTime": 19263,
  "maxEstimatedTime": 19263,
  "instructors": [LabInstructor],
  "topics": [Topic],
  "urlLanding": "https://www.udemy.com/",
  "metadata": LabMetaData,
  "durationInSeconds": 19263
}

LabInstructor

Description

Instructor for a lab

Fields
Field Name Description
id - ID! ID of the Instructor
name - String! Instructor's name
url - URL The URL to access the instructor page
images - InstructorImages! Instructor's image by varying pixels
Example
{
  "id": 4,
  "name": "Stephane Maarek",
  "url": "https://www.udemy.com/user/stephane-maarek/",
  "images": InstructorImages
}

LabMetaData

Description

MetaData for a lab

Fields
Field Name Description
trackingId - String Unique analytics ID for this instance of Lab returned from the server in this request
Example
{"trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ"}

LabRecommendation

Description

A wrapper type to include the recommended Lab and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
lab - Lab Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "lab": Lab
}

LabSearchResponse

Description

List of Labs and additional data about search response

Fields
Field Name Description
labs - [Lab!]! List of Lab objects
count - Int! Total number of Labs matching the search query and filters
filterOptions - [SearchAggregation!]! Identifies available search filter facets
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{
  "labs": [Lab],
  "count": 987,
  "filterOptions": [SearchAggregation],
  "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ"
}

LearningPathCatalogFullResponsePaged

Description

Catalog of all learning paths available to the client

Fields
Field Name Description
learningPaths - [LearningPath]! List of courses in the catalog
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "learningPaths": [LearningPath],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
}

LearningPathCatalogUpdatedResponsePaged

Description

Changes to catalog of all learning paths available to the client since last sync

Fields
Field Name Description
addedLearningPaths - [LearningPath]! Learning Paths added since last sync
updatedLearningPaths - [LearningPath]! Learning Paths updated since last sync
removedLearningPaths - [ID!]! Learning Path IDs for courses removed since last sync
syncToken - String! Sync Token to use for the next delta sync
cursor - String Cursor to get the next page. Null if no more results available
Example
{
  "addedLearningPaths": [LearningPath],
  "updatedLearningPaths": [LearningPath],
  "removedLearningPaths": [4],
  "syncToken": "Yjc3YTZlOTEtMmUzNy00MzcxLWJhZjQtZWQ5ZWM4MTJjODA4OjE2ODU2NDIxOTQ6bGVhcm5pbmctODIwMTEyNjMtMTVjMi00Njhh",
  "cursor": "WmpVMlkyWXpOV0V0WXpVM01TMDBOVEV5TFdJMVlUVXRPRFV4TURKa1pEQmpOREEwT2pFM01qYzVPRFkzTURBNk1UQTVPVFk9OjI0"
}

LearningPathCoursePortion

Description

Collection of curriculum items presented in a learning path as a one item

Fields
Field Name Description
id - ID! ID of the course portion
title - String! Title of the course portion
description - SafeHtml Description of the course portion
durationInSeconds - DurationInSeconds The duration of the course portion
items - [CurriculumItem] Items in the course portion
Example
{
  "id": 4,
  "title": "LLM Fine Tuning on OpenAI",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "items": [CurriculumItem]
}

LearningPathRecommendation

Description

A wrapper type to include the recommended Learning Path and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
learningPath - LearningPath Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "learningPath": LearningPath
}

LearningPathResource

Description

Learning Path Resource represents a link to another resource

Fields
Field Name Description
id - ID! ID of the learning path resource
title - String! Title of the learning path resource
description - SafeHtml Description of the learning path resource
durationInSeconds - DurationInSeconds The duration of the learning path resource
urlLanding - URL! Landing URL for the learning path resource
Example
{
  "id": 4,
  "title": "COURSE FAQs and DOWNLOADS HERE",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "urlLanding": "https://www.udemy.com/"
}

LearningPathSearchResponse

Description

List of LearningPath and additional data about search response

Fields
Field Name Description
paths - [ProLearningPath!]! Found learning for search request
count - Int! Total number of Paths matching the search query and filters
metadata - PathSearchResponseMetadata Metadata for whole search result used by front end
Example
{
  "paths": [ProLearningPath],
  "count": 123,
  "metadata": PathSearchResponseMetadata
}

LearningPathSection

Description

Learning Path Section represents a collection of items in a learning path

Fields
Field Name Description
id - ID! ID of the section
title - String! Title of the section
description - SafeHtml Description of the section
durationInSeconds - DurationInSeconds The duration of the section
itemCount - Int! Number of items in the section
items - [LearningPathItem] Items in the section
Example
{
  "id": "4",
  "title": "Improving LLM Performance",
  "description": SafeHtml,
  "durationInSeconds": 19263,
  "itemCount": 123,
  "items": [LearningPathItem]
}

LearningProductsPaged

Description

A collection of learning products for a partner

Fields
Field Name Description
page - Int! The current page number, 0 based
pageCount - Int! The total amount of pages. Calculated as (total result count / page size)
items - [LearningProduct!]! The contents of the collection, currently just courses. Items may be less than requested size if objects become unavailable
Example
{
  "page": 123,
  "pageCount": 987,
  "items": [LearningProduct]
}

LearningTestimonial

Description

The testimonial given relevant to a learning item or event

Fields
Field Name Description
content - String! The localized content of the Learning Testimonial
id - ID! The ID of the Learning Testimonial
relatedUrl - URL! The URL related to the Learning Testimonial
relatedUrlText - String! The localized text for the URL related to the Learning Testimonial
source - LearningTestimonialSource! The source of the Learning Testimonial
type - LearningTestimonialType! The type of Learning Testimonial
Example
{
  "content": "<p>Udemy was rated the most popular online course or certification program for learning how to code according to StackOverflow&rsquo;s 2023 Developer survey. </p>",
  "id": 4,
  "relatedUrl": "https://www.udemy.com/",
  "relatedUrlText": "<p><b>View Web Development courses</b></p>",
  "source": LearningTestimonialSource,
  "type": "CASE_STUDY"
}

LearningTestimonialSource

Description

The source of the learning testimonial

Fields
Field Name Description
image - URL! The URL to the image asset of the source for the Learning Testimonial
description - String Description text of the source for the Learning Testimonial (e.g., job title for Course Review types, etc)
name - String! Name of the source for the Learning Testimonial
Example
{
  "image": "https://www.udemy.com/",
  "description": "<p>Stack<b>Overflow</b></p>",
  "name": "Stack Overflow"
}

LectureImages

Description

Lecture images by varying dimensions

Fields
Field Name Description
height50 - String Lecture preview image with 50 pixels height
height75 - String Lecture preview image with 75 pixels height
height100 - String Lecture preview image with 100 pixels height
height320 - String Lecture preview image with 320 pixels height
height480 - String Lecture preview image with 480 pixels height
Example
{
  "height50": "https://img-c.udemycdn.com/lecture/50_H/32955996_03ea_2.jpg",
  "height75": "https://img-c.udemycdn.com/lecture/75_H/32955996_03ea_2.jpg",
  "height100": "https://img-c.udemycdn.com/lecture/100_H/32955996_03ea_2.jpg",
  "height320": "https://img-c.udemycdn.com/lecture/320_H/32955996_03ea_2.jpg",
  "height480": "https://img-c.udemycdn.com/lecture/480_H/32955996_03ea_2.jpg"
}

LectureRecommendation

Description

A wrapper type to include the recommended Lecture and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
lecture - Lecture Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "lecture": Lecture
}

LectureSearchResponse

Description

List of LectureResults and additional data about search response

Fields
Field Name Description
results - [LectureSearchResult]! List of LectureResult objects. The main search result is found in this list. This result is made nullable as a catch point for any errors that may occur downstream
metadata - LectureSearchResponseMetadata Metadata for whole search result used by front end
experimentResults - [FeatureVariantAssignment!]! For the request, shows experiment metadata result like bucking info, experiment IDs of assigned feature variants
Example
{
  "results": [LectureSearchResult],
  "metadata": LectureSearchResponseMetadata,
  "experimentResults": [FeatureVariantAssignment]
}

LectureSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
lectureExperimentVariant - String! Experiment variant for the lecture unit
lectureUnitOrder - Int! Order of the lecture unit at the search result page. The value is calculated according to query intent evaluation
labUnitOrder - Int! Order of the lab unit at the search result page. The value is calculated according to query intent evaluation
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
Example
{
  "lectureExperimentVariant": "control",
  "lectureUnitOrder": "3",
  "labUnitOrder": "6",
  "trackingId": "p55X_jHUQ7yNmI0HQ4TmgA"
}

LectureSearchResult

Description

Identifies each result for lecture search

Fields
Field Name Description
lecture - Lecture! Found lecture for lecture search request
course - Course! Containing course of the found lecture
trackingId - String Unique analytics ID for the found lecture
Example
{
  "lecture": Lecture,
  "course": Course,
  "trackingId": "p55X_jHUQ7yNmI0HQ4TmgA"
}

Lesson

Description

A lesson associated with a learning product

Fields
Field Name Description
id - LessonId! The id of the lesson
version - String! The version of the lesson
entityTag - Int! The entity tag for optimistic locking, to be provided, as read, when updating
locale - Locale! The lesson's original locale
created - DateTime The creation timestamp
updated - DateTime The last update timestamp
article - LessonArticle The lesson article whose fragments are mapped within the playable media
Example
{
  "id": {"idType": "ASSET_ID", "idValue": "12392384"},
  "version": "@1746636635859356",
  "entityTag": 4,
  "locale": "en-US",
  "created": "2007-12-03T10:15:30Z",
  "updated": "2007-12-03T10:15:30Z",
  "article": {
    "uuid": "a210e247-a33c-478c-82a6-1244cf695de1",
    "title": "Intro to Containers",
    "description": "This article explains what containers are",
    "locale": "en-US",
    "source": "AI",
    "takeaways": {
      "content": "- Containers are lightweight\n- Great for microservices"
    },
    "fragments": [
      {
        "timestamp": 10,
        "content": {
          "__typename": "Markdown",
          "content": "This part explains Docker basics."
        }
      },
      {
        "timestamp": 30,
        "content": {
          "__typename": "Markdown",
          "content": "Now let's dive into layers and images."
        }
      },
      {
        "timestamp": 60,
        "content": {
          "__typename": "CodeBlock",
          "language": "rust",
          "code": "hello.world()"
        }
      }
    ]
  }
}

LessonArticle

Description

A rich article whose fragments can map to timestamps within the playable media

Fields
Field Name Description
uuid - UUID! A uuid uniquely identifying an article
title - String! The title of the article
description - String! A description for the article
locale - Locale! The article's locale. Supports translation
takeaways - Markdown The key takeaways of an article in markdown format
fragments - [LessonArticleFragment!]! The article's fragments
source - ContentSourceType! The source of the article
Example
{
  "uuid": "a210e247-a33c-478c-82a6-1244cf695de1",
  "title": "some title",
  "description": "some description",
  "locale": "en-US",
  "takeaways": Markdown,
  "fragments": [LessonArticleFragment],
  "source": "AI"
}

LessonArticleFragment

Description

A fragment of an article with possible mapping to the lesson's playable media

Fields
Field Name Description
timestamp - OffsetInSeconds The offset in seconds within the playable media this fragment corresponds to
content - LessonArticleFragmentContent! The polymorphic content of the fragment
Example
{
  "timestamp": OffsetInSeconds,
  "content": Markdown
}

LessonId

Description

A flexible identification for a lesson

Fields
Field Name Description
idType - LessonIdType! The type of the id
idValue - ID! The id value
Example
{"idType": "ASSET_ID", "idValue": 4}

Markdown

Description

A micro-content representing markdown

Fields
Field Name Description
content - String! The markdown value
Example
{"content": "#section head\nsome paragraph"}

MetadataEntry

Description

Represents a key-value pair in metadata

Fields
Field Name Description
key - String! The key for the metadata entry, describing the type of information (e.g., 'ROLE')
value - String! The value for the metadata entry, containing the actual data associated with the key
Example
{"key": "actorEmail", "value": "awesomeActor@udemy.com"}

Money

Description

Money

Fields
Field Name Description
amount - Decimal Amount
currency - CurrencyCode Currency
Example
{"amount": "1234.5678", "currency": "AUD"}

MonthlySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for monthly plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

MoreRecommendationContextSectionsResponse

Description

Response returned when more RecommendationContextSections are queried for a RecommendationContext

Fields
Field Name Description
sections - [RecommendationContextSection!]! A slice of RecommendationContextSections available in a RecommendationContext. Slice boundaries are determined by the cursor and count parameters in the query
sectionsCursor - String Cursor to get more RecommendationContextSections from the RecommendationContext. Null, if there is no more
Example
{
  "sections": [RecommendationContextSection],
  "sectionsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

MoreRecommendationItemsResponse

Description

Response returned when more RecommendationItems are queried for a RecommendationUnit

Fields
Field Name Description
items - [RecommendationItem!]! A slice of RecommendationItems available in a RecommendationUnit. Slice boundaries are determined by the cursor and count parameters in the query
itemsCursor - String Cursor to get more RecommendationItems from this RecommendationUnit. Null, if there is no more
Example
{
  "items": [RecommendationItem],
  "itemsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

NewBadge

Description

Represents a badge awarded to a new learning product

Fields
Field Name Description
name - String! The localized name of the badge
Example
{"name": "New"}

OccupationRecommendation

Description

A wrapper type to include the recommended Occupation and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj"
}

OpenBadgeClass

Description

The OpenBadgeClass object. This implements the BadgeClass

Fields
Field Name Description
id - ID! ID of the BadgeClass
externalUrl - URL! IRI of the BadgeClass. IRI of OpenBadge specification
type - [String!]! Type of the BadgeClass. In most cases, this will simply be the string BadgeClass
name - String! Name of the BadgeClass
description - String! A short description of BadgeClass
image - BadgeClassImage! A PNG or SVG image of the BadgeClass
criteria - BadgeClassCriteria! Criteria document describing how to earn the BadgeClass (Certification)
issuer - BadgeClassIssuer! Organization that issued the badge
alignment - [BadgeClassAlignment!] An object describing which objectives or educational standards this badge aligns to, if any
tags - [String!]! A tag that describes the type of achievement. (Skills)
topic - Topic Topic of badge class. Can be null for badge classes uploaded by users
assertions - [BadgeAssertion!]! User's assertions for the badge class
subjectAreas - [BadgeCertificationSubjectArea!] Subject Area (recently renamed to Skill Area) for this BadgeClass (i.e. Data Science, CyberSecurity)
providers - [BadgeCertificationProvider!] Certification Provider for this Badge Class
examRegistrationUrls - [CertificationExamURL!]! Links to exam registration page for this certification (deprecated)
certificationExam - CertificationExam Exam registration details, if an exam is required for earning this Badge
totalAssertionsCount - Int! Total number of assertions issued for this badge class
isEnrolled - Boolean! Whether the current user is enrolled
Example
{
  "id": 4,
  "externalUrl": "https://www.udemy.com/",
  "type": ["CERTIFICATION"],
  "name": "CCIE Lifetime Emeritus - Data Center",
  "description": "Lifetime Emeritus status signifies that a member maintains an active status as a CCIE or as a CCIE Emeritus for 20 consecutive years in at least one CCIE track.",
  "image": BadgeClassImage,
  "criteria": BadgeClassCriteria,
  "issuer": BadgeClassIssuer,
  "alignment": [BadgeClassAlignment],
  "tags": ["CCIE", "Data Center"],
  "topic": Topic,
  "assertions": [BadgeAssertion],
  "subjectAreas": [BadgeCertificationSubjectArea],
  "providers": [BadgeCertificationProvider],
  "examRegistrationUrls": [CertificationExamURL],
  "certificationExam": CertificationExam,
  "totalAssertionsCount": 123,
  "isEnrolled": true
}

Organization

Description

A UB organization

Fields
Field Name Description
id - ID! The UB organization's unique identifier
images - OrganizationImages! Images for an organization
type - OrganizationType! Organization type
Example
{
  "id": "4",
  "images": OrganizationImages,
  "type": "UDEMY_BUSINESS"
}

OrganizationAuditLog

Description

Represents an audit log entry for an organization

Fields
Field Name Description
orgId - ID! The unique identifier for the organization associated with the audit log
timestamp - DateTime! The timestamp for when the event occurred
actor - Actor! The actor who performed the action logged in this entry
entity - Entity The entity who was affected by the action logged in this entry. This is optional as some events may not have a directly associated entity
event - AuditEvent! The event that occurred (e.g., 'USER_CREATED')
metadata - [MetadataEntry!]! Additional metadata associated with the event, as a list of key-value pairs
Example
{
  "orgId": 4,
  "timestamp": "2007-12-03T10:15:30Z",
  "actor": Actor,
  "entity": Entity,
  "event": "USER_CREATED",
  "metadata": [MetadataEntry]
}

OrganizationBackgroundImages

Description

Background images for an organization

Fields
Field Name Description
px960x540 - URL Background image size 960x540
px1920x1080 - URL Background image size 1920x1080
Example
{
  "px960x540": "https://www.udemy.com/",
  "px1920x1080": "https://www.udemy.com/"
}

OrganizationFaviconImages

Description

Favicon images for an organization

Fields
Field Name Description
px16x16 - URL Favicon image size 16x16
px32x32 - URL Favicon image size 32x32
Example
{
  "px16x16": "https://www.udemy.com/",
  "px32x32": "https://www.udemy.com/"
}

OrganizationImages

Description

Images for an organization

Fields
Field Name Description
background - OrganizationBackgroundImages Background images for an organization
logo - OrganizationLogoImages Logo images for an organization
favicon - OrganizationFaviconImages Favicon images for an organization
Example
{
  "background": OrganizationBackgroundImages,
  "logo": OrganizationLogoImages,
  "favicon": OrganizationFaviconImages
}

OrganizationLearningPath

Description

Learning Path object that belongs to an organization

Fields
Field Name Description
id - ID! ID of the learning path
title - String! Title of the learning path
description - SafeHtml Description of the learning path
itemCount - Int! Number of items in the learning path
numberOfEnrollments - Int! Total No of enrollments for the learning path
isEnrolled - Boolean! Is the user enrolled in this learning path or not
topics - [Topic!] Topics associated with the learning path
badges - [BadgeClass!] Badges of the learning path
urlLanding - URL! Landing page to view this LearningPath
trackingId - String Unique analytics ID for this instance of LearningPath returned from the server in this request
organization - Organization! Organization that owns the learning path
durationInSeconds - DurationInSeconds! The duration of the learning path
urlAutoEnroll - URL The URL to enroll in the learning path
sectionCount - Int! Number of sections in the learning path
sections - [LearningPathSection!] Sections of the learning path
Example
{
  "id": 4,
  "title": "Improving LLM Performance",
  "description": SafeHtml,
  "itemCount": 123,
  "numberOfEnrollments": 987,
  "isEnrolled": true,
  "topics": [Topic],
  "badges": [BadgeClass],
  "urlLanding": "https://www.udemy.com/",
  "trackingId": "nTjSznw2SbGLuE-Cd3T2Eg",
  "organization": Organization,
  "durationInSeconds": 19263,
  "urlAutoEnroll": "https://www.udemy.com/",
  "sectionCount": 123,
  "sections": [LearningPathSection]
}

OrganizationLogoImages

Description

Logo images for an organization

Fields
Field Name Description
width35 - URL Logo image W_35
width70 - URL Logo image W_70
Example
{
  "width35": "https://www.udemy.com/",
  "width70": "https://www.udemy.com/"
}

PathSearchResponseMetadata

Description

Contains info for front end related stuff and tracking info. This data is calculated by backend service and used by Udemy front end. If you are an external user, you shouldn't need this

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this query and result set; for this request
experimentResults - [FeatureVariantAssignment!]! For the request, shows experiment metadata result like bucking info, experiment IDs of assigned feature variants
Example
{
  "trackingId": "JjBqqc4LS2K9Ht_1LTpaMg",
  "experimentResults": [FeatureVariantAssignment]
}

PopularTopic

Description

Popular topic

Fields
Field Name Description
topic - Topic! A topic
subcategory - PopularTopicSubCategory Associated Subcategory
popularityType - TopicPopularityTypes The type of popularity associated with this topic
Example
{
  "topic": Topic,
  "subcategory": PopularTopicSubCategory,
  "popularityType": "POPULAR"
}

PopularTopicSubCategory

Description

Topic SubCategory

Fields
Field Name Description
id - ID! ID of the subcategory
name - String! Name of the subcategory
Example
{"id": "4", "name": "Data Science"}

PracticeAssignment

Description

Assigment test with multiple-choice and free-from questions reviewed by instructors

Fields
Field Name Description
id - ID! The Id of the assignment
title - String! The title of the assignment
description - String! Description of the assignment
urlLanding - URL! Landing page to view this PracticeAssignment
versionedIdentifier - VersionedIdentifier! Versioned identifier of the practice assignment
course - Course Course this practice assignment belongs to
Example
{
  "id": "4",
  "title": "Practice Assignment 1",
  "description": "Practice Assignment 1. AWS Certified Solutions Architect Associate",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

PracticeTest

Description

Practice test that is more detailed than a Quiz

Fields
Field Name Description
id - ID! The Id of the practice test
title - String! The title of the practice test
minimumPassingScore - Int! Percentage required to pass (0 - 100)
randomized - Boolean! Whether the question and answer order is randomized
urlLanding - URL! Landing page to view this PracticeTest
versionedIdentifier - VersionedIdentifier! Versioned identifier of the practice test
course - Course Course this practice test belongs to
Example
{
  "id": 4,
  "title": "Practice Test 1. AWS Certified Solutions Architect Associate",
  "minimumPassingScore": 123,
  "randomized": false,
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

PresentationLecture

Description

Presentation Lecture for Udemy Business

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/enroll",
  "urlLanding": "https://www.udemy.com/course/aws-certified-solutions-architect-associate/learn/lecture/23206582/?couponCode=AWSARCH-2021",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

ProLearningPath

Description

The LearningPath only available for PRO subscriptions

Fields
Field Name Description
id - ID! ID of the learning path
title - String! Title of the learning path
description - SafeHtml Description of the learning path
itemCount - Int! Number of items in the learning path
numberOfEnrollments - Int! Total No of enrollments for the learning path
isEnrolled - Boolean! Is the user enrolled in this learning path or not
topics - [Topic!] Topics associated with the learning path
badges - [BadgeClass!] Badges of the learning path
urlLanding - URL! Landing page to view this LearningPath
trackingId - String Unique analytics ID for this instance of LearningPath returned from the server in this request
durationInSeconds - DurationInSeconds! The duration of the learning path
urlAutoEnroll - URL The URL to enroll in the learning path
sectionCount - Int! Number of sections in the learning path
sections - [LearningPathSection!] Sections of the learning path
Example
{
  "id": "4",
  "title": "AWS Certified Solutions Architect Associate Learning Path",
  "description": "Path to AWS Certified Solutions Architect Associate",
  "itemCount": 123,
  "numberOfEnrollments": 123,
  "isEnrolled": false,
  "topics": [Topic],
  "badges": [BadgeClass],
  "urlLanding": "https://www.udemy.com/",
  "trackingId": "nTjSznw2SbGLuE-Cd3T2Eg",
  "durationInSeconds": 19263,
  "urlAutoEnroll": "https://www.udemy.com/",
  "sectionCount": 123,
  "sections": [LearningPathSection]
}

Quiz

Description

Quiz with simple questions and multiple choice answers

Fields
Field Name Description
id - ID! The Id of the quiz
title - String! The title of the quiz
description - String An optional description
urlLanding - URL! Landing page to view this Quiz
versionedIdentifier - VersionedIdentifier! Versioned identifier of the quiz
course - Course Course this quiz belongs to
Example
{
  "id": "4",
  "title": "Quiz 1. AWS Certified Solutions Architect Associate",
  "description": "Timed quiz for AWS Certified Solutions Architect Associate",
  "urlLanding": "https://www.udemy.com/",
  "versionedIdentifier": VersionedIdentifier,
  "course": Course
}

RecommendationContext

Description

This is a top level grouping comprising all recommendations queried by a context code (ID of this object).

Usually, this corresponds to the entire page of the application. In that case, there would be just one recommendation context on a single page. The biggest advantage of serving all recommendations in one response, is the ability to run unit ranking and deduplication comprehensively for the entire recommendation context.

Even though, it is common to see a single page of the application uses only one recommendation context, it is not an obligation. The 'page' and 'context' concepts are decoupled. Having multiple contexts on a page might be acceptable if the trade-offs about compromising comprehensive ranking and deduplication are evaluated.

RecommendationContext doesn't directly contain a list of RecommendationItems. Instead, it has a list of sections. The UI should follow this grouping while rendering the recommendations

Fields
Field Name Description
id - ID! Also known as 'Context Code'
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation context is served
sections - [RecommendationContextSection!]! First slice of RecommendationContextSections available in this RecommendationContext. The field 'sectionsCursor' is used to fetch a new slice of sections starting with the next section after this slice
sectionsCursor - String Cursor to get more RecommendationContextSections from the RecommendationContext. Null, if there is no more
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "sections": [RecommendationContextSection],
  "sectionsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago="
}

RecommendationContextResponse

Description

Response returned when a RecommendationContext is queried

Fields
Field Name Description
recommendationContext - RecommendationContext! The actual recommendation context object
Example
{"recommendationContext": RecommendationContext}

RecommendationSourceObject

Description

A type to specify what objects were used as a source object (seed) for a recommendation unit

Fields
Field Name Description
id - ID! ID of the actual item. For example, the ID of a course
type - RecommendationSourceObjectType! Type of the actual item. For example, COURSE
title - String Title of the actual source object item, if applicable. E.g. title of a course
description - String Description of the actual item, if applicable. E.g. description of a course
relativeUrl - String Relative URL of the actual item, if applicable. It excludes the domain. E.g. /topic/web-development/
Example
{
  "id": "4",
  "type": "COURSE",
  "title": "Python",
  "description": "Python Topic Description",
  "relativeUrl": "/topic/python/"
}

RecommendationUnit

Description

Finest grained grouping of recommendations. Each recommendation unit corresponds to a specific algorithm, source object (recommendation seed), and recommendation item type

Fields
Field Name Description
id - ID!

ID of the RecommendationUnit object that will be unique among all units inside a recommendation context including the member units of unit groups.

In addition, this ID will be unique for all units in the initial 'recommendations' query response and the subsequent 'moreRecommendationContextSections' queries

title - String Localized title that is also interpolated with source object titles if necessary. For example, "Newest courses in 'JavaScript'"
rawTitle - String Some unit titles contain titles of source objects like "Newest courses in 'JavaScript'". If frontend needs to insert source object links instead of just source object titles, this field can be used instead of the title field. It will give "Newest courses in '{}'" instead of "Newest courses in 'JavaScript'"
viewType - String Can optionally be entered on Tapen to give a hint to frontend about how it should be presented
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation context is served
items - [RecommendationItem!]! First slice of items available in this RecommendationUnit. The field 'itemsCursor' is used to fetch a new slice of items starting with the next item after this slice
itemsCursor - String Cursor to get more RecommendationItems from this RecommendationUnit. Null, if there is no more
sourceObjects - [RecommendationSourceObject!]

If the recommendation is seeded with some other objects such as viewed course, label affinity, or search query, etc., they are listed here.

Title and URLs of these source objects should be used to build a HTML title with links if the title field has template placeholders ({})

Example
{
  "id": 4,
  "title": "Courses in 'Python'",
  "rawTitle": "Courses in '{}'",
  "viewType": "default",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "items": [RecommendationItem],
  "itemsCursor": "WkdObE1XTTJOR0l0WW1RME5pMDBZago=",
  "sourceObjects": [RecommendationSourceObject]
}

RecommendationUnitGroup

Description

Group of units that should be presented together

Fields
Field Name Description
id - ID!

ID of the RecommendationUnitGroup object that will be unique among all sections inside a recommendation context.

In addition, this ID will be unique for all sections in the initial 'recommendations' query response and the subsequent 'moreRecommendationContextSections' queries

title - String Localized title
viewType - String Can optionally be entered on Tapen to give a hint to frontend about how it should be presented
units - [RecommendationUnit!]! Nested units in this unit group
Example
{
  "id": "4",
  "title": "Courses recommended based on your occupation",
  "viewType": "default",
  "units": [RecommendationUnit]
}

Review

Description

A review of a learning product

Fields
Field Name Description
learningProductType - LearningProductType! The type of learning product being reviewed
text - String! The review text
urlLearningProduct - URL! The URL of the reviewed learning product
Example
{
  "learningProductType": "ASSESSMENT",
  "text": "This course was a great introduction to AWS. I learned a lot and I'm excited to continue learning more about AWS.",
  "urlLearningProduct": "https://www.udemy.com/"
}

SearchAggregation

Description

Identifies available search filter facets

Fields
Field Name Description
label - String! Label for this type/group of aggregation; e.g. 'Topic'
key - String! Key argument that can be passed to query to filter by this option
buckets - [SearchAggregationOption!]! Available values for this aggregation
Example
{
  "label": "Subtitles",
  "key": "closed_caption_locale_languages",
  "buckets": [SearchAggregationOption]
}

SearchAggregationOption

Description

One of the available options within a search facet type

Fields
Field Name Description
value - String! Value argument that can be passed to query to filter by this option
label - String! Human-readable label for this filter option
countWithFilterApplied - Int! Number of results if this filter option were to be applied
key - String! Key that can be passed to the query to filter by this option
isSelected - Boolean! Whether this filter option is selected or not
Example
{
  "value": "en",
  "label": "EN",
  "countWithFilterApplied": 123,
  "key": "lang",
  "isSelected": true
}

SearchAutocompleteLogItem

Description

Search Log suggestion for autocomplete

Fields
Field Name Description
title - String! Phrase that will be shows as a suggestion
sectionLabel - String Which section this log item belongs to. It will be used to group the items
Example
{"title": "aws", "sectionLabel": "Popular searches"}

SearchAutocompleteSuggestion

Description

A simple autocomplete item with the tracking metadata

Fields
Field Name Description
trackingId - String! Search analytics tracking id; for uniquely identifying this item
resultTrackingId - String! Search analytics tracking id; for uniquely identifying whole result set; for this request
item - SearchAutocompleteItem Search Autocomplete suggestion for autocomplete
Example
{
  "trackingId": "S8HU-xXXQ_OZ_hLKlVvOEQ",
  "resultTrackingId": "p55X_jHUQ7yNmI0HQ4TmgA",
  "item": Course
}

SearchQuerySuggestion

Description

Represents a search suggestion for a search

Fields
Field Name Description
query - String The suggested query based on the original search input
type - SearchQuerySuggestionType The type of search query suggestion
Example
{"query": "python", "type": "REWRITE"}

SubCategoryRecommendation

Description

A wrapper type to include the recommended SubCategory and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
subCategory - SubCategory Underlying object of the recommendation to get more information about it
Example
{
  "id": "4",
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "subCategory": SubCategory
}

SubcategoryNavListItem

Description

Subcategory navigation list item

Fields
Field Name Description
subcategory - CourseSubCategory! The subcategory this item represents
children - [NavListItem]! List of child navigation items
Example
{
  "subcategory": CourseSubCategory,
  "children": [NavListItem]
}

SubscriptionPlan

Description

A Subscription plan to access a catalog of Udemy content

Fields
Field Name Description
id - ID! ID of the subscription plan:
productType - SubscriptionPlanProductType! Type of subscription plan being offered
urlLearnMore - URL! Learn more url for a given plan
urlExpressCheckout - URL! Express checkout url for given plan
urlTermsOfUse - URL! Terms and Conditions url for a given plan
priceOptions - [SubscriptionPlanPricingOptionItem!]! Computed price options for given plan
Arguments
licenseCount - Int
marketingURL - URL
contentCollections - [ContentCollection!]! List of content groups included in a given plan
Example
{
  "id": "4",
  "productType": "CONSUMERSUBSCRIPTION",
  "urlLearnMore": "https://www.udemy.com/",
  "urlExpressCheckout": "https://www.udemy.com/",
  "urlTermsOfUse": "https://www.udemy.com/",
  "priceOptions": [DailySubscriptionPlanPricingOption],
  "contentCollections": [ContentCollection]
}

SubscriptionPlanDiscount

Description

Contains information about the discount metadata for a given subscription plan price option

Fields
Field Name Description
appliedDiscounts - [SubscriptionPlanDiscountDetails!]! List of applied discounts on the plan price option data
Example
{"appliedDiscounts": [SubscriptionPlanDiscountDetails]}

SubscriptionPlanDiscountDateIntervalType

Description

Contains information on the start and end perioid for the discount interval type can be month/year

Fields
Field Name Description
start - Int! Start period of the discounted data
end - Int! End period of the discounted data
type - DateIntervalType! Interval type for the discounted period
duration - Int! Total duration of the discount period
Example
{"start": 987, "end": 987, "type": "DAY", "duration": 123}

SubscriptionPlanDiscountDetails

Description

Discount details for applied discount

Fields
Field Name Description
code - String! Coupon code/campaign code for the discount applied
sourceType - DiscountSourceType! Type of coupon code. will be either one of udemy/customer coupon
discountType - SubscriptionPlanDiscountType! Specific discount type for subscriptions ex: trial/price/seat discounts
data - SubscriptionPlanDiscountDataItem! Discount data for the specific discount type
isRemovable - Boolean! Flag for the applied code. tells if the applied discount can be removed on FE
Example
{
  "code": "DEAL-CODE",
  "sourceType": "GENERAL_COUPON",
  "discountType": "TRIAL_DISCOUNT",
  "data": SubscriptionPlanTrialDiscountData,
  "isRemovable": false
}

SubscriptionPlanLicenseContext

Description

Contains information about the license context for a given subscription plan price option

Fields
Field Name Description
unitPrice - Money! The unit price of the subscription price plan option based on provided requested count from request
licenseCount - Int! License count for the subscription plan option
defaultLicenseCount - Int! Default license count to be offered for purchase for given subscription plan option
minimumLicenseCount - Int! Minimum license count for purchase for given subscription plan option
maximumLicenseCount - Int! Maximum license count for purchase for given subscription plan option
Example
{
  "unitPrice": Money,
  "licenseCount": 987,
  "defaultLicenseCount": 123,
  "minimumLicenseCount": 987,
  "maximumLicenseCount": 123
}

SubscriptionPlanPrice

Description

Price data for plan pricing options

Fields
Field Name Description
list - Decimal! List price for the pricing option
discount - Decimal Discount price for the pricing option
monthly - Decimal Monthly price for the annual pricing option, for monthly plan price option will be equal to list price
annualSavings - Decimal The annual savings amount for the subscription price plan when compared to monthly plans. calculated on pricing backend can be null
discountMonthly - Decimal The monthly price for the discounted annual price option
discountAnnualSavings - Decimal The annual savings amount on discounted annual price for the subscription price plan when compared to monthly plans
currency - CurrencyCode Currency
Example
{
  "list": "1234.5678",
  "discount": "1234.5678",
  "monthly": "1234.5678",
  "annualSavings": "1234.5678",
  "discountMonthly": "1234.5678",
  "discountAnnualSavings": "1234.5678",
  "currency": "AUD"
}

SubscriptionPlanPriceDiscountData

Description

Contains information on the plan price discount

Fields
Field Name Description
type - SubscriptionPlanPriceDiscountType! Discount type for the price can be percentage off/fixed price discount
value - Decimal! Discount value applied on the actual price
interval - SubscriptionPlanDiscountDateIntervalType! Contains information on the start and end period for discount
Example
{
  "type": "FIXED",
  "value": "1234.5678",
  "interval": SubscriptionPlanDiscountDateIntervalType
}

SubscriptionPlanTrialDiscountData

Description

contains information on the trial discount if available

Fields
Field Name Description
days - Int! The total trial days offered as part of the discount
Example
{"days": 987}

SubscriptionTrial

Description

Type representing details about the trial subscription offer available for a given user and plan

Fields
Field Name Description
dateInterval - DateInterval! The length of the trial available to a user for a subscription plan
Example
{"dateInterval": DateInterval}

TopRatedCategoryTopicBadge

Description

Represents a badge awarded to a top-rated category topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
category - Category The category associated with the badge
Example
{
  "name": "Highest Rated",
  "topic": Topic,
  "category": Category
}

TopRatedSubcategoryBadge

Description

Represents a badge awarded to a top-rated subcategory

Fields
Field Name Description
name - String! The localized name of the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{"name": "Highest Rated", "subcategory": BadgeSubCategory}

TopRatedSubcategoryTopicBadge

Description

Represents a badge awarded to a top-rated subcategory topic

Fields
Field Name Description
name - String! The localized name of the badge
topic - Topic The topic associated with the badge
subcategory - BadgeSubCategory The subcategory associated with the badge
Example
{
  "name": "Highest Rated",
  "topic": Topic,
  "subcategory": BadgeSubCategory
}

Topic

Description

Topic

Fields
Field Name Description
id - ID! ID of topic
name - String! Title of topic (Python, Programming Languages)
url - URL! Web url of the topic page
groups - [TopicGroup!]! Topic groups this topic belongs to
questionsAndAnswers - [TopicQuestionAndAnswer!]! A collection of question and answer pairs with optional link for additional context
Example
{
  "id": 4,
  "name": "Python",
  "url": "https://www.udemy.com/topic/python",
  "groups": [TopicGroup],
  "questionsAndAnswers": [TopicQuestionAndAnswer]
}

TopicGroup

Description

Topic Group

Fields
Field Name Description
id - ID! ID of topic group
name - String! Name of topic group
Example
{"id": 4, "name": "Programming Languages"}

TopicQuestionAndAnswer

Description

A question and answer pair with optional link for additional context

Fields
Field Name Description
id - ID! ID of the question and answer
question - String! The question text
answer - String! The answer text
urlReadMore - URL The URL for additional information about the question and answer
linkText - String Text to display for the link to additional information about the question and answer
Example
{
  "id": "499882",
  "question": "What is the difference between a list and a tuple?",
  "answer": "A list is mutable, a tuple is immutable.",
  "urlReadMore": "https://blog.udemy.com/javascript-tutorial-learn-the-basics/",
  "linkText": "Learn more about JavqScript"
}

TopicRecommendation

Description

A wrapper type to include the recommended Topic (aka. Label) and some additional fields about its recommendation

Fields
Field Name Description
id - ID! This is the ID of this wrapper object. This ID is different from the ID of the underlying recommended object to provide uniqueness across item types
trackingId - String! Tracking ID generated in the backend. Useful to relate tracking events generated in the backend with the tracking events generated in the frontend. The value will change each time a recommendation item is served
topic - Topic Underlying object of the recommendation to get more information about it
Example
{
  "id": 4,
  "trackingId": "ZGNlMWM2NGItYmQ0Ni00Yj",
  "topic": Topic
}

User

Description

A Udemy user

Fields
Field Name Description
id - ID! Id of the user
Example
{"id": 4}

VersionedIdentifier

Description

A versioned identifier type

Fields
Field Name Description
id - ID! ID of the entity
version - String Versioned of the entity, not set when not versioned
Example
{"id": "4", "version": "s@1720737548772424"}

VideoLecture

Description

Video lecture

Fields
Field Name Description
id - ID! Id of the video lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": "4",
  "title": "Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com//course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

VideoMashupLecture

Description

Mashup lecture has both video and a presentation

Fields
Field Name Description
id - ID! Id of the lecture
title - String! Lecture title
images - LectureImages! Images by their dimensions
urlAutoEnroll - URL! The URL to access the lecture on the auto-enroll page
urlLanding - URL! Landing page to view this Lecture
thumbnail - URL The URL of the lecture thumbnail
durationInSeconds - DurationInSeconds! Total duration of the lecture's content in seconds
course - Course The Course this lecture belongs to
versionedIdentifier - VersionedIdentifier! Versioned identifier of the lecture
Example
{
  "id": 4,
  "title": "Course Introduction - AWS Certified Solutions Architect Associate",
  "images": LectureImages,
  "urlAutoEnroll": "https://www.udemy.com/course/subscribe/?courseId=3082678&lectureId=20020880",
  "urlLanding": "https://www.udemy.com//course/aws-certified-solutions-architect-associate-step-by-step/learn/lecture/20020880",
  "thumbnail": "https://www.udemy.com/",
  "durationInSeconds": 19263,
  "course": Course,
  "versionedIdentifier": VersionedIdentifier
}

WeeklySubscriptionPlanPricingOption

Description

Price option for computed price plan. Will be returned for weekly plans

Fields
Field Name Description
id - ID! ID of the price option:
listPrice - Money! The list price of the subscription price plan based on provided requested count from request
renewalInterval - DateInterval! Interval for renewing the subscription plan ie the length of the subscription plan
trial - SubscriptionTrial Field containing details about the trial subscription offer for a given user. Null indicates no trial is available
licenseContext - SubscriptionPlanLicenseContext Contains information about the license context for a given subscription plan price option
discount - SubscriptionPlanDiscount Contains information about the discount context for a given subscription plan price option
discountTrial - SubscriptionTrial Field containing details about the discounted trial subscription offer for a given user. Null indicates no trial is available
price - SubscriptionPlanPrice Field showing the prices for the option
Example
{
  "id": "4",
  "listPrice": Money,
  "renewalInterval": DateInterval,
  "trial": SubscriptionTrial,
  "licenseContext": SubscriptionPlanLicenseContext,
  "discount": SubscriptionPlanDiscount,
  "discountTrial": SubscriptionTrial,
  "price": SubscriptionPlanPrice
}

Scalars

AverageRating

Description

Weighted average rating. Ranges from 0 to 5.0

Example
4.5

Boolean

Description

The Boolean scalar type represents true or false

CourseDuration

Description

How long the course takes to complete, e.g. 5h 21m 3s

Example
"5h 21m 3s"

Date

Description

The Date scalar type

Example
"2007-12-03"

DateTime

Description

A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar

Example
"2007-12-03T10:15:30Z"

Decimal

Description

The Decimal scalar type

Example
"1234.5678"

DurationInSeconds

Description

Duration between start and end in seconds, e.g. 19263

Example
19263

EmailAddress

Description

A field whose value conforms to the standard internet email address format as specified in HTML Spec: https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address

Example
"test@test.com"

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID

Example
4

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1

Example
123

JSON

Description

The JSON scalar type represents JSON values as specified by ECMA-404

Example
"{"key":"value"}"

Locale

Description

The locale in the format of a BCP 47 (RFC 5646) standard string

Example
"en_US"

MaxResultsPerPage

Description

A number that can be used for fetching pages of information. It must be more than 0, and less than or equal to 250

Example
100

NonNegativeFloat

Description

Floats that will have a value of 0 or more

Example
123.45

NonNegativeInt

Description

Integers that will have a value of 0 or more

Example
123

OffsetInSeconds

Description

An offset measured in seconds. e.g. 30

Example
OffsetInSeconds

PositiveInt

Description

Integers that will have a value greater than 0

Example
123

SafeHtml

Description

A field which may contain HTML stripped of any <script> and <iframe> tags

Example
SafeHtml

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text

Example
"abc123"

Timestamp

Description

The javascript Date as integer. Type represents date and time as number of milliseconds from start of UNIX epoch

Example
1592577642

URL

Description

A field whose value conforms to the standard URL format as specified in RFC3986: https://www.ietf.org/rfc/rfc3986.txt

Example
"https://www.udemy.com/"

UUID

Description

A field whose value is a generic Universally Unique Identifier: https://en.wikipedia.org/wiki/Universally_unique_identifier

Example
"0a449bff-8cbe-4abb-9d17-3d854b4c293f"