---
title: "Supplemental information for API call POST ⧸learn⧸v1⧸lo⧸﹛id﹜⧸track"
slug: "supplemental-information-for-api-call-post-learnv1loidtrack"
description: "Explore the inputs and outputs for the POST /learn/v1/lo//track endpoint, detailing tracking types for assignments, quizzes, surveys, and more."
updated: 2026-03-20T14:50:16Z
published: 2026-03-20T14:50:16Z
canonical: "developer.docebo.com/supplemental-information-for-api-call-post-learnv1loidtrack"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://developer.docebo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supplemental information for API call POST ⧸learn⧸v1⧸lo⧸﹛id﹜⧸track

## Introduction

This article describes the various inputs and outputs available for the endpoint:

POST `/learn/v1/lo/{id}/track`

The inputs and outputs vary depending on the type of the training material identified by its ID in the API call.

## Supplemental Information

Presented here is a list of possible inputs and outputs, sorted by training material type.

### Assignments

InputOutput

#### Parameters

`type` **(string, required)** The type of tracking. Possible values are:

- `submission`
- `comment_reply`

`submission` **(object, required)** The data payload for the current tracking

`id` **(integer, optional)** The reply identifier. This parameter is required only when `type` is `comment_reply`.

`learner_reply` **(string, optional)** The text of the reply. This parameter is required only when `type` is `comment_reply`.

`name` **(string, optional)** The title of the submitted assignment. Required only when `type` is `submission`.

`description` **(string, optional)** An optional description of the submitted assignment

`files` **(array, optional)** An array of uploaded S3 file URLs as part of the submission. Required only when `type` is `submission`.

`url` **(string, required)** The URL of the file

`video_url` **(string, optional)** The URL (for example, YouTube) submitted in the assignment. Required only when `type` is `submission`.

#### Structure

```scheme
{
  track: {
    type: (string, required),
    submission: (object, required) {
      id: (integer, required),
      learner_reply: (string, required),
      name: (string, required),
      description: (string, optional),
      files: (array, optional) [{
        url: (string, required)
      }],
      video_url: (string, optional)
    }
  }
}
```

#### Values

`id` **(integer, optional)** The internal ID of the submitted item. Returned only when `type` is `submission`.

#### Structure

```scheme
{
  acknowledge: {
    id: (integer, optional)
  }
}
```

### File

InputOutput

None

#### Values

`url` **(string, required)** The URL of the S3 file to download

#### Structure

```scheme
{
  acknowledge: {
    url: (string, required)
  }
}
```

### Googledrive

InputOutput

None

#### Values

`url` **(string, required)** The URL of the Google Drive file to play

#### Structure

```scheme
{
    acknowledge: {
        url: (string, required)
    }
}
```

### Htmlpage

InputOutput

None

#### Values

`content` **(string, required)** The HTML content to display

#### Structure

```scheme
{
  acknowledge: {
    content: (string, required)
  }
}
```

### Quiz

InputOutput

#### Parameters

`action` **(string, required)** The action to perform on this quiz. Possible values are:

- `start`
- `continue`
- `next`
- `prev`
- `submit_partial`
- `submit`
- `time_elapsed_submit`
- `time_enabled_force_exit`
- `review`

`questions` **(object, optional)** An object containing the quiz answers to submit, indexed by question ID

`[id: (string)]` **(object, required - the ID parameter itself is a string of the question ID)**

`user_status` **(object, required)**

`answer` **(integer, optional)** The answer to this question. Required for question of type:

- `choice`
- `extended_text`
- `text_entry`
- `upload`
- `inline_choice`

`answers` **(object, optional)** An object containing a list of answers. Required for question of type:

- `choice_multiple`
- `fill_in_the_blank`
- `associate`

`[id: (string)]` **(boolean | string | number, optional - the ID parameter itself is a string)** The selected answers to this question, indexed by answer ID. Is **boolean** if the question is `type` `choice_multiple` (for example, `true = selected`). Is string if the question is `type` `fill_in_the_blank` (for example, `answers: {"[answ 1]": "USA", "[answ 2]": "IT"}`). Is number if the question is `type` `associate` (for example, `answers: {"12": 1, "13": 2, "14": 3}`).

#### Structure

```scheme
{
  track: {
    action: (string, required),
    questions: (object, required) {
      [id: (string, required)]: (object, required){
        user_status: (object, required) {
          answer: (string, optional)
          answers: {
            [id: (string, required)]: (boolean / string / number)
          }
        }
      }
    }
  }
}
```

#### Values

`questions` **(array, required)** An array of questions for the requested page

`question` **(string, required)** The ID of the question

`question_index` **(integer, required)** The position of the question in the page

`type` **(string, required)** The type of question. Possible values are:

- `associate`
- `choice`
- `choice_multiple`
- `extended_text`
- `fill_in_the_blank`
- `inline_choice`
- `text_entry`
- `title`
- `upload`

`title` **(string, optional)** The question title to display

`category` **(string, optional)** The question category

`time_limit` **(integer, optional)** The time limit per question. Used only if time options for the test is `per_question`.

`additional_info` **(object, optional)** Additional information used by specific question types

`answers` **(array, optional)** Possible answers to the given question. Used only for questions where type is:

- `choice`
- `choice_multiple`
- `inline_choice`
- `associate`

`id_answer` **(number, required)** The answer ID

`text` **(string, required)** The answer title

