# create-server

Paid through the standard Exact-EVM rail at the quoted price (quote == charge): `get-pricing`'s `totalPrice`, always a whole cent. Provisions one server and returns its access details when it is verified.

## Input

| Field | Required | Notes |
|---|---|---|
| `vcpu`, `ramGiB`, `storageGiB`, `hours` | yes | Exactly as passed to `get-pricing`. |
| `planId` | yes | The plan reference `get-pricing` returned for the current catalog. |
| `sshPublicKey` | yes | One OpenSSH public key line: `ssh-ed25519`, `ecdsa-sha2-nistp256/384/521` or `ssh-rsa` (2048+ bits). Never a private key; no `authorized_keys` options. The comment is dropped. |

## Flow

1. Preview with `get-pricing`, then request the payment challenge and buy through the gateway.
2. After payment the provider creates the machine and its stable IP address, and verifies the machine size, disk, health checks, fresh bootstrap evidence and the SSH host-key handshake. Only then are ports 80 and 443 opened and rental time started.
3. Short capacity is retried on the same paid order. The order stays `working`; do not pay again. If automation cannot finish, the order goes to a human review; a failed order is resolved by support, never by a second purchase.

## Result artifact — `server_created`

```jsonc
{
  "assetId": "…", "serverId": "srv-0123456789abcdef0123", "status": "ready",
  "access": { "publicIp": "203.0.113.10", "sshUsername": "ubuntu", "sshPort": 22,
              "hostKeyFingerprint": "SHA256:…", "authorizedKeyFingerprint": "SHA256:…" },
  "resources": { "size": "standard-2x8", "vcpu": 2, "ramGiB": 8, "storageGiB": 64, "architecture": "x86_64" },
  "location": { "id": "us-east", "name": "US East" },
  "rental": { "hourlyRate": "166340", "hoursPurchased": 48, "paidThrough": "…", "deleteAfter": "…" },
  "dns": { "recordType": "A", "value": "203.0.113.10", "instructions": "…" }
}
```

Compare `hostKeyFingerprint` with what your SSH client shows on first connection. At `paidThrough` the server stops; at `deleteAfter` (24 hours later) the disk and IP are deleted permanently unless a paid `change-server` restored it.
