---
title: "409 Reservation expired"
description: "The hold ran out before you closed it. QuotaStack gave the credits back, and charged nothing."
---

# 409 Reservation expired

`https://api.quotastack.io/errors/reservation-expired`

The hold ran out before you closed it. QuotaStack gave the credits back, and charged nothing.

## Why it happened

- The job took longer than the `ttl_seconds` you set.
- Nobody closed the hold, so a QuotaStack job swept it up.

## How to fix it

1. Set a `ttl_seconds` longer than the job really needs.
2. Charge the customer with `consumeEntitlement` instead, now that you know the real cost.
3. Reserve again if the job has not started yet.

### Example response 409

```json
{
  "type": "https://api.quotastack.io/errors/reservation-expired",
  "title": "Reservation Expired",
  "status": 409,
  "detail": "Reservation has expired."
}
```

## Which calls return this

- [`POST /v1/reservations/{id}/commit`](/docs/api/reservations#commitReservation)

## See also

- [Reservations](/docs/concepts/reservations)
