Skip to main content

Assets API

Overview​

Use the Assets API to resolve one or more Product IDs to signed offsets.json URLs for Vyking VTO and Viewer integrations.

The API parameter is named skuIds; pass your Product IDs in that query parameter.

Account structure: Client -> License -> Product IDs.

You can query assets directly by Product ID, or list the Product IDs attached to a license. If your account has one license, all available Product IDs are attached to that license.

Signed URLs require VTO and Viewer distributions that support signed offsets.json URLs. Older distributions will not be able to load these URLs.

Base URL​

https://api-assets.vyking.io

Authentication​

Include your API key in every request. Either header is supported:

Authorization: Bearer your-api-key

or:

x-api-key: your-api-key

Scope and Limits​

  • Asset endpoints require the assets:read scope.
  • License endpoints require the licenses:read scope.
  • Rate limit: 100 requests per second for asset and license checks.
  • Batch size: up to 50 Product IDs per assets request.
  • Rate limit errors: 429 Too Many Requests

If you receive a 429 response, throttle requests or retry with backoff.

Endpoints​

PurposeEndpointNotes
Get assetsGET /client/assets?skuIds=sku1,sku2,...Returns asset information and signed URLs when available.
Check asset licenseGET /client/assets/check?skuId=sku1Checks whether one Product ID exists and is licensed.
List licensesGET /client/licenseReturns all licenses available to the authenticated client.
Get licenseGET /client/license/:licenseIdReturns details for one license.
List Product IDs for licenseGET /client/license/:licenseId/skusReturns Product IDs and signed URLs attached to one active license.

Listing Available Assets​

The simplest way to see all assets available to your account is to call the license SKU endpoint:

GET /client/license/:licenseId/skus

This returns every Product ID attached to that license, along with the signed assetsUrl for each available offsets.json. For accounts with one license, this is usually the best endpoint to use when you want to discover the full asset list.

Use GET /client/assets?skuIds=... when you already know which Product IDs you want to load or refresh.

Example response:

{
"message": "License SKUs retrieved successfully",
"data": [
{
"exists": true,
"skuId": "A57494122",
"assetPath": "/vyking-assets/.../offsets.json",
"assetType": "footwear",
"activatedAt": "2026-05-08T09:46:58.624Z",
"assetsUrl": "https://cdn.vyking.io/vyking-assets/.../offsets.json?Policy=...&Key-Pair-Id=...&Signature=...",
"signatureExpiresAt": "2026-05-15T10:02:26.000Z"
},
{
"exists": true,
"skuId": "A57493877",
"assetPath": "/vyking-assets/.../offsets.json",
"assetType": "footwear",
"activatedAt": "2026-05-08T09:46:57.300Z",
"assetsUrl": "https://cdn.vyking.io/vyking-assets/.../offsets.json?Policy=...&Key-Pair-Id=...&Signature=...",
"signatureExpiresAt": "2026-05-15T10:02:26.000Z"
}
],
"meta": {
"timestamp": "2026-05-08T10:02:26.000Z",
"path": "/client/license/{your_license_id}/skus"
}
}

Requests​

skuIds accepts a comma-separated list:

GET /client/assets?skuIds=sku1,sku2,sku3

The API also accepts repeated query parameters:

GET /client/assets?skuIds=sku1&skuIds=sku2&skuIds=sku3

licenseId must be a UUID.

Response Format​

Successful responses are wrapped with a message, data, and meta object:

{
"message": "Assets retrieved successfully",
"data": [],
"meta": {
"timestamp": "2026-07-10T12:00:00.000Z",
"path": "/client/assets?skuIds=sku1"
}
}

Error responses use the same wrapper and may include an errors array:

{
"message": "Validation failed",
"data": null,
"errors": ["Maximum of 50 SKU IDs allowed per request"],
"meta": {
"timestamp": "2026-07-10T12:00:00.000Z",
"path": "/client/assets?skuIds=..."
}
}

Common status codes:

StatusMeaning
400Invalid request, or expired license when listing license SKUs.
401Missing or invalid API key.
403API key does not have the required scope.
404Requested license was not found for the client.
429Rate limit exceeded.

Asset Fields​

Asset responses may include:

FieldTypeDescription
skuIdstringProduct ID requested.
existsbooleanWhether the Product ID exists for the client.
isLicensedbooleanWhether the Product ID is covered by an active license.
assetPathstringOriginal asset path.
assetTypestringAsset category, such as footwear, wristwear, headwear, apparel, or generic.
metadataobjectOptional asset metadata.
assetsUrlstringSigned URL to the offsets.json asset when available.
signatureExpiresAtstringISO 8601 timestamp when the signed URL expires.
activatedAtstringISO 8601 timestamp when the Product ID was added to a license. Returned by license SKU listing.

Use assetsUrl directly with VTO or Viewer. It includes the signature needed to load the offsets.json asset and its related resources.

If a Product ID does not exist, the response item includes skuId, exists: false, and isLicensed: false. If a Product ID exists but is not licensed, no signed URL is returned.

License Fields​

License responses may include:

FieldTypeDescription
licenseIdstringLicense ID.
maxSkusnumberMaximum number of Product IDs allowed for the license.
expirationDatestringISO 8601 timestamp when the license expires.
createdAtstringISO 8601 timestamp when the license was created.
updatedAtstringISO 8601 timestamp when the license was last updated.
skuCountnumberCurrent number of Product IDs attached to the license.
isExpiredbooleanWhether the license has expired.

Usage Notes​

  • Batch Product ID lookups where possible.
  • Check exists, isLicensed, and assetsUrl before using a returned asset.
  • Cache signed URLs until signatureExpiresAt.
  • Treat signed URLs as sensitive data.
  • Use a current VTO or Viewer distribution for signed offsets.json URLs.

Typical Flow​

  1. If needed, call GET /client/license to find your license ID.
  2. Call GET /client/license/:licenseId/skus to list available Product IDs and signed offsets.json URLs for that license.
  3. Pass the signed assetsUrl to your VTO or Viewer integration.
  4. If you already know the Product IDs you need, call GET /client/assets?skuIds=... directly.

Examples​

Get Assets for a Product ID​

curl --request GET \
--url 'https://api-assets.vyking.io/client/assets?skuIds=3WE30074422' \
--header 'x-api-key: {vy_api_key_your_api_key}'

Get Assets for Multiple Product IDs​

curl --request GET \
--url 'https://api-assets.vyking.io/client/assets?skuIds=sku1,sku2,sku3' \
--header 'x-api-key: {vy_api_key_your_api_key}'

Check a Product ID​

curl --request GET \
--url 'https://api-assets.vyking.io/client/assets/check?skuId=3WE30074422' \
--header 'x-api-key: {vy_api_key_your_api_key}'

List Licenses​

curl --request GET \
--url 'https://api-assets.vyking.io/client/license' \
--header 'x-api-key: {vy_api_key_your_api_key}'

List Product IDs for a License​

curl --request GET \
--url 'https://api-assets.vyking.io/client/license/{your_license_id}/skus' \
--header 'x-api-key: {vy_api_key_your_api_key}'