---
title: "Add SSH key to instance"
method: POST
path: "/instances/{id}/add_key"
tags: ["Instances"]
---

# Add SSH key to instance

`POST /instances/{id}/add_key`

Append an SSH public key to an existing instance's `authorized_keys`.

Behavior:
- If `public_key` is provided, that raw key material is appended to `authorized_keys`. If the same public key is already attached, the request is a no-op (no error).
- If `public_key` is omitted, Thunder generates a new key pair, appends the public half to `authorized_keys`, and returns the private key in the response. The private key 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 instances. To use one of those keys, copy its public key material into the `public_key` field on this request.

## Path parameters

- `id` string, required

## Request body

- union
  - object
  - ThundertypesInstanceAddKeyRequest
    - `public_key` string — Optional SSH public key material. Omit to have a key pair generated and the private key returned.

## Response `200`

OK

- ThundertypesInstanceAddKeyResponse
  - `key` string — Private key (only when generated)
  - `message` string — Status message
  - `success` boolean, required — Whether the key was successfully added
  - `uuid` string, required

## Other responses

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

---

[API](https://skmtc.net/thundercompute/apis/thunder-compute-api.md) · [All operations](https://skmtc.net/thundercompute/apis/thunder-compute-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/thundercompute/thunder-compute-api/versions/a8120edca3aa/schema)
