> For the complete documentation index, see [llms.txt](https://developers.jarsave.com/llms.txt)

# Lessons

## The lesson object

A lesson the student finished, with its score when the lesson is graded. In JarSave it shows the parent what the child built or learned that week.

### Attributes

- `lesson_id` string required: Your id for this student's lesson.
- `course_id` string required: Your id for the course.
- `course_name` string required: The course as the parent knows it.
- `lesson_no` integer required: The lesson's number in the course.
- `title` string required: The lesson's title, for example `Make the Robot Dance`.
- `goals` array of strings: What the lesson teaches, one short line each, as in your syllabus.
- `completed_at` timestamp required: When the student finished it.
- `score` integer, nullable: 0 to 100, only if the lesson is graded.
- `project_url` string, nullable: A public page of what the student made, if your system has one. No photos of the child.

**The lesson object**

```json
{
  "lesson_id": "les_77031",
  "course_id": "crs_junior_coding_2",
  "course_name": "Junior Coding 2",
  "lesson_no": 3,
  "title": "Make the Robot Dance",
  "goals": [
    "Learn what a loop is",
    "Move the robot with a loop"
  ],
  "completed_at": "2026-11-26T16:12:40+07:00",
  "score": 86,
  "project_url": null
}
```

## Send a lesson

`POST /v1/links/:id/lessons`

Send a lesson when the student finishes it. Send one item per lesson, not one per quiz attempt: if the score changes later, send the same `lesson_id` again.

### Parameters

The lesson object's attributes, or up to 100 of them in an `items` array.

### Returns

The item with its JarSave `id`, `link`, `status` and `received`. With `items`, a list: `{"object": "list", "data": [...]}`, one entry per item in the order sent.

**Request**

```sh
curl https://api.jarsave.com/v1/links/lnk_8Gm2QxT4/lessons \
  -H "Authorization: Bearer $JARSAVE_SECRET_KEY" \
  -H "JarSave-Version: 2026-10-29" \
  -H "Content-Type: application/json" \
  -d @lesson.json
```

**Response**

```json
{
  "id": "itm_7Ha1Lc0P",
  "object": "lesson",
  "link": "lnk_8Gm2QxT4",
  "lesson_id": "les_77031",
  "status": "pending",
  "received": "2026-11-26T16:12:44+07:00"
}
```
