Seats

The seat resource represents the seats in a seating plan in a specific event or subevent.

Resource description

The seat resource contains the following public fields:

Field

Type

Description

id

integer

Internal ID of this seat

subevent

integer

Internal ID of the subevent this seat belongs to

zone_name

string

Name of the zone the seat is in

row_name

string

Name/number of the row the seat is in

row_label

string

Additional label of the row (or null)

seat_number

string

Number of the seat within the row

seat_label

string

Additional label of the seat (or null)

seat_guid

string

Identifier of the seat within the seating plan

product

integer

Internal ID of the product that is mapped to this seat

blocked

boolean

Whether this seat is blocked manually.

orderposition

integer / object

Internal ID of an order position reserving this seat.

cartposition

integer / object

Internal ID of a cart position reserving this seat.

voucher

integer / object

Internal ID of a voucher reserving this seat.

Endpoints

GET /api/v1/organizers/(organizer)/events/(event)/seats/
GET /api/v1/organizers/(organizer)/events/(event)/subevents/(subevent_id)/seats/

Returns a list of all seats in the specified event or subevent. Depending on whether the event has subevents, the according endpoint has to be used.

Example request:

GET /api/v1/organizers/bigevents/events/sampleconf/seats/ HTTP/1.1
Host: pretix.eu
Accept: application/json

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
    "count": 500,
    "next": "https://pretix.eu/api/v1/organizers/bigevents/events/sampleconf/seats/?page=2",
    "previous": null,
    "results": [
        {
            "id": 1633,
            "subevent": null,
            "zone_name": "Ground floor",
            "row_name": "1",
            "row_label": null,
            "seat_number": "1",
            "seat_label": null,
            "seat_guid": "b9746230-6f31-4f41-bbc9-d6b60bdb3342",
            "product": 104,
            "blocked": false,
            "orderposition": null,
            "cartposition": null,
            "voucher": 51
        },
        {
            "id": 1634,
            "subevent": null,
            "zone_name": "Ground floor",
            "row_name": "1",
            "row_label": null,
            "seat_number": "2",
            "seat_label": null,
            "seat_guid": "1d29fe20-8e1e-4984-b0ee-2773b0d07e07",
            "product": 104,
            "blocked": true,
            "orderposition": 4321,
            "cartposition": null,
            "voucher": null
        },
        // ...
    ]
}
Query Parameters:
  • page (integer) – The page number in case of a multi-page result set, default is 1.

  • zone_name (string) – Only show seats with the given zone_name.

  • row_name (string) – Only show seats with the given row_name.

  • row_label (string) – Only show seats with the given row_label.

  • seat_number (string) – Only show seats with the given seat_number.

  • seat_label (string) – Only show seats with the given seat_label.

  • seat_guid (string) – Only show seats with the given seat_guid.

  • blocked (boolean) – Only show seats with the given blocked status.

  • is_available (boolean) – Only show seats that are (not) currently available.

  • expand (string) – If you pass "orderposition", "cartposition", or "voucher", the respective field will be shown as a nested value instead of just an ID. This requires permission to access that object. The nested objects are identical to the respective resources, except that order positions will have an attribute of the format "order": {"code": "ABCDE", "event": "eventslug"} to make matching easier, and won’t include the seat attribute, as that would be redundant. The parameter can be given multiple times.

Parameters:
  • organizer – The slug field of the organizer to fetch

  • event – The slug field of the event to fetch

  • subevent_id – The id field of the subevent to fetch

Status Codes:
  • 200 OK – no error

  • 401 Unauthorized – Authentication failure

  • 403 Forbidden – The requested organizer does not exist or you have no permission to view this resource.

  • 404 Not Found – Endpoint without subevent id was used for event with subevents, or vice versa.

GET /api/v1/organizers/(organizer)/events/(event)/seats/(id)/
GET /api/v1/organizers/(organizer)/events/(event)/subevents/(subevent_id)/seats/(id)/

Returns information on one seat, identified by its ID.

Example request:

GET /api/v1/organizers/bigevents/events/sampleconf/seats/1634/?expand=orderposition HTTP/1.1
Host: pretix.eu
Accept: application/json

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
    "id": 1634,
    "subevent": null,
    "zone_name": "Ground floor",
    "row_name": "1",
    "row_label": null,
    "seat_number": "2",
    "seat_label": null,
    "seat_guid": "1d29fe20-8e1e-4984-b0ee-2773b0d07e07",
    "product": 104,
    "blocked": true,
    "orderposition": {
        "id": 134,
        "order": {
            "code": "U0HW7",
            "event": "sampleconf"
        },
        "positionid": 1,
        "item": 104,
        "variation": 59,
        "price": "60.00",
        "attendee_name": "",
        "attendee_name_parts": {
            "_scheme": "given_family"
        },
        "company": null,
        "street": null,
        "zipcode": null,
        "city": null,
        "country": null,
        "state": null,
        "discount": null,
        "attendee_email": null,
        "voucher": null,
        "tax_rate": "0.00",
        "tax_value": "0.00",
        "secret": "4rfgp263jduratnsvwvy6cc6r6wnptbj",
        "addon_to": null,
        "subevent": null,
        "checkins": [],
        "downloads": [],
        "answers": [],
        "tax_rule": null,
        "pseudonymization_id": "ZSNYSG3URZ",
        "canceled": false,
        "valid_from": null,
        "valid_until": null,
        "blocked": null,
        "voucher_budget_use": null
    },
    "cartposition": null,
    "voucher": null
}
Parameters:
  • organizer – The slug field of the organizer to fetch

  • event – The slug field of the event to fetch

  • subevent_id – The id field of the subevent to fetch

  • id – The id field of the seat to fetch

Query Parameters:
  • expand (string) – If you pass "orderposition", "cartposition", or "voucher", the respective field will be shown as a nested value instead of just an ID. This requires permission to access that object. The nested objects are identical to the respective resources, except that order positions will have an attribute of the format "order": {"code": "ABCDE", "event": "eventslug"} to make matching easier, and won’t include the seat attribute, as that would be redundant. The parameter can be given multiple times.

Status Codes:
  • 200 OK – no error

  • 401 Unauthorized – Authentication failure

  • 403 Forbidden – The requested organizer does not exist or you have no permission to view this resource.

  • 404 Not Found – Seat does not exist; or the endpoint without subevent id was used for event with subevents, or vice versa.

PATCH /api/v1/organizers/(organizer)/events/(event)/seats/(id)/
PATCH /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/seats/(id)/

Update a seat.

You can only change the blocked field.

Example request:

PATCH /api/v1/organizers/bigevents/events/sampleconf/seats/1636/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json

{
    "blocked": true
}

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{
    "id": 1636,
    "subevent": null,
    "zone_name": "Ground floor",
    "row_name": "1",
    "row_label": null,
    "seat_number": "4",
    "seat_label": null,
    "seat_guid": "6c0e29e5-05d6-421f-99f3-afd01478ecad",
    "product": 104,
    "blocked": true,
    "orderposition": null,
    "cartposition": null,
    "voucher": null
}
Parameters:
  • organizer – The slug field of the organizer to modify

  • event – The slug field of the event to modify

  • subevent_id – The id field of the subevent to modify

  • id – The id field of the seat to modify

Status Codes:
  • 200 OK – no error

  • 400 Bad Request – The seat could not be modified due to invalid submitted data

  • 401 Unauthorized – Authentication failure

  • 403 Forbidden – The requested organizer or event does not exist or you have no permission to change this resource.

  • 404 Not Found – Seat does not exist; or the endpoint without subevent id was used for event with subevents, or vice versa.

POST /api/v1/organizers/(organizer)/events/(event)/seats/bulk_block/
POST /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/seats/bulk_block/

Set the blocked attribute to true for a large number of seats at once. You can pass either a list of id values or a list of seat_guid values. You can pass up to 10,000 seats in one request.

The endpoint will return an error if you pass a seat ID that does not exist. However, it will not return an error if one of the passed seats is already blocked or sold.

Example request:

PATCH /api/v1/organizers/bigevents/events/sampleconf/seats/bulk_block/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json

{
    "ids": [12, 45, 56]
}

or

PATCH /api/v1/organizers/bigevents/events/sampleconf/seats/bulk_block/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json

{
    "seat_guids": ["6c0e29e5-05d6-421f-99f3-afd01478ecad", "c2899340-e2e7-4d05-8100-000a4b6d7cf4"]
}

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{}
Parameters:
  • organizer – The slug field of the organizer to modify

  • event – The slug field of the event to modify

  • subevent_id – The id field of the subevent to modify

Status Codes:
  • 200 OK – no error

  • 400 Bad Request – The seat could not be modified due to invalid submitted data

  • 401 Unauthorized – Authentication failure

  • 403 Forbidden – The requested organizer or event does not exist or you have no permission to change this resource.

  • 404 Not Found – Seat does not exist; or the endpoint without subevent id was used for event with subevents, or vice versa.

POST /api/v1/organizers/(organizer)/events/(event)/seats/bulk_unblock/
POST /api/v1/organizers/(organizer)/events/(event)/subevents/(id)/seats/bulk_unblock/

Set the blocked attribute to false for a large number of seats at once. You can pass either a list of id values or a list of seat_guid values. You can pass up to 10,000 seats in one request.

The endpoint will return an error if you pass a seat ID that does not exist. However, it will not return an error if one of the passed seat is already unblocked or is sold.

Example request:

PATCH /api/v1/organizers/bigevents/events/sampleconf/seats/bulk_unblock/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json

{
    "ids": [12, 45, 56]
}

or

PATCH /api/v1/organizers/bigevents/events/sampleconf/seats/bulk_unblock/ HTTP/1.1
Host: pretix.eu
Accept: application/json, text/javascript
Content-Type: application/json

{
    "seat_guids": ["6c0e29e5-05d6-421f-99f3-afd01478ecad", "c2899340-e2e7-4d05-8100-000a4b6d7cf4"]
}

Example response:

HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json

{}
Parameters:
  • organizer – The slug field of the organizer to modify

  • event – The slug field of the event to modify

  • subevent_id – The id field of the subevent to modify

Status Codes:
  • 200 OK – no error

  • 400 Bad Request – The seat could not be modified due to invalid submitted data

  • 401 Unauthorized – Authentication failure

  • 403 Forbidden – The requested organizer or event does not exist or you have no permission to change this resource.

  • 404 Not Found – Seat does not exist; or the endpoint without subevent id was used for event with subevents, or vice versa.