Skip to content

Install a server SDK

Install a pinned SeatLayer 0.8.0 server SDK, keep the secret key on your backend, and choose the exact language guide for your stack.

Updated View as Markdown

SeatLayer publishes official server SDKs for seven languages. Every package on this page is pinned to the released 0.8.0 contract so an install command, a method example, and the linked source all describe the same artifact.

Choose and install

Runtime Pinned install Language guide
Node.js npm install @seatlayer/server@0.8.0 Node.js
Python pip install seatlayer==0.8.0 Python
PHP composer require seatlayer/seatlayer-php:0.8.0 PHP
Java io.seatlayer:seatlayer-java:0.8.0 Java
Go go get github.com/seatlayer/seatlayer-go@v0.8.0 Go
Ruby gem install seatlayer -v 0.8.0 Ruby
.NET dotnet add package SeatLayer --version 0.8.0 .NET

The server SDK overview explains which work belongs in these trusted packages. Each language guide includes its runtime requirement, exact namespace spelling, error types, retry behavior, source, registry, and a minimal inspect-and-book flow.

Set the secret key

Store the key in your server’s secret manager and expose it to the application as an environment variable. The placeholder below is deliberately not a usable credential:

export SEATLAYER_SECRET_KEY=sk_test_replace_with_your_key

Use a test key while integrating. A test key can act only on test resources; a live key can act only on live resources. Crossing those modes returns 403 mode_mismatch. A publishable pk_… key is not accepted by a server client.

Create a client

import { SeatLayer } from '@seatlayer/server';

const seatlayer = new SeatLayer(process.env.SEATLAYER_SECRET_KEY!);
import os
from seatlayer import SeatLayer

seatlayer = SeatLayer(os.environ["SEATLAYER_SECRET_KEY"])
use SeatLayer\SeatLayer;

$seatlayer = new SeatLayer(getenv('SEATLAYER_SECRET_KEY'));
import io.seatlayer.SeatLayer;

SeatLayer seatlayer = new SeatLayer(System.getenv("SEATLAYER_SECRET_KEY"));
client, err := seatlayer.New(os.Getenv("SEATLAYER_SECRET_KEY"))
if err != nil {
    return err
}
require "seatlayer"

client = SeatLayer::Client.new(ENV.fetch("SEATLAYER_SECRET_KEY"))
using SeatLayer;

var client = new SeatLayerClient(
    Environment.GetEnvironmentVariable("SEATLAYER_SECRET_KEY")!
);

Resource namespace map

The capability is shared; the spelling follows each language. These are the exact top-level resources in 0.8.0:

Language Exact client resources
Node.js charts, channels, events, inventory, performanceGroups, sessions, seasons, templates, webhooks, workspaces
Python charts, channels, events, inventory, performance_groups, sessions, seasons, templates, webhooks, workspaces
PHP charts, channels, events, inventory, performanceGroups, sessions, seasons, templates, webhooks, workspaces
Java charts(), channels(), events(), inventory(), performanceGroups(), sessions(), seasons(), templates(), webhooks(), workspaces()
Go Charts, Channels, Events, Inventory, PerformanceGroups, Sessions, Seasons, Templates, Webhooks, Workspaces
Ruby charts, channels, events, inventory, performance_groups, sessions, seasons, templates, webhooks, workspaces
.NET Charts, Channels, Events, Inventory, PerformanceGroups, Sessions, Seasons, Templates, Webhooks, Workspaces

Verify the setup

Before handling a real checkout:

  1. Start with sk_test_… and confirm the client reports test mode.
  2. Choose your language guide above and run its inspect-and-book example against a test Event and a hold created by a buyer surface.
  3. Store your own stable commercial order ID as bookingRef.
  4. Add typed error handling and operation-safe retries.
  5. Verify signed events with the webhook SDK helpers.
  6. Complete the going-live checklist before changing to a live key.

Do not calculate a charge from browser-submitted labels, quantities, or totals. For an Event checkout, retrieve the hold on your server and use its retained items as the inventory authority. Fixed Renewable Season holds intentionally contain inventory identity rather than a package price; your trusted commerce system owns that price.

Continue

Navigation

Type to search…

↑↓ navigate↵ selectEsc close