Licensing & Device Identity

How seats work when your app embeds the TheStage Apple SDK.

Commercial terms and pricing are in the Apple SDK Product Terms — contact TheStage AI for quotes. This page is the integrator-facing product summary only.

Initialize registers the device

Call once before any pipeline / start_model:

Surface

Call

Swift

try await TheStageAI.shared.initialize(apiToken: "…")

Flutter

await TheStageFlutterSDK.initialize(api_token: '…')

A successful initialize registers the device with TheStage (online validation). Pipelines throw if the SDK has not been initialized.

Seat = (apiToken, deviceId)

A billable Device Seat is the pair (apiToken, deviceId):

  • ``apiToken`` identifies the customer. Different tokens on the same physical phone or Mac are different seats.

  • ``deviceId`` identifies the registered device for that token.

Product guarantee: reinstalling the same app on the same device is intended to keep the same seat.

Seat counts, plan limits, and overages are defined in your commercial arrangement with TheStage.

Offline use

After a recent successful online validation, the app can keep working for a limited offline grace period. Treat online initialize as required for first use and for renewing access.

Agent checklist

  • Always initialize before constructing pipelines or calling start_model.

  • One seat = (apiToken, deviceId).

  • For pricing / seat plans → open a Service Request at app.thestage.ai/contact.

  • Do not depend on internal ID derivation or backend field names — those are not part of the public contract.