Assets
Upload a file, such as a brand logo or a story photo, through a signed URL, then read or delete it; other operations refer to it by its ID.
x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
application/json- body
purpose*stringDeclared reason an asset was stored. Determines the content-type/size allowlist, the permission required to mint an upload for it, and whether it expires.
"brand_logo""brand_font""brand_music""brand_stinger""brand_card_ground""video_render""pitch_seed_pdf""pitch_seed_image""story_photo""layout_import""card_render"contentType*stringDeclared MIME type of the object about to be uploaded
1 <= lengthsizeBytes*integerDeclared size in bytes of the object about to be uploaded
0 <= valuefilename?stringClient's original file name, display only, never used as a storage key
1 <= lengthUpload reserved; PUT the object's bytes to uploadUrl next
application/json- response
assetId*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$uploadUrl*stringShort-lived signed URL the client PUTs the object's bytes to
urirequiredHeaders*Headers the client must send verbatim on its PUT; the signature covers them
expiresAt*stringISO 8601 timestamp after which uploadUrl no longer verifies
date-timecurl -X POST 'https://api.nuvelics.com/api/tenant/v1/assets' \ -H 'Content-Type: application/json' \ -d '{ "purpose": "brand_logo", "contentType": "string", "sizeBytes": 0}'{ "assetId": "string", "uploadUrl": "http://example.com", "requiredHeaders": { "property1": "string", "property2": "string" }, "expiresAt": "2019-08-24T14:15:22Z"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Uploaded object verified; asset is now ready
application/json- response
id*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$purpose*stringDeclared reason an asset was stored. Determines the content-type/size allowlist, the permission required to mint an upload for it, and whether it expires.
"brand_logo""brand_font""brand_music""brand_stinger""brand_card_ground""video_render""pitch_seed_pdf""pitch_seed_image""story_photo""layout_import""card_render"status*stringLifecycle state of an asset row
"pending""ready"contentType*stringMIME type: the declared one until complete, then the one the uploaded bytes were verified as, which may differ from the declared one
sizeBytes*integerSize in bytes; null until an upload has been declared
filename*stringClient's original file name, display only
createdBy*stringUser who minted the upload; null when written by a worker
^[0-7][0-9A-HJKMNP-TV-Z]{25}$expiresAt*stringISO 8601 timestamp after which this asset is swept; null if it never expires
date-timecreatedAt*stringISO 8601 creation timestamp
date-timecompletedAt*stringISO 8601 timestamp the upload was verified and marked ready
date-timecurl -X POST 'https://api.nuvelics.com/api/tenant/v1/assets/string/complete'{ "id": "string", "orgId": "string", "purpose": "brand_logo", "status": "pending", "contentType": "string", "sizeBytes": 0, "filename": "string", "createdBy": "string", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$The asset's metadata and a freshly signed download URL
application/json- response
id*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$orgId*stringOwning organization identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$purpose*stringDeclared reason an asset was stored. Determines the content-type/size allowlist, the permission required to mint an upload for it, and whether it expires.
"brand_logo""brand_font""brand_music""brand_stinger""brand_card_ground""video_render""pitch_seed_pdf""pitch_seed_image""story_photo""layout_import""card_render"status*stringLifecycle state of an asset row
"pending""ready"contentType*stringMIME type: the declared one until complete, then the one the uploaded bytes were verified as, which may differ from the declared one
sizeBytes*integerSize in bytes; null until an upload has been declared
filename*stringClient's original file name, display only
createdBy*stringUser who minted the upload; null when written by a worker
^[0-7][0-9A-HJKMNP-TV-Z]{25}$expiresAt*stringISO 8601 timestamp after which this asset is swept; null if it never expires
date-timecreatedAt*stringISO 8601 creation timestamp
date-timecompletedAt*stringISO 8601 timestamp the upload was verified and marked ready
date-timedownloadUrl*stringFreshly signed, short-lived URL to GET the object's bytes
uricurl -X GET 'https://api.nuvelics.com/api/tenant/v1/assets/string'{ "id": "string", "orgId": "string", "purpose": "brand_logo", "status": "pending", "contentType": "string", "sizeBytes": 0, "filename": "string", "createdBy": "string", "expiresAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "downloadUrl": "http://example.com"}x-api-key<token>A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.
id*stringAsset identifier
^[0-7][0-9A-HJKMNP-TV-Z]{25}$Asset deleted, row and object together
curl -X DELETE 'https://api.nuvelics.com/api/tenant/v1/assets/string'