---
title: "Sandbox: poll a booking"
method: GET
path: "/sandbox/flights/bookings/{booking_id}"
tags: ["sandbox"]
---

# Sandbox: poll a booking

`GET /sandbox/flights/bookings/{booking_id}`

## Request

- Base URL: `https://letsfg.co/developers/api/v1`
- URL: `https://letsfg.co/developers/api/v1/sandbox/flights/bookings/{booking_id}`
- Auth: API key in header `X-API-Key`

Identical to GET /flights/bookings/{booking_id}. Keep polling while a question is open: if nobody polls for 2 minutes, a seat map or a paid extra is dropped and the booking continues without it, as in production.

## Path parameters

- `booking_id` string, required

## Response `200`

Booking state.

- BookingStatus
  - `booking_id` string
  - `state` 'awaiting_payment' | 'authorised' | 'card_issued' | 'booking_in_progress' | 'awaiting_settlement' | 'completed' | 'failed' | 'needs_attention': awaiting_payment only on a 3-D Secure retry booking that the traveller has not paid yet (see pay_url).
  - `terminal` boolean: True for completed, failed and needs_attention.
  - `pnr` string
  - `currency` string
  - `held_amount` number
  - `charged_amount` number: Set once the hold is captured against a real PNR.
  - `card_last4` string
  - `failure_reason` string
  - `decline_reason` string: The payment provider's code when the traveller's own payment method was declined; '' otherwise.
  - `decline_message` string: What the decline means, in words to show the traveller (second person).
  - `decline_advice` string: What the traveller can do next, in words to show them.
  - `retry` object: On a declined booking: the same payment reopened as 3-D Secure. Send the traveller pay_url; paying it starts the booking by itself, and GET /flights/bookings/{retry.booking_id} follows it.
    - `booking_id` string
    - `pay_url` string, uri
  - `pay_url` string, uri: On a 3-D Secure retry booking while it is unpaid: the secure page where the traveller's bank approves the payment.
  - `awaiting_link_payment` boolean: True while a 3-D Secure retry booking waits for the traveller to pay pay_url.
  - `updated_at_ms` integer
  - `offer` object
  - `question` object, nullable: kind is 'seat', 'extra' or 'price_change'; echo its round to the answer route.
  - `message` string

## Other responses

- `404`: booking_not_found.

---

[API](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api.md) · [All operations](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/letsfg/apis/letsfg-public-developer-api/revisions/516ab6ba1d2e?raw)
