Skip to content
Docs
Operation

Generate Seats

POST/venues/{id}/layouts/{layoutId}/areas/{areaId}/seats/generate
Auto-generate seats for an area based on a pattern. Specify the number of rows, seats per row, and naming conventions-the system creates all the seats automatically. Perfect for standard theatre-style seating. You can customise row labels (A, B, C or 1, 2, 3) and seat numbering patterns (left-to-right, alternating, etc.).

When to use this

  • Setting up a new theatre with standard row seating
  • Creating sections with consistent seat numbering
  • Quickly populating a venue layout for testing

Path parameters

idstringRequired
Venue ID
layoutIdstringRequired
Layout ID
areaIdstringRequired
Area ID

Headers

Idempotency-KeystringOptional
Makes the write safe to retry. The first request with a key does the work and its response is stored for 24 hours; a repeat with the same key and the same request (method, path, query, X-Ticketlayer-Channel, TL-Version and body) gets that stored status and body back, marked `Idempotent-Replay: true`, without running again. The key is scoped to your organisation and your credential. The same key with a different request is 422 IDEMPOTENCY_KEY_REUSED; a repeat while the first is still running waits for it, then answers 409 IDEMPOTENT_REQUEST_IN_PROGRESS if it has not finished. Only a 2xx is stored: after an error the key is free again. Omit the header and the request behaves as it always has.

Body

sectionstringSection name for all generated seats
startRow*stringStarting row (can be letter A-Z or number)
endRow*stringEnding row (can be letter A-Z or number)
seatsPerRow*numberNumber of seats per row
rowPrefixstringPrefix for row labels
seatPrefixstringPrefix for seat numbers
categoryIdstringCategory ID for all generated seats
skipRowsstring[]Rows to skip
skipSeatsstring[]Specific seats to skip (format: row-seat)

Returns

Seats generated successfully

Errors

400
Bad Request - Invalid input
401
Unauthorized - Authentication required
403
Forbidden - Insufficient permissions
404
Not Found - Resource not found
500
Internal Server Error

Every error names its code and links to it. All error codes

Notes

Note
Generated seats can be individually edited afterwards if needed.
Tip
Use this for the bulk of seats, then add individual accessible or special seats separately.

Related

import { BackstageClient } from '@ticketlayer/backstage';const client = new BackstageClient({  organisationSlug: 'your-org',});client.setAccessToken('YOUR_ACCESS_TOKEN');// Generate Seats For Areaconst result = await client.seatsforarea.generateSeatsForArea('{{ID}}', { /* request body */ });console.log('Operation completed:', result);
Response 201
{
  "seatsGenerated": 200,
  "seats": [
    {
      "id": "vlas_abc123",
      "section": "Orchestra Center",
      "row": "A",
      "number": "15",
      "label": "Orchestra Center, Row A, Seat 15",
      "categoryId": "vlc_premium",
      "status": "available",
      "holdType": "string",
      "attributes": [
        "string"
      ],
      "companionSeats": [
        "string"
      ],
      "companionTo": "string",
      "position": {
        "x": 0,
        "y": 0,
        "rotation": 0
      },
      "internalNotes": "string",
      "publicNotes": "string"
    }
  ]
}

Try it in test mode

Path parameters
Venue ID
Layout ID
Area ID
Body
Section name for all generated seats
Starting row (can be letter A-Z or number)
Ending row (can be letter A-Z or number)
Number of seats per row
Prefix for row labels
Prefix for seat numbers
Category ID for all generated seats
Rows to skip
Specific seats to skip (format: row-seat)