`associations` **(array, optional)** Possible association answers. Used only for questions where `type` is `associate`.

`id` **(number, required)** The ID of the associated answer

`title` **(string, required)** The title of the associated answer

`user_status` **(object, optional)** An object containing the answers provided by the user so far

`answer` **(string, optional)** The answer to this question. Required only for questions where type is:

- `choice`
- `extended_text`
- `text_entry`
- `upload`
- `inline_choice`

`answers` **(object, optional)** An object containing the answers to this question. Required only for questions where `type` is:

- `choice_multiple`
- `fill_in_the_blank`
- `associate`

`[id: (string)]` **(boolean | string | number, required - the ID itself is a string of the answer ID)** The selected answers to this question, indexed by answer ID. Returns a boolean value when the question type is choice_multiple. Returns a string when the question type is fill_in_the_blank. Returns a number when the question type is associate.

`page_number` **(integer, optional)** The page number, returned only if there is a previous or next page.

`user_status` **(object, optional)** The user status information for the current test

`status` **(string, required)** The current quiz status for this user. Possible values are:

- `not_submitted`
- `submitted`

`score` **(decimal, optional)** The current calculated score for the user

`evaluation_status` **(string, optional)** If status is submitted, this contains the evaluation status. Possible values are:

- `waiting_evaluation`
- `evaluated`

`completion_status` **(string, required)** The completion status. Possible values are:

- `completed`
- `passed`
- `failed`
- `attempted`

`suspension_time` **(integer, optional)** This property sets how many minutes the user should wait before the test is unsuspended. If this value is set, the test is currently suspended.

`time_consumed` **(string, optional)** Tracks the amount of time consumed by the user. Only used if `time_option` is `per_test`.

`attempts_consumed` **(integer, optional)** Tracks the number of attempts consumed by the user. Only used if `max_attempts` is not `0`.

`feedback_message` **(string, optional)** An optional message that depends on the actual user score. Can be displayed if the quiz is in the status:

- `suspended`
- `retakable`
- `max_attempts_reached`

`score_per_category` **(array, optional)** An optional array containing the calculated scores divided by category

`category_name` **(string, required)** The name of the category

`questions_count` **(integer, required)** The number of questions inside this category

`score` **(decimal, required)** The calculated score for this category

`total_score` **(decimal, required)** The total score

`questions_id` **(string[], required)** An array of question IDs for this category

`average_user_score` **(decimal, optional)** The average score of other users who have already completed the test

`show_results` **(boolean, required)** Returns `TRUE` if the results should be displayed, otherwise returns `FALSE`

#### Structure

```scheme
{
  acknowledge: {
    questions: [{
      question: (string, required),
      question_index: (integer, required),
      type: (string, required),
      title: (string, optional),
      category: (string, optional),
      time_limit: (integer, optional),
      additional_info: (object, optional) {
        answers: (array, optional) [{
          id_answer: (number, required),
          text: (string, required)
        }],
        associations: (array, optional) [{
          id: (number, required),
          title: (string, required)
        }],
      },
      user_status: (object, optional) {
        answer: (string, optional)
        answers: (object, optional) {
          [id: (string, required)]: (boolean / string / number, required)
        }
      }
    }],
    page_number: (integer, optional),
    user_status: (object, optional) {
      status: (string, required),
      score: (decimal, required),
      evaluation_status: (string, optional),
      completion_status: (string, required),
      suspension_time: (integer, optional),
      time_consumed: (string, optional),
      attempts_consumed: (integer, optional),
      feedback_message: (string, optional),
      score_per_category: (array, optional) [{
        category_name: (string, required),
        questions_count: (integer, required),
        score: (decimal, required),
        total_score: (decimal, required),
        questions_id: (string[], required)
      }],
      average_user_score: (decimal, optional),
      show_results: (boolean, required)
    }
  }
}
```

### Slides Converter

InputOutput

#### Parameters

`bookmark` **(integer, required)** The last slide number played by the learner

#### Structure

```scheme
{
  track: {
    bookmark: (integer, required)
  }
}
```

None

### Survey

InputOutput

#### Parameters

`submitted` **(boolean, optional)** Submit the poll as completed

`questions` **(object, optional)** A list of question ID - answer pairs

`[id: string]` **(object, required)** The ID of the question for which the answer is given

`user_status` **(object, required)** The user answer to the question

`answer` **(string, optional)** The answer to the question. Required only if type is:

- `choice`
- `inline_choice`
- `extended_text`

`answers` **(string[], optional)** The answers to the question. Required only if type is:

- `likert_scale`
- `choice_multiple`

#### Structure

```scheme
{
  track: {
    submitted: (boolean, optional),
    questions: (object, optional) {
      [id: string]: (object, required) {
        user_status: (object, required) {
          answer: (string, optional),
          answers: (string[], optional)
        }
      }
    }
  }
}
```

#### Values

`is_completed` **(boolean, required)** Returns `TRUE` if the question is completed, otherwise returns `FALSE`

#### Structure

```scheme
{
  acknowledge: {
    is_completed: (boolean, required)
  }
}
```

### Video

InputOutput

#### Parameters

`bookmark` **(integer, required)** The video offset reached by the user

`complete` **(boolean, optional)** Set to `TRUE` if the video is completed

#### Structure

```scheme
{
  track: {
    bookmark: (integer, required),
    complete: (boolean, optional)
  }
}
```

None
