4. Reserve a seat (one at a time)
POST
/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holdsExplanation
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();import json, requests
body = { "seat_id": "73660" }
raw = json.dumps(body)
res = requests.post(
"https://book.stadepassgn.com/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds",
data=raw,
headers={
"content-type": "application/json",
"x-partner-code": PARTNER_CODE,
},
)
data = res.json()body := []byte(`{ "seat_id": "73660" }`)
req, _ := http.NewRequest("POST", "https://book.stadepassgn.com/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds", bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("x-partner-code", partnerCode)
res, _ := http.DefaultClient.Do(req)var raw = @"{ ""seat_id"": ""73660"" }";
using var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, "https://book.stadepassgn.com/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds");
req.Content = new StringContent(raw, Encoding.UTF8, "application/json");
req.Headers.Add("x-partner-code", partnerCode);
var res = await client.SendAsync(req);String raw = "{ \"seat_id\": \"73660\" }";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://book.stadepassgn.com/api/v1/public/booking-sessions/6e5e5b33-ab5c-40da-b9f0-19bec7da55dd/holds"))
.header("Content-Type", "application/json")
.header("x-partner-code", partnerCode)
.POST(HttpRequest.BodyPublishers.ofString(raw))
.build();
HttpResponse<String> res = client.send(req, BodyHandlers.ofString());
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).
200 OK · demo