Skip to content

Blocking seats

Take individual inventory off sale, schedule its release, and return blocked seats safely.

Updated View as Markdown

Blocking is organizer-controlled inventory: production holds, comps, sightline closures, press allocations, or seats not ready for sale. It is not a buyer hold and does not consume a booked-seat credit.

Block seats

POST/v1/events/:key/blockSecret key, dashboard session, or event:block manage token
curl -sX POST "https://api.seatlayer.io/v1/events/<YOUR_EVENT_KEY>/block" \
  -H "authorization: Bearer $SEATLAYER_SECRET_KEY" \
  -H "content-type: application/json" \
  -d '{"labels":["A-1","A-2"]}'

Success returns:

{
  "ok": true,
  "blocked": ["A-1", "A-2"]
}

Blocking is atomic across the requested labels. Every label must exist and be free. If one is held, booked, blocked, or missing, nothing changes:

{
  "error": "conflict",
  "conflicts": [
    {
      "label": "A-2",
      "status": "held"
    }
  ]
}

Schedule automatic release

Add a future epoch-ms releaseAt:

{
  "labels": ["P-1", "P-2"],
  "releaseAt": 1767200400000
}

A past or invalid time does not schedule a release; the block remains until an explicit unblock. Store your intended release time in your own operation record because the basic block response returns only the blocked labels.

Say why

Add an optional reason (up to 280 characters). It is kept with the block in the event’s history, next to who blocked the seats:

{
  "labels": ["P-1", "P-2"],
  "reason": "Camera platform"
}

Unblock selected seats

POST/v1/events/:key/unblockSecret key, dashboard session, or event:block manage token
curl -sX POST "https://api.seatlayer.io/v1/events/<YOUR_EVENT_KEY>/unblock" \
  -H "authorization: Bearer $SEATLAYER_SECRET_KEY" \
  -H "content-type: application/json" \
  -d '{"labels":["A-1","A-2"]}'

Non-blocked labels are ignored. The response contains the labels actually returned to sale.

Unblock all

POST/v1/events/:key/unblock-allSecret key, dashboard session, or event:block manage token

Puts every manually blocked seat back on sale, except seats kept aside in a named reservation from the Control room; those stay reserved until their reservation is released. No body is required. A successful response is:

{
  "ok": true,
  "freed": 12
}

Buyer and operator behavior

Blocked inventory is exposed to buyer surfaces as not_for_sale; buyers do not see your internal reason. Live SDK and control-room views repaint after the mutation without polling.

State change Use
free → blocked block
blocked → free unblock or unblock-all
booked → free booking-safe cancellation
free → booked from a trusted Platform backend direct inventory booking

Checklist

  • Secret keys are used only from a trusted server.
  • Browser operator tokens carry only event:block when that is sufficient.
  • Batch conflicts are shown as a retry/reselect action.
  • Scheduled-release times are future UTC epoch milliseconds.
  • Blocking is not treated as a payment reservation.
  • The host keeps its own reason and operator audit context.

For sections and zones, use inventory and availability.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close