API
Editions and Payments
Read minted editions, resolve one by contract and token id, follow a broadcast transaction, and read payment legs.
An edition (a ProductInstance) is a numbered, ownable copy of a smart product. Editions are
created by the chain, not by this API: you broadcast a mint, and the edition appears once it
confirms. There is no create endpoint here, and that is deliberate.
instanceId, instanceNumber and feePaid are chain-side BigInts and are serialized as
strings over the wire.
Editions
| Method | Path | Auth | Purpose |
|---|---|---|---|
GET | /api/product-instances/lookup | app key | Resolve an edition by contract and token id. |
PATCH | /api/product-instances/{id}/burn | app key + user | Record a burn against an edition. |
PATCH | /api/product-instances/{id}/featured | app key + user | Toggle an edition's featured flag on the owner's profile. |
POST | /api/product-instances/{id}/resave | app key + user | Save again: re-render the edition into its saved copy. Owner-only; 409 on a locked or burned edition. |
POST | /api/product-instances/{id}/save-as/plan | app key + user | Save As, leg one: the items to write (landing URL, bytes, tags), the key to sign with, the per-item cap, and the wallet's allowance. Owner-only; 409 without a saved copy. |
POST | /api/product-instances/{id}/save-as/receipts | app key + user | Save As, leg two: report uploaded data items. Each is verified against the saved copy before it is recorded; a 422 names the receipt and whether to retry. Returns the manifest once every image is written. |
POST | /api/product-instances/{id}/save-as/manifest | app key + user | Save As, leg three: the uploaded manifest. Verified, recorded as the edition's permanent manifest, and the detach is enqueued. |
POST | /api/product-instances/notes | app key + user | Post a private note at broadcast, keyed to the mint transaction id. The note is off-chain by design. |
GET | /api/product-images | public | The saved PNG render of a product or edition, for a surface drawing many at once. ids is required (at most 100, comma-separated) and entity is product_instance (default) or smart_product. Each id answers with the portrait render, else square, else landscape, with its role, url, contentType and bytes; prefer=og asks for the 1.91:1 social-card render instead, with no fallback to the others. An id with no render yet is absent from the answer, which is how you tell rendering from broken. |
Transactions and payments
| Method | Path | Auth | Purpose |
|---|---|---|---|
POST | /api/pending-transactions | user | Register a broadcast transaction so the protocol reconciles it if its confirmation never lands. |
GET | /api/pending-transactions/{txId} | public | Status of one registered transaction. |
GET | /api/pending-transactions/list | app key | List registered transactions. |
GET | /api/transactions | app key | Recorded chain transactions. |
GET | /api/transactions/{txId} | app key | One transaction by id. |
GET | /api/payments | app key | Payment legs, filterable by product, address and currency. |