Skip to content
Docs
Operation

Update Venue Layout

PATCH/venues/{id}/layouts/{layoutId}
Update a venue layout's basic properties. Change the layout name, description, or status. This doesn't affect the areas, seats, or categories within the layout-use the specific area and seat endpoints for that. Layouts let you have different seating configurations for the same venue, like "Concert Setup" vs "Theatre Setup".

When to use this

  • Renaming a layout after finalising its configuration
  • Marking a layout as active or archived
  • Updating the description for clarity

Path parameters

idstringRequired
Venue ID
layoutIdstringRequired
Layout 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

namestringLayout name
descriptionstringLayout description
status"active" | "archived"Layout status
totalCapacitynumberTotal capacity
▼floorsobject[]Floors for multi-level venues
idstringFloor ID (auto-generated if not provided)
name*stringFloor name
displayOrder*numberDisplay order (0 = ground, higher = upper floors)
descriptionstringFloor description
▼categoriesobject[]Pricing categories/zones
idstringCategory ID (auto-generated if not provided)
name*stringCategory name
descriptionstringCategory description
displayOrder*numberDisplay order in UI
colorstringHex color for visual distinction
▼areasobject[]Venue areas (GA and allocated)
idstringArea ID (auto-generated if not provided)
name*stringArea name
descriptionstringArea description
type*"unallocated" | "allocated"Area type (unallocated = GA, allocated = assigned seating)
status"active" | "inactive"
floorIdstringFloor ID (for multi-level venues)
capacity*numberTotal capacity
displayOrder*numberDisplay order in UI
colorstringHex color for visual distinction
▶sectionsobject[]Optional subdivisions within the area
▶positionobjectVisual positioning for GA areas on map
▶seatsobject[]Seats array (only for allocated seating areas)
▼decorationsobject[]Visual elements (stages, pillars, labels, etc.)
idstringDecoration ID (auto-generated if not provided)
type*"stage" | "pillar" | "barrier" | "aisle" | "wall" | "exit" | "entrance" | "bar" | "restroom" | "label" | "custom"Decoration type
namestringDecoration name
▶position*objectPosition and dimensions
labelstringDisplay label text
▶styleobjectVisual styling
tagsstring[]Layout tags

Returns

Venue layout updated 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
This only updates layout metadata-use other endpoints to modify areas or seats.
Tip
Create separate layouts for different event configurations rather than constantly updating one.

Related

import { BackstageClient } from '@ticketlayer/backstage';const client = new BackstageClient({  organisationSlug: 'your-org',});client.setAccessToken('YOUR_ACCESS_TOKEN');// Update venuelayoutconst updated = await client.venuelayout.update('{{VENUELAYOUT_ID}}', {  name: 'Updated Name',  // Add fields to update});console.log(`Updated venuelayout: ${updated.name}`);
Response 200
{
  "venueLayout": {
    "id": "vlt_abc123",
    "venueId": "vnu_def456",
    "organisationId": "org_xyz789",
    "accountId": "acc_ghi012",
    "name": "Theatre Mode",
    "description": "Standard theatre configuration",
    "status": "active",
    "totalCapacity": 1500,
    "categories": [],
    "areas": [],
    "decorations": [],
    "tags": [
      "theatre",
      "seated"
    ],
    "isDeleted": false,
    "createdAt": "2024-12-28T10:30:00Z",
    "updatedAt": "2024-12-28T14:45:00Z",
    "createdBy": "usr_abc123"
  }
}

Try it in test mode

Path parameters
Venue ID
Layout ID
Body
Layout name
Layout description
Layout status
Total capacity
Floors for multi-level venues
Pricing categories/zones
Venue areas (GA and allocated)
Visual elements (stages, pillars, labels, etc.)
Layout tags