# Get Learner(s)

<mark style="color:blue;">`GET`</mark> `/v2/finplus/debtmanagement/learners` `(/{id})`

Use this endpoint to fetch a **school's learners** and optionally include the **parent info** and the **accountable person's** **details**.

By **default**, only learners with **active accounts** (current learners or accounts with an outstanding balance) will be returned. You can use the `all_accounts` query parameter to include learners for **all accounts** (includes left learners and zero-balance accounts).

To include **parent information** in the response, set the `include_parents` query parameter. For including the **accountable person's details**, set the `include_accountable_person` query parameter.

Optionally it is possible to filter on a specific `learner_id`, `debtor_code` or `accountable_person_id`. &#x20;

{% hint style="info" %}
By default, this endpoint returns a **collection of records**, wrapped in a `data` array. To retrieve a **single record**, provide its **ID in the URL**, which will return a **single object** instead of a collection.
{% endhint %}

### Pagination <a href="#pagination" id="pagination"></a>

The response data includes a `meta` object that contains **pagination-specific metadata**. You can use the following query parameters to **control pagination**:

* **limit**: This parameter allows you to override the default limit of records returned, up to the `max_allowed_limit` specified in the response's `meta` object.
* **cursor**: If the `meta` object contains a `next_cursor` field, it indicates that more records are available. To fetch the next set of records, include the `cursor` parameter in your request with the value of `next_cursor`. If the `next_cursor` field is not present, it means there are no more records to retrieve.
* **reverse\_order**: This parameter can be used to reverse the order in which the data is returned, useful for fetching the latest records first.

### Path Parameters

<table><thead><tr><th width="177.54296875">Name</th><th width="134">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>{id}</code></td><td>Integer</td><td>Optionally provide the <strong>Learner ID</strong> for retrieving a single record.</td></tr></tbody></table>

### Request Headers

<table><thead><tr><th width="198.2572021484375">Name</th><th width="121">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>HTTP-X-USERNAME</code><mark style="color:red;">*</mark></td><td>String</td><td>As provided by d6</td></tr><tr><td><code>HTTP-X-PASSWORD</code><mark style="color:red;">*</mark></td><td>String</td><td>As provided by d6</td></tr><tr><td><code>HTTP-X-SCHOOLID</code><mark style="color:red;">*</mark></td><td>Integer</td><td>The unique identifier of the school for which the data is being queried.</td></tr></tbody></table>

### Query Parameters

<table><thead><tr><th width="258">Name</th><th width="96.51434326171875">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>debtor_code</code></td><td>Integer</td><td>To filter on a specific <strong>Debtor Code</strong></td></tr><tr><td><code>accountable_person_id</code></td><td>Integer</td><td>To filter on a specific <strong>Accountable Person ID</strong></td></tr><tr><td><code>parent_id</code></td><td>Integer</td><td>To filter on a specific <strong>Parent ID</strong></td></tr><tr><td><code>all_accounts</code></td><td>Boolean</td><td>Whether to <strong>include all accounts</strong></td></tr><tr><td><code>include_parents</code></td><td>Boolean</td><td>Whether to <strong>include the parent data</strong> in the response</td></tr><tr><td><code>include_accountable_person</code></td><td>Boolean</td><td>Whether to <strong>include the accountable person's data</strong> in the response</td></tr><tr><td><code>cursor</code></td><td>String</td><td>To <strong>retrieve</strong> the <strong>next group</strong> of items (if any)</td></tr><tr><td><code>limit</code></td><td>Integer</td><td>To <strong>override</strong> the <strong>default limit</strong> of records returned (up to the <code>max_allowed_limit</code> provided in the response metadata).</td></tr><tr><td><code>reverse_order</code></td><td>Boolean</td><td>To <strong>reverse</strong> the <strong>order</strong> the data is returned in</td></tr></tbody></table>

### Response Examples

