# upgrade_service

> Upgrade a service to a larger plan.

- Tier: W
- Required scope: write:billing + write:services
- Annotations: idempotentHint
- Docs: https://api.inleed.com/tools/upgrade-service

## Description

Upgrade a service to a larger plan. This costs money and does not charge on the call: it validates the target plan against the live options, then returns `{status:"confirmation_required", confirmationUrl, …}`. Show the human the `confirmationUrl`; on approval an unpaid proforma order is created and the plan changes only once it is paid — poll `get_pending_action`. To only preview prices use `get_upgrade_options`; to change billing period use `change_billing_cycle`; to withdraw an unpaid scheduled upgrade use `cancel_scheduled_upgrade` (REST).

## Input schema

- `input` — string (required). A domain, email address, website URL, numeric service id, or hosting-account username the customer actually owns. Resolved to the owning account automatically; the resolved target is echoed back in the response.
- `service_type_id` — integer (required). The target plan's service-type id. Get it from get_upgrade_options → options[].serviceTypeId.
- `attempt_key` — string. An idempotency key you choose. Reusing it within an hour returns the same held upgrade instead of creating a second one.

## Example call

```json
{
  "name": "upgrade_service",
  "arguments": {
    "input": "example.se",
    "service_type_id": 1
  }
}
```

