🧩Request Payloads & Recipes
Copy-paste request payloads for every Issue & Transfer scenario — issue to self, issue-on-buyer, custom collection, NFC tags, attachments and bulk.
Ready-to-use request bodies for POST <base_url>/port/api/v1/commerce/srrs. Every example here is valid against SRR metadata schema v2.2. For the full field reference and response shapes see Issue & Transfer; for failures see Errors & Troubleshooting.
The file URLs in these examples (thumbnailURL, image, contractTerms.fileURL, attachmentFiles[*].url) show the shape of the finalUrl returned by /commerce/signedUrls. Always use that returned value verbatim — it is available immediately in the signed-URL response, before the upload itself.
All requests require the headers commerce-api-key, issuer-address, Content-Type: application/json — see the Issue & Transfer SRR overview.
Body shape
{
"requestId": "<optional unique UUID>",
"payload": [ /* one or more SRR entries */ ]
}requestId
string
optional
Unique idempotency key (UUID recommended). A reused value is rejected — see idempotency.
payload
array
required
1+ SRR entries. Minimum 1; no hard maximum (≤ 250 recommended for stable processing).
payload[*] fields
payload[*] fieldsexternalId
string
required
Your unique reference for this SRR (UUID recommended). Echoed back in the response.
isPrimaryIssuer
boolean
required
true if you are the primary issuer.
lockExternalTransfer
boolean
required
true to disable standard ERC-721 transfer methods.
artistAddress
string (EOA/LUW)
required
Artist's Ethereum address. Must be a known LUW.
to
string (EOA)
optional
Recipient — SRR is transferred here after minting. Omit to keep it in your LUW.
collectionAddress
string
optional
Custom collection contract to mint into (must be owned by issuer-address).
attachmentFiles
array
optional
Previously uploaded files; folded into metadata server-side. See recipe.
externalUrls
string[]
optional
Only the first URL is used (becomes metadata.external_url).
Recipes
Issue a single SRR into your own LUW (no to, no collection).
Set to to mint and transfer to a buyer's EOA in one call.
Set collectionAddress to mint into a collection you own.
Attach IC tag UIDs. In v2.2, chipUIDs and startbahnCertICTagUIDs are mutually required and must hold the same values. List multiple UIDs to tag one artwork with multiple chips.
Each IC tag UID consumes one unit of the issuer LUW's NFC-tag allowance. Exceeding it returns LUW missing NFC tag! — see NFC tag errors.
Reference files already uploaded via /signedUrls. The server resolves each URL, reads its hash, and folds it into metadata.digitalComponents (artwork) or metadata.attachmentFiles (other categories).
category here accepts certificate, for_authenticity, artwork, installation. Wait until the file's hash is computed (poll /fileMetadata) — otherwise issuance returns Attachment hash not ready ….
The same rule applies to metadata.thumbnailURL, metadata.image and metadata.contractTerms.fileURL: they must be finalUrls from the signed-URL flow (or ipfs:// URLs) with their cid already computed — external hosts are rejected. See File URLs.
Rules to remember
Required metadata fields (v2.2):
$schema,name,title,thumbnailURL,image,medium,yearOfCreation.All file URLs must come from the signed-URL flow.
thumbnailURL,image,contractTerms.fileURLandattachmentFiles[*].urlmust be thefinalUrls returned by/commerce/signedUrls. External URLs are rejected with 400 — see File URLs. (external_urlis exempt.)Metadata files must be public. Upload
thumbnailURL/image/contractTerms.fileURLfiles with a public category —non_attachment_file(recommended) orartwork. Private-category files (certificate,for_authenticity,installation) are not accessible to viewers and are rejected for these fields.NFC tags: include
chipUIDsandstartbahnCertICTagUIDswith identical values.Digital works: if
isDigital: true,digitalComponentsis required.No hard batch cap, but keep
payload≤ 250 entries for stable processing.Atomic batches: one failed entry cancels the whole request.
Need the response shape and per-field details? → Issue & Transfer. Hit an error? → Errors & Troubleshooting.
Last updated
Was this helpful?