API reference
The template object
A pass design with placeholders, and the rules for their values.
The template
What you send to create a template, or to save its changes. A pass made from it is filled from its own values and holder. 11 fields.
namestringrequired· 1 to 80 charactersWhat people see in the dashboard.
slugstringIts name in the API, up to 40 lowercase letters, digits and hyphens. Left out, made from the name. It can't change once it's made.
designobjectrequiredA pass, with {{placeholders}} in its text where each pass has its own values: "value": "{{points}}". {{holder.name}} and {{holder.email}} are the holder's.
A rule for each placeholder in the design. One without a rule is required text.
holderRequiredobjectWhether each pass needs the holder's name and email. Those the design shows are always needed.
issuerstring· at least 1 character· or null· default nullThe issuer its passes are signed with, by slug. Null: each pass names its own, or uses the default.
installHeadlinestring· up to 120 characters· or null· default nullThe install page's heading for its passes. Null: ours.
updatePassesone of: none, allSaving changes only: all gives the passes made from it the new design now (one operation each), none keeps theirs until you update them. Default none.
fillobjectSaving changes with "updatePasses": "all": values for placeholders the new design adds, for the passes made before it.
workspaceIdsarray of string· up to 500With "sharedWith": "selected": the workspaces. Leave it out with an API key.
Placeholder object
How one placeholder's values are checked. 5 fields.
keystringrequiredThe name in the design's {{…}}: a lowercase letter, then lowercase letters, digits or _.
labelstring· 1 to 60 charactersWhat the dashboard and spreadsheet imports call it. Left out, made from the key: member_id is "Member ID".
typeone of: text, number, date· default "text"number must be a number and date a date as YYYY-MM-DD, which the pass shows as "31 Dec 2026"; text is anything.
requiredboolean· default trueWhether every pass needs a value. A pass is never issued with a placeholder left in it.
defaultstring· up to 1,024 charactersUsed when a pass has no value for it.
Holder object
Who the pass is for. Kept with the pass, never put on it unless the design shows it, and never sent in webhooks. 2 fields.
namestring· up to 100 charactersThe holder's name: {{holder.name}} in a design.
emailstring· up to 254 charactersThe holder's email address: {{holder.email}} in a design. Find their passes with q.
These tables are read from the schemas the API checks with, so they always match it. The same is in the OpenAPI document.