Fetch Progress of Courses within a Learning Plan

This API provides the progress of all courses within a learning plan for an individual learner.

Request URL:

 https://people.zoho.com/api/v1/learners/<learnerId>/learning-plans/<planId>/courses/progress

Possible Operation Types:

READ - Only to read data

Request Parameters

ParametersValuesAllowedDefaultDescriptionMandatory
startIndexInt1starting indexNo
Limitint (25-100)25No. of courses to be fetchedNo

View complete list of LMS API error codes

Threshold Limit: 30 requests | Lock period: 5 minutes

Threshold Limit - Number of API calls allowed within a minute.
Lock Period - Wait time before consecutive API requests.

REQUESTS

Copiedimport okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class Main {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();

        String url = "https://people.zoho.com/api/v1/learners/100002000000040623/learning-plans/100002000000046167/courses/progress";

        Request request = new Request.Builder()
            .url(url)
            .get()
            .addHeader("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN")
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
Copiedconst url = "https://people.zoho.com/api/v1/learners/100002000000040623/learning-plans/100002000000046167/courses/progress";

fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN"
  }
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error("Error:", err));
Copiedcurl -X GET "https://people.zoho.com/api/v1/learners/100002000000040623/learning-plans/100002000000046167/courses/progress" \
  -H "Authorization: Zoho-oauthtoken YOUR_ACCESS_TOKEN"
Copiedurl = "https://people.zoho.com/api/v1/learners/100002000000040623/learning-plans/100002000000046167/courses/progress";
headers = map();
headers.put("Authorization", "Zoho-oauthtoken YOUR_ACCESS_TOKEN");
response = getUrl(url, headers);
info response;
Copiedimport requests

url = "https://people.zoho.com/api/v1/learners/100002000000040623/learning-plans/100002000000046167/courses/progress"
headers = {
    "Authorization": "Zoho-oauthtoken YOUR_ACCESS_TOKEN"
}

response = requests.get(url, headers=headers)
print(response.json())

HEADER

CopiedAuthorization: Zoho-oauthtoken 1000.8cb99dxxxxxxxx9be93.9b8xxxxxxf

SAMPLE REQUEST

Copiedhttps://people.zoho.com/api/v1/learning-plans/100002000000046167/members

SAMPLE RESPONSE

Copied{
    "learningPlans": [
        {
            "userInfo": {
                "planuserId": "100002000000046189",
                "isUserJoinedPlan": true,
                "isUserCompletedPlan": false,
                "userType": "1",
                "userId": "100002000000040623",
                "isPlanAdmin": false,
                "enrolledTime": "null"
            },
            "planId": "100002000000046167",
            "planInfo": {
                "duration": "30",
                "publishState": "1",
                "planImageInfo": {
                    "isSystem": true,
                    "image": "23",
                    "imageUrl": "/newhr/images/lmsbg/cat23.png"
                },
                "activeCourseCount": "2",
                "planName": "L1",
                "createdTime": "1755596717804",
                "planId": "100002000000046167",
                "disabled": "false",
                "durationType": "0",
                "mandatoryCourseCount": "1",
                "isPlanOwner": false
            }
        }
    ],
    "message": "Learning plans fetched successfully",
    "status": 200
}