---
title: "Renew a Reservation"
method: POST
path: "/reservations/{reservationId}/renew"
tags: ["Reservations"]
---

# Renew a Reservation

`POST /reservations/{reservationId}/renew`

## Request

- Base URL: `https://gpucloud.ca/api`
- URL: `https://gpucloud.ca/api/reservations/{reservationId}/renew`
- Auth: HTTP bearer

Renew a reservation for 1 to 30 days (7 by default). A waiting one keeps its place in the queue; an expired or payment-failed one goes back in the queue after the card check.

## Request body

- object
  - `validityDays` integer

## Response `200`

The reservation

- object
  - `reservation` Reservation: A GPU reservation: GPU Cloud launches the server automatically as soon as the machine is back in stock (first come, first served per machine).
    - `id` string
    - `productId` string: Exact machine reserved (model and size).
    - `productName` string
    - `status` 'ACTIVE' | 'PROCESSING' | 'FULFILLED' | 'PAYMENT_FAILED' | 'EXPIRED' | 'CANCELLED'
    - `maxHourlyCad` number: Highest hourly price accepted (CAD). Above it at launch time, the reservation waits.
    - `acceptAlternative` boolean
    - `templateId` string, nullable
    - `templateModel` string, nullable
    - `name` string, nullable
    - `expiresAt` string, date-time
    - `createdAt` string, date-time
    - `queuePosition` integer, nullable: Place in the queue of this machine (1 = next) while waiting.
    - `waitingReason` string, nullable: PRICE_ABOVE_MAX, BUDGET_LIMIT_REACHED, KEY_CAP_REACHED, SETUP_REQUIRED or SSH_KEY_MISSING while it waits for that reason.
    - `cancelRequested` boolean
    - `serverId` string, nullable: Server launched for it (FULFILLED).
    - `fulfilledProductId` string, nullable
    - `fulfilledAt` string, date-time, nullable
    - `source` 'console' | 'api' | 'mcp'
    - `onFundsExhausted` 'HIBERNATE' | 'DELETE': Action at the threshold of the server this reservation launches.

## Other responses

- `400`: Invalid request
- `401`: No API key (accountAction.code NO_API_KEY) or an invalid, expired, revoked or read only key on a write (INVALID_API_KEY). Provide a valid API key as `Authorization: Bearer <key>`; accountAction gives the links to create an account and a key.
- `402`: Payment required (accountAction.code PAYMENT_REQUIRED: not enough credit, no saved card or a declined card) or a budget cap reached (BUDGET_CAP_REACHED: account or server budget limit, nothing charged). accountAction.balanceCad gives the balance and, when a server is concerned, accountAction.hibernationThresholdCad its hibernation threshold (a server is hibernated when the balance reaches it, kept 12 hours at most, then deleted; it restarts as soon as the balance is above it). Add your card and credits at accountAction.action.url (or raise the cap), then send the same request again.
- `404`: Resource not found
- `409`: Not renewable
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/gpucloud/apis/gpu-cloud-api.md) · [All operations](https://skmtc.dev/gpucloud/apis/gpu-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gpucloud/apis/gpu-cloud-api/revisions/ed530411f5c7?raw)
