# OS templates for VPS rebuild

`GET /v1/service/@id/os-templates` · scope `services:read`

OS templates this VPS can be rebuilt with: one row per name, ordered by family (Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, Fedora, Windows, other), clean installs before app images, newest first. `id` is the `template` value to send when rebuilding (POST /v1/service/@id/vms/@vmid/rebuild); `kind` is `os` or `app` (with an app, named in `app`); `eol`: past end of support; `recommended`: the newest supported clean install of each family; `current`: the template currently installed, or null.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/v1/service/@id/os-templates` |
| Method | `GET` |
| Scope | `services:read` |
| Header | `Authorization: Bearer <token>` |
| Content-Type | — (no body) |
| Tokens that can call it | app tokens (`tinoat_`), personal API tokens (`tinopat_`) |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | Service ID |

## Example request

```bash
curl "https://api.tino.vn/v1/service/100001/os-templates" \
  -H "Authorization: Bearer $TINO_TOKEN"
```

`$TINO_TOKEN` is a token with the scope `services:read`. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("GET", "/service/@id/os-templates")`.

## Example response

No live sample: the route changes real data or the test account has no data for it. The answer is a JSON object; errors follow the common shape in [Calling the Tino API](/en/docs/api#errors).
