---
title: "Create instance"
method: POST
path: "/instances/create"
tags: ["Instances"]
---

# Create instance

`POST /instances/create`

Create a new compute instance.

SSH access: pass an SSH public key in the `public_key` field to seed the instance's `authorized_keys`. If omitted, Thunder generates a key pair and returns the private key in the response (it is only returned once — store it immediately).

Note: SSH keys saved in your account (Authentication section of the console) are a separate store and are NOT automatically attached to new instances. To use one of those keys, copy its public key material into the `public_key` field on this request.

## Request body

- union
  - object
  - ThundertypesInstanceCreateRequest
    - `cpu_cores` integer, required
    - `disk_size_gb` integer, required
    - `gpu_type` string, required
    - `mode` 'prototyping' | 'production'
    - `num_gpus` integer, required
    - `public_key` string — Optional SSH public key material to seed authorized_keys. If omitted, a key pair is generated and the private key returned.
    - `template` string, required

## Response `201`

Created

- ThundertypesInstanceCreateResponse
  - `identifier` integer, required
  - `key` string, required
  - `uuid` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `500` — Internal Server Error

## Changes

> 6 revisions in range; 2 could not be searched.

- **2026-07-26** `34c556152ce5` — 1 warning
  - removed the request property `oneOf[#/components/schemas/thundertypes.InstanceCreateRequest]/ephemeral_disk_gb`

[Change history](https://skmtc.dev/thundercompute/apis/thunder-compute-api/changes/instances/create/post.md)

---

[API](https://skmtc.dev/thundercompute/apis/thunder-compute-api.md) · [All operations](https://skmtc.dev/thundercompute/apis/thunder-compute-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/thundercompute/thunder-compute-api/revisions/122382e24d26/schema)
