---
search:
  tags:
    - Operations
    - POST
seo:
  description: >-
    Cancels an offer. The offer must not already be in a resolved status
    (canceled, buyout… Reference for the POST /{id}/cancel endpoint in the
    Offers API.
sidebar:
  label: Cancel offer
  badge: POST
title: Cancel offer
type: openapi-operation
---
Cancels an offer. The offer must not already be in a resolved status (canceled, buyout accepted, order placed, or expired).

`POST /{id}/cancel`

**Responses**

- `200` — Offer canceled successfully
- `400` — Bad request - Offer is not in a cancelable state
- `401` — Unauthorized - Missing or invalid authentication
- `403` — Forbidden - Caller can view this offer but is not allowed to cancel it
- `404` — Not found - Offer does not exist or caller is not allowed to view it
- `500` — Internal server error

Response example, 200:

```json
{
  "offerId": "offer-123",
  "status": "CANCELED",
  "canceledAt": "2024-01-20T12:00:00Z"
}
```

Response example, 400:

```json
{
  "code": "OFFER_CANCELLATION_ERROR",
  "message": "Offer cannot be canceled because it is in \"canceled\" status"
}
```

Response example, 401:

```json
{
  "code": "UNAUTHORIZED",
  "message": "Missing authentication token"
}
```

Response example, 403 · insufficientScope:

```json
{
  "code": "INSUFFICIENT_SCOPE",
  "message": "The presented token is missing the `write:offers` scope, which this endpoint requires. Create a token with the scopes you need at https://developer.sibipro.com."
}
```

Response example, 403 · permissionDenied:

```json
{
  "code": "FORBIDDEN",
  "message": "User does not have permission to cancel this offer"
}
```

Response example, 404:

```json
{
  "code": "OFFER_NOT_FOUND",
  "message": "Offer not found"
}
```

Response example, 500:

```json
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "An unexpected error occurred"
}
```
