Skip to content

Offer a free trial

A trial is an ordinary active licence with an end date. Your app checks and activates a trial key like any other, so it needs no code of its own for trials: it only shows how long is left. There are three ways to issue one.

Where the trial starts How What happens at the end
You give someone a trial The Console’s issue dialog, with a trial and an end date The key expires; a purchase issues a new licence and key
Your website’s “Try it” form Your backend calls the Admin API with trial: true The key expires; a purchase issues a new licence and key
A subscription that starts with a trial Your Polar or Stripe integration issues it It converts when the customer pays, with the same key

Send trial: true with an expires_at, the end of the trial. A trial needs an end date: without expires_at the request answers 400 validation_failed.

Terminal window
curl https://api.sealcord.com/v1/admin/licences \
-H "authorization: Bearer $SEALCORD_TOKEN" \
-H 'content-type: application/json' \
-d '{
"product_id": "acme-notes",
"email": "ada@example.com",
"limit_kind": "machines",
"limit_count": 1,
"trial": true,
"expires_at": "2027-01-15T00:00:00Z"
}'

The key carries the end date, so your app can show the days left with no call, and stops accepting the key offline once it has passed. Limit it to one machine, as above, unless the trial is for a team. Send the key to the person who asked for it, as for a sale (Issue from your backend).

Keep one trial per person on your side: Sealcord issues as many as you ask for.

  • During the trial, it runs as on any licence. An active verdict on a trial is valid at most a day past the trial’s end (verdicts).
  • After the trial, activation answers 403 licence_expired and the stored verdict runs out. Show the end of the trial and where to buy, not an error (what to show).
  • When the customer buys, a trial you issued by hand or from your backend is not extended: your checkout issues a new licence with a new key, which the customer enters. A trial from a Polar or Stripe subscription converts in place, and the key stays the same.

A trial counts as an active licence until it ends, like any other. On the Free plan, with 30 active licences, a busy trial form can fill the plan: new keys, paid ones too, pause at the limit (plans). Keep trials short, and move to a paid plan before you open a trial form to everyone.

Issue a new trial licence with a later end date. A licence’s dates are in its key, so they never change after issue.

In the Console, trials show as active licences with a trial end. With the Admin API, a licence on a trial has trial_ends_at set; it is null for every other licence.

No. A trial issued by hand or from your backend involves no provider. Only a subscription that starts with a trial comes from one.