> For the complete documentation index, see [llms.txt](https://docs.nebulablock.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nebulablock.com/api-reference/platform-api/list-products/start-instance.md).

# Start Instance

Power on a stopped Nebula Block instance.

Initiate the startup of an instance. Provide the instance ID in the path to start the specified instance.

## HTTP Request

`GET` `{API_URL}/computing/instance/{id}/start`

## Path parameters

| Parameters | Requirements | Type     | Description                                                                                                               |
| ---------- | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------- |
| id         | Required     | `string` | The unique identifier of the instance, from [List Instances](/api-reference/platform-api/list-products/list-instances.md) |

## Query parameters

| Parameters                 | Requirements | Type     | Description                                                                                                                                                                                                        |
| -------------------------- | ------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| accepted\_price\_per\_hour | Optional     | `number` | Spot instances only. The hourly rate in USD you agree to pay, usually the `current_price_per_hour` from [Get Spot Price](/api-reference/platform-api/list-products/get-spot-price.md). Ignored for other instances |

> **Note:** An unknown id is rejected with **HTTP 404** `Instance not found`, and an instance belonging to someone else with **HTTP 403** `Permission denied`. Those are the only real HTTP errors here — every other failure below comes back as HTTP 200.

> **Important:** The instance must be in `Stopped` or `Preempted` state. Calling this on an instance in any other state returns **HTTP 200** with `"status": "failed"` and the message `"Instance status is invalid for start operation"` — check `status`, not the HTTP code.

> **Note:** Not every configuration supports power actions — older ones in particular may not. Where the action is unavailable the call returns **HTTP 200** with `"status": "failed"` and the message `"Starting instance failed"`, and the instance is left untouched. There is no capability flag to check in advance, so handle that message; if a start fails this way on an instance you expect to support it, contact support.

## Spot instances

A Spot instance starts at the **current spot rate**, which may differ from the rate it ran at before it stopped. While a Spot instance is preempted, only its storage is billed; starting it resumes the full hourly rate. See [Spot Instances](/products/gpu-cloud/spot-instances.md).

* If the current spot rate is **at or below** `accepted_price_per_hour` — or, when the parameter is omitted, at or below the rate the instance last ran at — the instance starts at the current rate.
* If the current spot rate is **above** it, nothing starts. The call returns **HTTP 200** with `"status": "failed"`, the code `spot_price_changed`, and both rates:

```json
{
    "data": {
        "code": "spot_price_changed",
        "current_price_per_hour": 2.35,
        "order_price_per_hour": 2.1
    },
    "message": "The current spot price is $2.350/hour (was $2.100/hour). Confirm the new price to start the instance.",
    "status": "failed"
}
```

To start at the new rate, call again with `accepted_price_per_hour` set to `current_price_per_hour`. If the rate has risen again by then, you get another `spot_price_changed` response with the newer rate.

## Response Attributes

#### data `list`

Empty on success and on most failures. On a `spot_price_changed` failure it is an object holding `code`, `current_price_per_hour` and `order_price_per_hour`, as shown above.

#### message `string`

A description of the status of the request.

#### status `string`

Indicates the result of the request. `success` signifies success, while `failed` indicates an error.

## Example

#### Request

```bash
curl -X GET '{API_URL}/computing/instance/{id}/start' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \

```

Starting a Spot instance at a confirmed rate:

```bash
curl -X GET '{API_URL}/computing/instance/{id}/start?accepted_price_per_hour=2.35' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json'
```

#### Response

```json
{
    "message": "Instance started successfully",
    "status": "success"
}
```