{% tabs %}
{% tab title="Success - Collection (200 OK)" %}
**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "learner_id": "1",
            "first_name": "John",
            "last_name": "Smith",
            "gender": "M",
            "grade": "7",
            "debtor_code": "1001",
            "parent1_id": "40",
            "parent2_id": "41",
            "accountable_person_id": "40"
        },
        {
            "learner_id": "2",
            "first_name": "Jane",
            "last_name": "Doe",
            "gender": "F",
            "grade": "5",
            "debtor_code": "1001",
            "parent1_id": "40",
            "parent2_id": "41",
            "accountable_person_id": "40"
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

{% tab title="Success - Including Parent Info (200 OK)" %}
**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "learner_id": "1",
            "first_name": "John",
            "last_name": "Smith",
            "gender": "M",
            "grade": "7",
            "debtor_code": "1001",
            "parent1_id": "40",
            "parent2_id": "41",
            "accountable_person_id": "40",
            "parents": [
                {
                    "parent_id": "40",
                    "title": "Mr",
                    "first_name": "John",
                    "full_names": "John James",
                    "last_name": "Smith",
                    "mobile_calling_code": "27",
                    "mobile_number": "0823456789",
                    "work_tel_number": "0860010012",
                    "home_tel_number": "0123456789",
                    "email_address": "jjsmith@example.com",
                    "date_of_birth": "1967-02-14",
                    "gender": "M",
                    "residential_address": "Plot 101\r\nDaffodil Street\r\nPretoria",
                    "postal_address": "PO Box 12\r\nMenlyn\r\nPretoria",
                    "home_language": "English",
                    "correspondence_language": "English",
                    "communication_method": "E-Mail",
                    "include_in_debtor_comms": "No",
                    "nationality": "South Africa",
                    "debtor_code": "1001",
                    "id_number": "6702145076084",
                    "passport_number": "A0176543",
                    "employer": "Smith Attorneys",
                    "employer_address": "Suite 101\r\nSmith Street\r\nSouth Africa"
                },
                {
                    "parent_id": "41",
                    "title": "Mrs",
                    "first_name": "Jane",
                    "full_names": "Jane Jenny",
                    "last_name": "Smith",
                    "mobile_calling_code": "27",
                    "mobile_number": "0798765432",
                    "work_tel_number": "0860010012",
                    "home_tel_number": "0123456789",
                    "email_address": "smith.jj@example.org",
                    "date_of_birth": "1955-06-17",
                    "gender": "F",
                    "residential_address": "Plot 101\r\nDaffodil Street\r\nPretoria",
                    "postal_address": "PO Box 12\r\nMenlyn\r\nPretoria",
                    "home_language": "English",
                    "correspondence_language": "English",
                    "communication_method": "SMS",
                    "include_in_debtor_comms": "Yes",
                    "nationality": "South Africa",
                    "debtor_code": "1001",
                    "id_number": "5506170079082",
                    "passport_number": "",
                    "employer": "Smith Attorneys",
                    "employer_address": "Suite 101\r\nSmith Street\r\nSouth Africa"
                }
            ]
        },
        {
            "learner_id": "2",
            "first_name": "Jane",
            "last_name": "Doe",
            "gender": "F",
            "grade": "5",
            "debtor_code": "1002",
            "parent1_id": "55",
            "parent2_id": "56",
            "accountable_person_id": "40",
            "parents": [
                {
                    "parent_id": "55",
                    "title": "Mr",
                    "first_name": "Jonathan",
                    "full_names": "Jonathan Andrew",
                    "last_name": "Doe",
                    "mobile_calling_code": "27",
                    "mobile_number": "0813456789",
                    "work_tel_number": "0860010012",
                    "home_tel_number": "0123456789",
                    "email_address": "jd@example.com",
                    "date_of_birth": "1969-03-11",
                    "gender": "M",
                    "residential_address": "91 Monument Street\r\nMonument Park\r\nPretoria",
                    "postal_address": "PO Box 12\r\nMonument Park\r\nPretoria",
                    "home_language": "English",
                    "nationality": "South Africa",
                    "debtor_code": "1002",
                    "id_number": "6903115013085",
                    "passport_number": "",
                    "employer": "Happy Car Hire",
                    "employer_address": "10 Happy Street\r\nJohannesburg\r\nSouth Africa"
                },
                {
                    "parent_id": "56",
                    "title": "Mrs",
                    "first_name": "Janine",
                    "full_names": "Janine",
                    "last_name": "Doe",
                    "mobile_calling_code": "27",
                    "mobile_number": "0798124678",
                    "work_tel_number": "0860010012",
                    "home_tel_number": "0123456789",
                    "email_address": "jd2@example.org",
                    "date_of_birth": "1984-10-07",
                    "gender": "F",
                    "residential_address": "91 Monument Street\r\nMonument Park\r\nPretoria",
                    "postal_address": "PO Box 12\r\nMonument Park\r\nPretoria",
                    "home_language": "English",
                    "nationality": "South Africa",
                    "debtor_code": "1002",
                    "id_number": "8410070079082",
                    "passport_number": "",
                    "employer": "Happy Car Hire",
                    "employer_address": "10 Happy Street\r\nJohannesburg\r\nSouth Africa"
                }
            ]
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

{% tab title="Success - Including Accountable Person (200 OK)" %}
**Status:** <mark style="color:green;">`200 OK`</mark>

```json
{
    "data": [
        {
            "learner_id": "1",
            "first_name": "John",
            "last_name": "Smith",
            "gender": "M",
            "grade": "7",
            "debtor_code": "1001",
            "parent1_id": "40",
            "parent2_id": "41",
            "accountable_person_id": "40",
            "accountable_person": {
                "accountable_person_id": "40",
                "title": "Mr",
                "full_names": "John James",
                "first_name": "John",
                "last_name": "Smith",
                "mobile_calling_code": "27",
                "mobile_number": "0823456789",
                "work_tel_number": "0860010012",
                "home_tel_number": "0123456789",
                "email_address": "jjsmith@example.com",
                "date_of_birth": "1967-02-14",
                "gender": "M",
                "residential_address": "Plot 101\r\nDaffodil Street\r\nPretoria",
                "postal_address": "PO Box 12\r\nMenlyn\r\nPretoria",
                "home_language": "English",
                "correspondence_language": "English",
                "communication_method": "E-Mail",
                "include_in_debtor_comms": "Yes",
                "nationality": "South Africa",
                "debtor_code": "1001",
                "id_number": "6702145076084",
                "passport_number": "A0176543",
                "employer": "Smith Attorneys",
                "employer_address": "Suite 101\r\nSmith Street\r\nSouth Africa"
            }
        },
        {
            "learner_id": "2",
            "first_name": "Jane",
            "last_name": "Doe",
            "gender": "F",
            "grade": "5",
            "debtor_code": "1002",
            "parent1_id": "55",
            "parent2_id": "56",
            "accountable_person_id": "55",
            "accountable_person": {
                "accountable_person_id": "55",
                "title": "Mr",
                "full_names": "Jonathan Andrew",
                "first_name": "Jonathan",
                "last_name": "Doe",
                "mobile_calling_code": "27",
                "mobile_number": "0813456789",
                "work_tel_number": "0860010012",
                "home_tel_number": "0123456789",
                "email_address": "jd@example.com",
                "date_of_birth": "1969-03-11",
                "gender": "M",
                "residential_address": "91 Monument Street\r\nMonument Park\r\nPretoria",
                "postal_address": "PO Box 12\r\nMonument Park\r\nPretoria",
                "home_language": "English",
                "correspondence_language": "English",
                "communication_method": "SMS",
                "include_in_debtor_comms": "Yes",
                "nationality": "South Africa",
                "debtor_code": "1002",
                "id_number": "6903115013085",
                "passport_number": "",
                "employer": "Happy Car Hire",
                "employer_address": "10 Happy Street\r\nJohannesburg\r\nSouth Africa"
            }
        }
    ],
    "meta": {
        "limit": 10,
        "max_allowed_limit": 50,
        "cursor": "eyJpZCI6MjU0NiwiX2JhY2t3YXJkIjpmYWxzZX0"
    }
}
```

{% endtab %}

{% tab title="ID Not Found Error (404 Not Found)" %}
**Description:** The requested ID does not exist in the system.

**Status:** <mark style="color:red;">`404 Not Found`</mark>

```json
{
    "success": false,
    "message": "The learner does not exist"
}
```

{% endtab %}

{% tab title="Validation Error (400 Bad Request)" %}
**Description:** When validation failed for one or more fields

**Status:** <mark style="color:red;">`400 Bad Request`</mark>

```json
{
    "success": false,
    "message": "Validation Failed",
    "validation_errors": {
        "parent_id": "The Parent id must be integer",
        "include_parents": "The Include parents must be a boolean"
    }
}
```

{% endtab %}
{% endtabs %}

### Code Samples

{% tabs %}
{% tab title="PHP" %}

```php
<?php

// API Credentials
$api_username = 'your_username';
$api_password = 'your_password';
$school_id = 'the_school_id';

// Base API endpoint
define('BASE_URL', 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/learners');

// Optional: Set an ID to fetch a specific learner (or leave empty for all)
$id = '';

$url = BASE_URL;
if (!empty($id)) {
    $url .= '/' . $id;
}

// Query parameters (optional)
$query_params = [
    'debtor_code' => '1002',
    'accountable_person_id' => 14,
    'parent_id' => 4,
    'all_accounts' => 1,
    'include_parents' => 12,
    'include_accountable_person' => 1,
    'reverse_order' => 1,
    'limit' => 10,
    'cursor' => 'eyJpZCI6NjksIl9iYWNrd2FyZCI6ZmFsc2V9',
];

if (!empty($query_params)) {
    $url .= '?' . http_build_query($query_params);
}

// Initialize cURL
$curl = curl_init();

// Set cURL options
curl_setopt_array($curl, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 30,  // Set timeout to prevent hanging requests
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => [
        "HTTP-X-USERNAME: $api_username",
        "HTTP-X-PASSWORD: $api_password",
        "HTTP-X-SCHOOLID: $school_id"
    ],
]);

// Execute request
$response = curl_exec($curl);

// Check for errors
$error = curl_error($curl);
if ($error) {
    curl_close($curl);
    throw new Exception("cURL Error: $error");
}

// Close cURL and output response
curl_close($curl);
echo $response;

```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --request GET 'https://integrate.d6plus.co.za/api/v2/finplus/debtmanagement/learners?all_accounts=1' \
     --header 'HTTP-X-USERNAME: your_username' \
     --header 'HTTP-X-PASSWORD: your_password' \
     --header 'HTTP-X-SCHOOLID: the_school_id'
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.d6plus.co.za/v2/reference/finance+/debt-management/get-learner-s.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
