So you've shown your ticket buyer a floor plan, they selected the seats they wish. Now it's time to actually book them, so that they become unavailable for selection for the next ticket buyer that comes along.
If the seats are held (i.e. you passed in
session when rendering the chart), you need to include the hold token when booking the seats.
seats.io verifies whether the seats were held by that token, to prevent other ticket buyers from snatching them.
The answer is simple and complex at the same time: "whenever is appropriate in your sales flow".
For example, you could call the seats.io API to book seats right before you collect their payment. Or you could pre-book some seats for VIPs before you even open up ticket sales.
For a more in-depth discussion on this topic, check this page.
Whenever you change availability for a seat, we will push out this change to everyone who has the floor plan for your event open in their browser, in near real-time.
In other words: you can look at the seats on a floor plan as a collection of on/off switches, controllable via the REST API. You decide when you switch seats on and off, and by doing so, everyone who is looking at the floor plan will see the availability changes happening live.
There's more than just 'booking' a seat. You can use your own statuses (i.e. other than BOOKED) as well, read more here.