Skip to content

Quickstart

From an empty workspace to a key your app accepts. You need a Sealcord account; the Console is at console.sealcord.com.

  1. Create a product and its signing key

    In the Console, add a product: choose its id (acme-notes) and its key prefix (ACN1-). Sealcord generates the product’s Ed25519 signing key and keeps the private half; you copy the public half into your app.

  2. Issue a key by hand

    From the Console, or with the Admin API, issue a licence for your own email address with a limit of one machine. The Admin API needs an admin API key with the licences:write scope, which an owner creates on the Console’s API keys page. It reads sc_, a 12-character prefix, _ and the secret; keep it on your server.

    Terminal window
    curl https://api.sealcord.com/v1/admin/licences \
    -H 'authorization: Bearer sc_<prefix>_<secret>' \
    -H 'content-type: application/json' \
    -d '{
    "product_id": "acme-notes",
    "email": "you@example.com",
    "limit_kind": "machines",
    "limit_count": 1
    }'

    The answer, 201 Created, carries the licence and its key:

    { "licence": { "id": "3c81e0a2-…", "product_id": "acme-notes" }, "key": "ACN1-…" }
  3. Check it in your app

    Embed the public key, and verify the key offline: its signature, its product and its expiry. Then activate the machine online, and keep the signed verdict the API answers with for when the app is offline.

  4. Issue from your checkout

    Call the Admin API from the backend that takes payment, once per paid order, or connect Polar and map its products so its orders issue licences for you.

  • Concepts: the words these pages use.
  • Keys: what a key carries, and how to check one.
  • Webhooks: hear about licence and machine changes on your own server.
  • Admin API and errors: the routes your backend calls, and what each answer means.
  • API reference: every route, its body and its answers.