Assets
Get Assets for Organization
GET https://api.spectrumcustomizer.com/api/assets/saved/client/:clientHandle/organization/:clientIdentifier
This endpoint retrieves all uploaded assets assigned to an organization for a given client.
A sibling route also accepts an includeUploadedAssets boolean as a final path segment:
GET https://api.spectrumcustomizer.com/api/assets/saved/client/:clientHandle/organization/:clientIdentifier/include-uploaded-assets/:includeUploadedAssets
Path Parameters
| Name | Type | Description |
|---|---|---|
| clientHandle* | string | Handle of client |
| clientIdentifier* | string | Organization identifier (passed as the clientIdentifier route value) |
| includeUploadedAssets | bool | Optional path segment on the alternate route. When true, also returns plain uploaded assets. |
Optional Querystring Parameters
| Name | Type | Description |
|---|---|---|
| page | int | Page number (1 for first) |
| pageSize | int | Number of records per page |
| service | string | Filter assets by a specific service |
| embellishmentType | string | Filter by embellishment type (e.g. Embroidery, Print, Laser, etc.) |
| sortOrder | string | Sort order. Defaults to RecentlyUsed. |
200 JSON list of all matching assets
{
"lastModification": "2023-06-29T19:21:06.8069348+00:00",
"error": null,
"apiVersion": "3.0.23173.1",
"hash": "AfoO01vWutb1C6lHVCpCqw==",
"paging": {
"totalRecords": 3,
"pageCount": 1,
"page": 1,
"pageSize": 50
},
"contents": [
{
"id": 1234,
"uploadedAssetId": 19695342,
"uploadedAssetUri": "https://cdn.spectrumcustomizer.com:443/assets/UserUpload/b8873e1d-944f-490a-b0d8-0608f8039a37.png",
"metaData": {
"Url": "https://api.spectrumcustomizer.com/api/uploaded-assets/id/19695342"
},
"spectrumAssetReference": "CCG60521324002",
"clientAccountReference": "60521324",
"organizationIdentifier": "7000000000000300322",
"userFacingFileName": "white mba used",
"productionJobs": [
{
"id": 16797,
"uploadedAssetId": 19695342,
"clientHandle": "carhartt",
"providerHandle": "midsouth",
"providerReference": "MS-BG9RRNAH",
"reference": "CCG60521324002",
"clientReference": "CCG60521324002",
"template": "LIGHT",
"productColor": "Navy",
"placement": "RC",
"placementWidth": {
"value": "3.50n",
"type": "Big Number"
},
"placementHeight": {
"value": "3.00n",
"type": "Big Number"
},
"notes": "Keep uploaded logo color(s) ",
"createdDate": "2021-05-04T13:31:29.967",
"workFlowType": "New",
"embellishmentType": "Embroidery",
"status": "Completed",
"result": {
"id": 16730,
"receivedDate": "2021-05-04T13:31:29.967",
"threadCount": 4060,
"actualHeight": {
"value": "3.00n",
"type": "Big Number"
},
"actualWidth": {
"value": "3.50n",
"type": "Big Number"
},
"lastModification": "2022-05-08T18:32:37.607",
"outputs": [
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324002/CCG60521324002R1.DST",
"assetFormat": {
"id": 1008,
"extension": ".dst",
"mimeType": "application/octet-stream",
"clientHandle": "carhartt",
"requiresConversion": false,
"isImage": true,
"isRaster": false,
"conversionAssetFormat": null,
"name": "Data Stitch Tajima"
}
},
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324002/CCG60521324002R1.PNG",
"assetFormat": {
"id": 1,
"extension": ".png",
"mimeType": "image/png",
"clientHandle": null,
"requiresConversion": false,
"isImage": true,
"isRaster": true,
"conversionAssetFormat": null,
"name": "Portable Network Graphics"
}
},
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324002/CCG60521324002R1.PDF",
"assetFormat": {
"id": 3,
"extension": ".pdf",
"mimeType": "application/pdf",
"clientHandle": null,
"requiresConversion": true,
"isImage": true,
"isRaster": false,
"conversionAssetFormat": {
"id": 1,
"extension": ".png",
"mimeType": "image/png",
"clientHandle": null,
"requiresConversion": false,
"isImage": true,
"isRaster": true,
"conversionAssetFormat": null,
"name": "Portable Network Graphics"
},
"name": "Portable Document Format"
}
}
]
},
"specificationUri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324002/CCG60521324002R1.PDF",
"dstUri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324002/CCG60521324002R1.DST",
"lastModification": "2022-05-08T18:32:37.493"
},
{
"id": 24305,
"uploadedAssetId": 19695342,
"clientHandle": "carhartt",
"providerHandle": "midsouth",
"providerReference": "MS-YB73P8F9",
"reference": "CCG60521324001",
"clientReference": "CCG60521324001",
"template": "LIGHT",
"productColor": "Black",
"placement": "RC",
"placementWidth": {
"value": "3.50n",
"type": "Big Number"
},
"placementHeight": {
"value": "3.00n",
"type": "Big Number"
},
"notes": "Keep uploaded logo color(s) ",
"createdDate": "2021-05-04T13:31:29.967",
"workFlowType": "New",
"embellishmentType": "Embroidery",
"status": "Completed",
"result": {
"id": 24101,
"receivedDate": "2022-01-20T04:31:58.387",
"threadCount": 4060,
"actualHeight": {
"value": "3.00n",
"type": "Big Number"
},
"actualWidth": {
"value": "3.00n",
"type": "Big Number"
},
"lastModification": "2022-08-16T03:18:48.383",
"outputs": [
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324001/CCG60521324001R1.DST",
"assetFormat": {
"id": 1008,
"extension": ".dst",
"mimeType": "application/octet-stream",
"clientHandle": "carhartt",
"requiresConversion": false,
"isImage": true,
"isRaster": false,
"conversionAssetFormat": null,
"name": "Data Stitch Tajima"
}
},
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324001/CCG60521324001R1.PNG",
"assetFormat": {
"id": 1,
"extension": ".png",
"mimeType": "image/png",
"clientHandle": null,
"requiresConversion": false,
"isImage": true,
"isRaster": true,
"conversionAssetFormat": null,
"name": "Portable Network Graphics"
}
},
{
"id": 0,
"convertedAssetId": null,
"uri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324001/CCG60521324001R1.PDF",
"assetFormat": {
"id": 3,
"extension": ".pdf",
"mimeType": "application/pdf",
"clientHandle": null,
"requiresConversion": true,
"isImage": true,
"isRaster": false,
"conversionAssetFormat": {
"id": 1,
"extension": ".png",
"mimeType": "image/png",
"clientHandle": null,
"requiresConversion": false,
"isImage": true,
"isRaster": true,
"conversionAssetFormat": null,
"name": "Portable Network Graphics"
},
"name": "Portable Document Format"
}
}
]
},
"specificationUri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324001/CCG60521324001R1.PDF",
"dstUri": "https://stospectprodglobal.blob.core.windows.net/carhartt/embroidery/CCG60521324001/CCG60521324001R1.DST",
"lastModification": "2022-08-16T03:18:47.913"
}
],
"hasProductionJob": true,
"clientHandle": "carhartt",
"active": true,
"createdDate": "2022-04-05T15:06:58.69",
"lastModification": "2022-04-05T15:06:58.69"
},
{
"id": 8059,
"uploadedAssetId": 19654081,
"uploadedAssetUri": "https://cdn.spectrumcustomizer.com:443/assets/UserUpload/Square_abbccda3-a188-45d0-8c65-12e21da29ad9.png",
"metaData": {
"Url": "https://api.spectrumcustomizer.com/api/uploaded-assets/id/19654081"
},
"spectrumAssetReference": null,
"clientAccountReference": "60521324",
"organizationIdentifier": "7000000000000300322",
"userFacingFileName": "mba logo only",
"productionJobs": null,
"hasProductionJob": false,
"clientHandle": "carhartt",
"active": true,
"createdDate": "2022-04-05T17:43:15.65",
"lastModification": "2022-04-05T17:43:15.65"
},
{
"id": 8073,
"uploadedAssetId": 19661033,
"uploadedAssetUri": "https://cdn.spectrumcustomizer.com:443/assets/UserUpload/Square_2d03a3b1-ab34-4b07-a1a4-ff496505a8b5.png",
"metaData": {
"Url": "https://api.spectrumcustomizer.com/api/uploaded-assets/id/19661033"
},
"spectrumAssetReference": null,
"clientAccountReference": "60521324",
"organizationIdentifier": "7000000000000300322",
"userFacingFileName": "white MBA",
"productionJobs": null,
"hasProductionJob": false,
"clientHandle": "carhartt",
"active": true,
"createdDate": "2022-04-05T17:43:34.837",
"lastModification": "2022-04-05T17:43:34.837"
}
]
}
Note: When no assets match the supplied client/organization the endpoint returns 200 OK with an empty
contentsarray andpaging.totalRecords: 0— it does not return 404. Unhandled errors are returned as an RFC 7807 ProblemDetails document (status 500) with a link to the relevant log entry.
Get Changed SKU Assets
GET https://api.spectrumcustomizer.com/api/assets/client/:clientHandle/skus/changed
Returns the SKUs whose generated assets (images, video, and/or 3D) changed within a time window. This endpoint is designed for incremental synchronization: poll it on a schedule, persist the greatest lastModified you receive, and use that value as the from bound on your next run.
Authenticate with the SPECTRUM_API_TOKEN header. The API key must be authorized for the requested clientHandle.
Path Parameters
| Name | Type | Description |
|---|---|---|
| clientHandle* | string | Handle of client |
Querystring Parameters
| Name | Type | Description |
|---|---|---|
| from* | string | Start of the window, ISO 8601. Exclusive — only records with lastModified strictly greater than from are returned. Required unless snapshotToken is supplied. |
| to* | string | End of the window, ISO 8601. Inclusive. Required unless snapshotToken is supplied. If a date with no time component is supplied (e.g. 2026-01-31), it is treated as the end of that day. |
| types | string | Comma-separated asset types to include: images, video, 3d. Defaults to all types configured for the client. |
| page | int | Page number (1-based, default 1). Clamped to ≥ 1. |
| pageSize | int | Results per page (default 50, max 500). Clamped to [1, 500]. |
| sortDirection | string | Sort by lastModified: asc (default) or desc. Unknown values fall back to ascending. |
| snapshotToken | string | Server-issued token for a stable, point-in-time paging view. When supplied, from and to are ignored and paging continues against the original snapshot. |
Date range semantics
The window is half-open: from < lastModified <= to (from exclusive, to inclusive).
Because from is exclusive, a record whose lastModified equals the from you pass is not returned again. This lets you store the maximum lastModified from one run and pass it verbatim as the from of the next run without re-fetching the boundary records:
run 1: from = <last sync time> to = <now-1> → save max(lastModified) = M
run 2: from = M to = <now-2> → records with lastModified > M only
Note: Prior to this change the
frombound was inclusive, which caused boundary-second records to be returned on consecutive runs.fromis now exclusive for all clients.
200 JSON
{
"clientHandle": "sanmar",
"from": "2026-09-01T01:09:41Z",
"to": "2026-09-03T00:00:00Z",
"page": 1,
"pageSize": 50,
"totalCount": 2,
"hasNextPage": false,
"snapshotToken": "eyJ0IjoiMjAyNi0wOS0wM1QwMDowMDowMFoifQ",
"results": [
{
"sku": "11053_SftyOrg",
"lastModified": "2026-09-02T18:22:10Z",
"downloadUrl": "https://api.spectrumcustomizer.com/api/assets/client/sanmar/sku/11053_SftyOrg/download",
"assets": {
"images": [
{ "angle": "front", "url": "https://.../11053_SftyOrg_front.png", "lastModified": "2026-09-02T18:22:10Z" }
],
"video": { "url": "https://.../11053_SftyOrg.mp4", "lastModified": "2026-09-02T18:20:03Z" },
"3d": { "url": "https://.../11053_SftyOrg.glb", "lastModified": "2026-09-02T18:21:47Z" }
}
}
]
}
Only the asset groups you requested via types (and that exist for the SKU) are present in each assets object; empty groups are omitted.
Responses
| Status | Meaning |
|---|---|
| 200 | Success. Returns the paged list of changed SKUs. |
| 400 | Missing or invalid from/to, from after to, an invalid types value, or an invalid snapshotToken. |
| 401 | API key is not authorized for the requested client. |
| 404 | Client not found. |
| 500 | Unhandled error. Returns an RFC 7807 ProblemDetails document with a link to the relevant log entry. |