# Upgrade options

`GET /v1/service/@id/upgrade` · scope `services:read`

Plans and resources available for upgrade, with prices per billing cycle.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/v1/service/@id/upgrade` |
| 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 | string | yes | Service ID |

## Example request

```bash
curl "https://api.tino.vn/v1/service/100001/upgrade" \
  -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)): Python `client.services.get_upgrade_options(id)`, Node.js `await client.services.getUpgradeOptions(id);`, PHP `$client->services->getUpgradeOptions($id);`.

## Example response

```json
{
 "resources": [],
 "package": [
  {
   "id": "2007",
   "name": "Host 5GB NVMe",
   "category": "Hosting NVMe",
   "price": {
    "Monthly": "79000.00",
    "Quarterly": "237000.00",
    "Semi-Annually": "474000.00",
    "Annually": "853200.00",
    "Biennially": "1611600.00",
    "Triennially": "2275200.00",
    "Quadrennially": "2844000.00",
    "Quinquennially": "3318000.00"
   }
  },
  {
   "id": "2008",
   "name": "Host Starter NVMe",
   "category": "Hosting NVMe",
   "price": {
    "Monthly": "339000.00",
    "Quarterly": "1017000.00",
    "Semi-Annually": "1830600.00",
    "Annually": "3254400.00",
    "Biennially": "5695200.00",
    "Triennially": "7322400.00",
    "Quadrennially": "8136000.00",
    "Quinquennially": "9153000.00"
   }
  },
  "… 6 more item(s)"
 ]
}
```

Live sample from a test account with personal data masked; long arrays and strings are trimmed (`… N more item(s)`, `… N more line(s)`).
