---
title: "Get Offer"
method: GET
path: "/api/offers/{offer_id}"
tags: ["booking"]
---

# Get Offer

`GET /api/offers/{offer_id}`

## Request

- Base URL: `https://api.pointifytravels.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pointifytravels.com/api/offers/{offer_id}`
- Auth: none declared

Fetch a single Duffel offer by id — backs the booking staleness probe.

The web ``/api/booking/pending`` route probes this before creating a
booking so it can show an honest "offer expired, search again" message.
Contract the web relies on:

  * **200** — Duffel still has the offer (live, bookable).
  * **410 Gone** — Duffel no longer recognises it (offers expire ~30 min
    after search). The probe maps ONLY 410 to OFFER_EXPIRED.
  * **502** — upstream/transport error; the probe falls through and lets
    the booking proceed (confirm is the real backstop).

Duffel offer ids may carry a ``duffel_`` prefix in our DB — strip it the
same way the rest of booking_service does before calling Duffel.

## Path parameters

- `offer_id` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine.md) · [All operations](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/pointifytravels/apis/pointify-deal-engine/revisions/4350142a4216?raw)
