4. Reserve a seat (one at a time)

POST/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds
Explanation

In plain words: “lock this seat for ~12 minutes while the customer pays.” One seat = one reservation. Two tickets = two reservations (same kind of call twice with different seats). Save each reservation number (hold id).

Payload / request

Send: only seat_id (seat number). Example for 2 seats: call twice with two different seat_ids.

{
  "seat_id": "73660"
}
Response

Seat reserved — keep hold.id for confirmation

{
  "success": true,
  "message": "Seat held in booking session",
  "data": {
    "session_id": "6e5e5b33-ab5c-40da-b9f0-19bec7da55dd",
    "hold": {
      "id": "133c21f0-d704-46f4-8901-553056af6408",
      "event_id": "8",
      "seat_id": "73660",
      "status": "held",
      "expires_at": "2026-09-04T13:09:00.000Z",
      "remaining_seconds": 720,
      "price": 40000,
      "seat_code": "TS-01-R1-1",
      "zone_id": "7",
      "section_id": "49",
      "row": 1,
      "number": 1
    }
  }
}
Code example
const body = {
  "seat_id": "73660"
};
const raw = JSON.stringify(body);
const res = await fetch("https://book.stadepassgn.com/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds", {
  method: "POST",
  headers: {
    "content-type": "application/json",
    "x-partner-code": process.env.PARTNER_CODE || "YOUR_PARTNER_CODE",
  },
  body: raw,
});
const json = await res.json();

Try this API (demo)

Local playground — sample GNF response. No real network call.

Demo only. In production, sign every request (see Auth on the home page).