DOCS LLMs

API Quickstart

Introduction to the LicenseSeat API.

IMPORTANT

Full API Docs — To see the full LicenseSeat API docs, together with the LicenseSeat OpenAPI spec, head to the LicenseSeat API Reference page. It also has an interactive experience with request testing, error codes, full schemas, and live examples.

Essentials

  • Base URL: https://licenseseat.com/api/v1
  • Auth: Bearer token in Authorization header
  • Format: JSON request/response bodies
  • Errors: Structured format with error.code and error.message

All license operations are product-scoped. The product slug is part of the URL path; the license key belongs in the bounded JSON request body so it does not leak through URL logs, browser history, proxy traces, or monitoring tools:

curl -X POST https://licenseseat.com/api/v1/products/my-app/licenses/validate \
  -H "Authorization: Bearer pk_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"license_key":"XXXX-XXXX-XXXX-XXXX","fingerprint":"device-unique-id"}'

fingerprint is the canonical device-binding field. device_id remains accepted as a legacy alias for compatibility with older SDKs and integrations.

Create licenses from your backend

For custom stores and payment integrations, see Create a license. This is a backend operation using a secret key with licenses:create; a publishable key embedded in an app cannot issue licenses. The guide explains plan_key, request format, delivery of the returned key, and retry handling.

Response Format

All responses include an object field identifying the type:

{
  "object": "validation_result",
  "valid": true,
  "license": { ... },
  "activation": { ... }
}

Rate Limits

Plan Requests/min Requests/day
Free 60 1,000
Pro 300 50,000
Enterprise Unlimited Unlimited

Rate limit headers included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset