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

# Certificates

## The certificate object

The certificate a student gets for finishing a course or passing a level. In JarSave it becomes a lasting entry in the child's record, so send the file the family would print, and a page that proves it is real.

### Attributes

- `certificate_no` string required: The number printed on the certificate. It is the item's id.
- `course_id` string required: Your id for the course.
- `course_name` string required: The course or level as printed, for example `Junior Coding 2`.
- `subject` string required: What the course teaches, in one or two words: `Coding`, `English`, `Piano`.
- `level` string, nullable: The level as printed, for example `Level 2` or `A2 Flyers`.
- `started_on` date required: The first day of the course.
- `completed_on` date required: The day the student finished it.
- `issued_on` date required: The date printed on the certificate.
- `study_hours` number required: The course's teaching hours, as you publish them, for example `20`.
- `final_grade` string, nullable: The overall grade, only if the certificate prints one.
- `rank` string, nullable: A place or distinction, only if the certificate prints one, for example `1st place`.
- `issuer` string required: The course provider's legal name, as printed.
- `file_url` string required: The certificate as PDF or PNG. See [files](https://developers.jarsave.com/data.md).
- `verify_url` string, nullable: A public page on your site that confirms this certificate. A course that issues verifiable digital badges can send that badge's link.

**The certificate object**

```json
{
  "certificate_no": "EXA-2026-004517",
  "course_id": "crs_junior_coding_2",
  "course_name": "Junior Coding 2",
  "subject": "Coding",
  "level": "Level 2",
  "started_on": "2026-09-03",
  "completed_on": "2027-01-28",
  "issued_on": "2027-02-01",
  "study_hours": 20,
  "final_grade": "A",
  "rank": null,
  "issuer": "PT Contoh Akademi Digital",
  "file_url": "https://files.academy.example/c/004517.pdf?sig=...",
  "verify_url": "https://academy.example/verify/EXA-2026-004517"
}
```

## Send a certificate

`POST /v1/links/:id/certificates`

Send a certificate when it is issued. For the history, send every certificate the student already has when the link becomes `active`.

### Parameters

The certificate object's attributes, one certificate per request.

### Returns

The item with its JarSave `id`, `link`, `status` and `received`.

**Request**

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

**Response**

```json
{
  "id": "itm_9Tq4Ze7A",
  "object": "certificate",
  "link": "lnk_8Gm2QxT4",
  "certificate_no": "EXA-2026-004517",
  "status": "pending",
  "received": "2027-02-01T09:02:31+07:00"
}
```
