Program Progress API — Queries

Retrieve program enrollment and progress records for the authenticated company.

Endpoint
POSThttps://api.udacity.com/api/public/api/v1/program-progress/graphql

programProgress

Required scope: COMPANY:<companyId>

Input fields

queryString

Free-text search (matches on user email, name, etc.).

filterProgramProgressFilter

Filter criteria.

orderByProgramProgressOrderBy

Field to sort results by.

orderSortOrder

Sort direction (ASC or DESC).

firstInt

Maximum results to return (default 50).

afterString

Cursor for forward pagination.

Filter fields

programKey[ID!]

Filter by program keys.

programType[ProgramType!]

Filter by program type.

enrollmentStatus[EnrollmentStatus!]

Filter by enrollment status.

onTrackStatus[OnTrackStatus!]

Filter by on-track status.

learningPlanId[ID!]

Filter by associated learning plan IDs.

Returns: ProgramProgressConnection!

Signature
type Query {
  programProgress(input: ProgramProgressInput!): ProgramProgressConnection!
}
Query
query GetProgramProgress {
  programProgress(input: {
    query: "jamie"
    filter: {
      enrollmentStatus: [ENROLLED]
      programType: [NANODEGREE]
    }
    orderBy: LAST_ACTIVE
    order: DESC
    first: 10
  }) {
    totalCount
    pageInfo { hasNextPage endCursor }
    edges {
      node {
        userId
        userEmail
        userFirstName
        userLastName
        enrollmentStatus
        enrolledAt
        programKey
        programVersion
        programType
        completionPercentage
        projectsRequiredTotal
        projectsRequiredCompleted
        learnerHours
        onTrackStatus
        lastActiveAt
        learningPlanId
      }
    }
  }
}
Response
{
  "data": {
    "programProgress": {
      "totalCount": 87,
      "pageInfo": {
        "hasNextPage": true,
        "endCursor": "eyJpZCI6IjEwIn0="
      },
      "edges": [
        {
          "node": {
            "userId": "8a386eac-5a18-4229-88a4-add7f1ee600f",
            "userEmail": "j.martinez@acmecorp.com",
            "userFirstName": "Jamie",
            "userLastName": "Martinez",
            "enrollmentStatus": "ENROLLED",
            "enrolledAt": "2026-01-15T10:30:00Z",
            "programKey": "nd00113",
            "programType": "NANODEGREE",
            "completionPercentage": 65.0,
            "onTrackStatus": "ON_TRACK",
            "lastActiveAt": "2026-03-10T14:30:00Z"
          }
        }
      ]
    }
  }
}