Appearance
Reissue a card
POST
/cards/{id}/reissue
Returns a fresh single-use install link with its expiry, and the same link as an inline QR. The card keeps its identity, its stamps and its balance — this is the "new phone" path, not a replacement card — and the previous install link stops working. An ARCHIVED card cannot be reissued and returns 409 conflict: archiving unbound the card from its holder’s device permanently, so there is nothing left to install. A DISABLED card can be reissued, and the link works — the card simply stays refused at the till until it is enabled again. A card whose PROGRAM is deleted, inactive or suspended cannot be reissued: 409 program_inactive — reactivate the program first. Requires an UNRESTRICTED key: a key limited to specific locations is refused with 403 location_scope_unsupported, and shop-wide data is never silently served to it instead. A card is not attributed to a location anywhere in TesserApp — it belongs to a program, and programs belong to the whole shop — so there is no correct subset of cards to serve such a key.
Authorizations
ApiKeyBearer
A shop-scoped API key created in the dashboard and shown exactly once. An MCP tmk_ key presented here returns a 401 that names the mistake.
Type
HTTP (bearer)
Parameters
Header Parameters
Idempotency-Key
Makes a retry safe: a repeat with the same key and body replays the stored response; the same key with a different body is a 409. Keys are remembered for 24h (IDEMPOTENCY_DEDUPE_WINDOW_HOURS). A request without the header is processed normally.
Type
string
Max Length
255Path Parameters
id*
An opaque id. The API never promises an id format.
Type
Requiredstring
Responses
Reissue a card
application/json
JSON "id": "cin_docsfixture0001", "install_url": "https://tesserapp.eu/install#p=prg_docsfixture0001&t=itk_docsfixture0001", "install_url_expires_at": "2026-10-04T10:15:00.000Z", "install_qr_svg": "<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 25" shape-rendering="crispEdges">…</svg>"
{
}
POST
/cards/{id}/reissue