Learning Plan Progress API — Queries
Retrieve per-user learning plan progress records for the authenticated company.
Endpoint
POSThttps://api.udacity.com/api/public/api/v1/learning-plan-progress/graphql
learningPlanProgress
Required scope: COMPANY:<companyId>
Input fields
planIdID!Required
The learning plan ID to retrieve progress for.
filterLearningPlanProgressFilter
Filter criteria.
orderByLearningPlanProgressOrderBy
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
userIds[ID!]
Filter by specific user IDs.
subscriptionStatus[SubscriptionStatus!]
Filter by subscription status.
Returns: LearningPlanProgressConnection!
SignatureQueryVariablesResponse
type Query {
learningPlanProgress(input: LearningPlanProgressInput!): LearningPlanProgressConnection!
}query GetLearningPlanProgress($planId: ID!) {
learningPlanProgress(input: {
planId: $planId
filter: { subscriptionStatus: [ACTIVE] }
orderBy: LAST_ACTIVE_AT
order: DESC
first: 10
}) {
totalCount
pageInfo { hasNextPage endCursor }
edges {
node {
userId
planId
subscriptionStatus
requiredStepsTotal
requiredStepsCompleted
assessmentsComplete
startedAt
lastActiveAt
completedAt
createdAt
updatedAt
}
}
}
}{
"planId": "YOUR_PLAN_ID"
}{
"data": {
"learningPlanProgress": {
"totalCount": 48,
"pageInfo": {
"hasNextPage": true,
"endCursor": "eyJpZCI6IjEwIn0="
},
"edges": [
{
"node": {
"userId": "8a386eac-5a18-4229-88a4-add7f1ee600f",
"planId": "fd6f0490-2072-43b0-b1d0-7ee82fe96df2",
"subscriptionStatus": "ACTIVE",
"requiredStepsTotal": 5,
"requiredStepsCompleted": 3,
"assessmentsComplete": 2,
"startedAt": "2026-01-15T10:00:00Z",
"lastActiveAt": "2026-03-10T14:30:00Z",
"completedAt": null,
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-03-10T14:30:00Z"
}
}
]
}
}
}