Feel free to include more than one issuance in a single request via the payload array. The minimum number of issue requests is one. Though there is no fixed upper limit for the number of issue requests you can submit at one time, we recommend limiting batches to no more than 250 issue requests for optimal processing.
issue to issuer
If payload[*].to is not given, your SRR will be issued to your luw address
Headers
Name
Type
Description
Request Body
Name
Type
Description
The API responds with 201. see Response Body results[*].status for details of each entry.
After a successful issuance, 2 types of JSONs will be returned in results[*].srr.metadata:
json
It is converted from the originalJson. The object contains some values that are different from those that are written on chain. This json is meant to be easier for consumption on third party applications and it is maintained for backward compatibility. For example if an ipfs link exists in the metadata, this json converts it to an https link for easier consumption.
originalJson
It is equal to what is written on chain. So if you want to consume this field, some carings are needed. For example it can contain ipfs links like ipfs:// that requires conversion before a browser can display it.
* both of the above JSONs may be different from what originally sent in the request payload.
{"results": [ {"status":"waiting_for_mining","srr": {"tokenId":"149941159501","collectionContractAddress":"0x552e100d1c368435db99974C658c757E8A6102Dd","collection": {"contractAddress":"0x552e100d1c368435db99974C658c757E8A6102Dd","name":"Test","symbol":"TTT" },"artist": {"contractAddress":"0xA6E6a9E20a541680a1D6E1412f5088AefBF58a22","originalName":"artist orignal name","englishName":"artist english name","userType":"artist","createdAt":"2022-04-14T03:15:35.153Z","updatedAt":"2022-04-14T03:15:35.153Z" },"issuer": {"contractAddress":"0xA6E6a9E20a541680a1D6E1412f5088AefBF58a22","originalName":"artist orignal name","englishName":"artist english name","userType":"artist","createdAt":"2022-04-14T03:15:35.153Z","updatedAt":"2022-04-14T03:15:35.153Z" },"isPrimaryIssuer":true,"issuedAt":"2022-04-14T03:15:35.153Z","metadata": { "json": {// converted verion of originalJson. It converts some fields from the originalJson// for backward compatibility and easier consumption reasons// This JSON may be different from the one sent in the request payload, // because Startbahn update it to comply with the latest version },"originalJson": {// The JSON that is saved on chain.// This JSON may be different from the one sent in the request payload, // because Startbahn update it to comply with the latest version },"digest":"b764ad28dec64764c83089967db4710c94d831c677424d1883....", },"createdAt":"2022-04-14T03:15:35.153Z","updatedAt":"2022-04-14T03:15:35.153Z" },"externalId":"c0456840-5bdf-4375-a6ce-106697b7dfb7" } ]}
The API responds with 400 if request body invalid or some validation errors that can be instantly detected.
// If the metadata is same with another previous SRR{"statusCode":400,"message": {"results": [ {"status":"failed","externalId":"c0456840-5bdf-4375-a6ce-106697b7dfb7","message":"DUPLICATE_METADATA" } ] }}{"statusCode":400,"message": {"results": [ {"status":"failed","externalId":"c0456840-5bdf-4375-a6ce-106697b7dfb7","message":"DUPLICATE_CHIP" } ] }}{"statusCode":400,"message":"Request Content Error: Current request already logged with status successful"}{"statusCode":400,"message": {"results": [ {"status":"failed","externalId":"bulk20122fdredcd2dfve","message":"UNKNOWN_ERROR: external ID: bulk20122fdredcd2dfve." } ] }}{"statusCode":400,"message": {"results": [ {"status":"failed","externalId":"c0456840-5bdf-4375-a6ce-106697b7dfb7","message":"UNKNOWN_ARTIST" } ] }}// If metadata with issuer and artist combination is already sent{"statusCode":400,"message":"Request Content Error: Current request already logged with status successful"}// DTO validation error{"statusCode":400,"message": [ "payload.0.metadata is invalid. Check it against the metadata JSON schema. Details: should have required property 'title' ({\"missingProperty\":\"title\"}).",
"payload.0.artistAddress must be a valid Ethereum addresses","payload.0.externalId should not be empty","payload.0.externalId must be a string" ]}
Multiple issuance
In case of multiple/bulk issuance as soon as one case failed, the rest of the payload will be definitely failed as well.
Example of duplicated metadata
{"statusCode":400,"message": {"results": [ {"status":"failed","externalId":"anId","message":"DUPLICATE_METADATA" }, {"status":"failed","externalId":"anId","message":"SRR_NOT_CREATED: Not created because there is SRR in the same batch that error" } ] }}
Example of DTO validation error
{"statusCode":400,"message": [ "payload.1.metadata is invalid. Check it against the metadata JSON schema. Details: should have required property 'title' ({\"missingProperty\":\"title\"}).",
"payload.1.artistAddress must be a valid Ethereum addresses","payload.1.externalId should not be empty","payload.1.externalId must be a string" ]}
The API responds with 5xx if there are other issues, such as deeper validation errors.
// For example in case of collection ownership issue{"statusCode":500,"message":"STARTRAIL_ERROR: <reason>"}// In case there is unknown error. Please contact us.{"statusCode":500,"message":"UNKNOWN_ERROR: external ID: xxxx"}
If you have a TAG for a physical artwork please add
chipUIDs and startbahnCertICTagUIDs both at the same time and they both need to contain the same value. The value is an array containing the list of the Chip UIDs. For example