---
title: "Server SDKs"
description: "Choose an official SeatLayer server SDK to inspect holds, book inventory, manage Events, Performance Groups, and Seasons, and verify webhooks securely."
---

The server SDK is the trusted half of a Platform integration. It holds the
secret key, reads authoritative inventory, and commits booking after your own
commerce system has made its payment and order decision.

SeatLayer owns chart geometry, live seat state, holds, booking concurrency,
inventory records, allocation reporting, and inventory webhooks. Your platform
owns buyer identity, tax, payment, the commercial order, tickets or passes,
refunds, fulfilment, and customer support.

## Choose your runtime

| Language | Package | Released guide |
|---|---|---|
| Node.js | `@seatlayer/server@0.7.0` | [Use the Node.js SDK](/server-sdk/node/) |
| Python | `seatlayer==0.7.0` | [Use the Python SDK](/server-sdk/python/) |
| PHP | `seatlayer/seatlayer-php:0.7.0` | [Use the PHP SDK](/server-sdk/php/) |
| Java | `io.seatlayer:seatlayer-java:0.7.0` | [Use the Java SDK](/server-sdk/java/) |
| Go | `github.com/seatlayer/seatlayer-go@v0.7.0` | [Use the Go SDK](/server-sdk/go/) |
| Ruby | `seatlayer` gem `0.7.0` | [Use the Ruby SDK](/server-sdk/ruby/) |
| .NET | `SeatLayer` NuGet `0.7.0` | [Use the .NET SDK](/server-sdk/dotnet/) |

Start with the [pinned installation and shared setup](/server-sdk/install/).

Each language guide links to its exact public registry package and tagged
source. Start there when a package or repository search is how you found
SeatLayer; the installed package and its tagged README define the released
language surface, while this documentation explains the common booking
boundary.

## One contract, three inventory models

| Model | Server responsibility | Released server coverage |
|---|---|---|
| Event | Inspect a temporary hold and book one dated inventory occurrence | Available in all seven SDKs |
| Performance Group | Provision and operate one atomic fixed run of 2–8 compatible Events | All 13 secret-key operations in all seven SDKs |
| Fixed Renewable Season | Publish a 2–20-Event Plan, book the same seat, manage Seat Rights and renewals | All 48 frozen `0.7.0` operations in all seven SDKs |

Read [Choose an inventory model](/start/inventory-models/) before modelling a
multi-date product. A Performance Group is not a Season, and neither replaces
your commercial order system.

## What belongs on the server

- Create and publish charts, templates, Events, Workspaces, and private sales
  channels.
- Mint short-lived buyer or staff sessions after authenticating your own user.
- Retrieve an opaque buyer hold and derive the inventory truth from the server
  response.
- Book once with a stable `bookingRef`, then reconcile an unknown outcome.
- Coordinate Performance Group and Season catalogue/lifecycle operations.
- Verify webhook signatures and deduplicate delivered occurrences.

Never send the secret key to a buyer surface. Never trust a browser-supplied
price or total. Browser and native SDKs select and hold; the trusted server
inspects and books.

## Reliability contract

Every official `0.7.0` SDK retries reads and the same 14 mutations backed by
exact HTTP response replay: five core provisioning operations, Performance
Group create, and eight Season create/change operations. Holds, bookings,
lifecycle changes, show-once secrets, and raw mutations remain single-attempt.
Supplying an idempotency key does not turn an unsupported mutation into an
automatically retryable one.

Use the shared [errors, retries, and idempotency guide](/server-sdk/reliability/)
and the language page's exact error names. Use the [webhook verification
guide](/server-sdk/webhooks/) for the receiver boundary.

## Reference and escape hatch

Use three references together:

1. This language guide gives the exact resource namespace and common methods.
2. The language page's version-pinned resource source gives every `0.7.0`
   method name and signature, including all 48 Season operations.
3. The [operation support matrix](/server-api/operation-support/) maps those
   methods to wire operation IDs; [OpenAPI 3.1](/openapi.json) describes the
   current HTTP schemas.

The installed package's tagged source remains authoritative for that package.
Operation-level support does not promise that an older typed request exposes
every later additive field. In particular, all seven `0.7.0` SDKs expose
Performance Group create, but their typed create shape does not expose the
newer REST `inclusionMode` field. Use the REST/raw-request path for
`flexible_dates` until a typed package release adds it. A source-only candidate
is never a published package feature.