Skip to content

Get Product by SKU

Look up a product's content, videos, and PDP JSON-LD metadata by your own SKU. The lookup is scoped to your partner account, so the SKU is matched only within your catalog. Each entry in pdp_urls is one retailer product page for the product and carries a ready-to-embed schema.org VideoObject in its json_ld field, anchored to that page's URL.

GET /api/v1/public/sku/:sku

Authentication

Requires an API key. See Authentication.

Path parameters

ParameterTypeDescription
skustringYour product SKU. 1–50 characters, and only letters, numbers, hyphens (-), underscores (_), and periods (.) — i.e. ^[A-Za-z0-9._-]+$.

A SKU that is empty, longer than 50 characters, or contains any other character returns 400 invalid_sku.

Request

bash
curl https://api.prod.thedesirecompany.com/api/v1/public/sku/ABC123 \
  -H "Authorization: Bearer dk_live_your_key_here"
js
const res = await fetch(
  'https://api.prod.thedesirecompany.com/api/v1/public/sku/ABC123',
  { headers: { 'X-API-Key': process.env.TDC_API_KEY } },
);
const { data } = await res.json();

Response

200 OK

json
{
  "data": {
    "sku": "HELL-AVO-32",
    "status": "active",
    "product": {
      "id": 9066,
      "title": "Hellmann's Purely 100% Avocado Oil Mayonnaise",
      "description": "A real mayonnaise made with 100% avocado oil…",
      "short_description": "Avocado Oil Mayo made with a squeeze of lime and a pinch of black pepper.",
      "image": "https://cdn.thedesirecompany.com/images/hellmanns-avocado-oil-mayo.avif",
      "what_text": "What it is…",
      "who_text": "Who it's for…",
      "why_text": "Why it matters…",
      "videos": [
        {
          "id": 3557,
          "name": "Sam's Club In-Store Digital Signage",
          "aspect_ratio": "16x9",
          "length": 20.02
        }
      ],
      "pdp_urls": [
        {
          "id": 412,
          "pdp_url": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
          "video_file_url": "https://cdn.thedesirecompany.com/videos/hellmanns-avocado-mayo-16x9.mp4",
          "retailer": "Sam's Club",
          "json_ld": {
            "@context": "https://schema.org",
            "@type": "VideoObject",
            "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
            "name": "Hellmann's 100% Avocado Oil Mayonnaise at Sam's Club",
            "description": "This video showcases Hellmann's Purely 100% Avocado Oil Mayonnaise, highlighting its high-quality ingredients, Keto and Paleo certifications, and a subtle lime flavor. It encourages viewers to purchase the 32-ounce jar at Sam's Club for everyday meals.",
            "transcript": "Hellmann's purely 100% Avocado Oil Mayonnaise brings flavor to everyday meals with high quality ingredients. Keto and Paleo certified, it's flavorful and finished with a subtle hint of lime for a fresh, balanced taste. Pick up the 32-ounce jar at Sam's Club and keep it stocked in your kitchen.",
            "inLanguage": "en",
            "isFamilyFriendly": true,
            "contentUrl": "https://cdn.thedesirecompany.com/videos/hellmanns-avocado-mayo-16x9.mp4",
            "embedUrl": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
            "genre": ["Advertisement", "Product Showcase", "Food & Drink"],
            "keywords": ["Hellmann's", "Avocado Oil Mayonnaise", "Keto", "Paleo", "Sam's Club", "lime", "cooking"],
            "creator": {
              "@type": "Person",
              "name": "Alexandra Caspero",
              "jobTitle": "CEO/Founder - Wellness Expert - Dietician"
            },
            "publisher": { "@type": "Organization", "name": "Hellmann's" },
            "about": {
              "@type": "Product",
              "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
              "brand": { "@type": "Brand", "name": "Hellmann's" },
              "additionalProperty": [
                { "@type": "PropertyValue", "name": "Oil Type", "value": "100% Avocado Oil" },
                { "@type": "PropertyValue", "name": "Certification", "value": "Keto certified" },
                { "@type": "PropertyValue", "name": "Certification", "value": "Paleo certified" },
                { "@type": "PropertyValue", "name": "Flavor Note", "value": "Subtle hint of lime" },
                { "@type": "PropertyValue", "name": "Size", "value": "32-ounce jar" }
              ]
            },
            "isPartOf": {
              "@type": "WebPage",
              "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
              "url": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456"
            }
          }
        }
      ]
    }
  }
}

Response fields

FieldTypeDescription
data.skustringThe SKU you requested.
data.statusstringactive or inactive. inactive means the product has been deactivated in TDC.
data.productobjectThe product content and its videos (see below).

data.product

FieldTypeDescription
idnumberThe product's Desire Company ID (use it with Get Product by ID).
titlestringProduct title.
descriptionstring | nullFull marketing description.
short_descriptionstringShort summary for cards/previews.
imagestringPrimary product image URL.
what_textstringExpert copy — what the product is.
who_textstringExpert copy — who it's for.
why_textstringExpert copy — why it matters.
videosarrayThe product's published videos (see below). Empty array if the product has no published videos.
pdp_urlsarrayThe product's retailer PDP URLs, each with embeddable JSON-LD (see below). Empty array if no PDP URLs are configured.

data.product.videos[]

FieldTypeDescription
idnumberThe video's ID.
namestring | nullVideo name.
aspect_ratiostringe.g. 16x9, 9x16, 1x1.
lengthnumberDuration in seconds.

data.product.pdp_urls[]

A product can be sold on several retailer product pages, and each page needs structured data anchored to its own URL — so JSON-LD lives here, one blob per PDP URL, rather than on the video.

FieldTypeDescription
idnumberThe PDP URL entry's ID.
pdp_urlstringThe retailer product page URL this entry describes.
video_file_urlstring | nullDirect URL of the video file placed on that page (the JSON-LD's contentUrl).
retailerstring | nullRetailer label, e.g. Sam's Club.
json_ldobject | nullA schema.org VideoObject anchored to pdp_url — inject it directly into that page as structured data (see Embedding the JSON-LD). null if it hasn't been generated yet.

Only these fields are returned; internal metadata is never exposed.

JSON-LD is kept fresh — re-fetch periodically

json_ld is not static: TDC regenerates it when the underlying video's transcript is added or refined (better names, descriptions, and keywords over time), and an entry that is null today may be populated once its video content ships. Fetch at render/build time or on a daily cache rather than embedding a one-time snapshot.

Embedding the JSON-LD

Each pdp_urls[].json_ld is a complete schema.org VideoObject whose @id, embedUrl, and isPartOf all point at that entry's pdp_url. Serialize it into a <script type="application/ld+json"> tag on that product page so search engines can index the video for video rich results:

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
  "name": "Hellmann's 100% Avocado Oil Mayonnaise at Sam's Club",
  "description": "This video showcases Hellmann's Purely 100% Avocado Oil Mayonnaise, highlighting its high-quality ingredients, Keto and Paleo certifications, and a subtle lime flavor. It encourages viewers to purchase the 32-ounce jar at Sam's Club for everyday meals.",
  "transcript": "Hellmann's purely 100% Avocado Oil Mayonnaise brings flavor to everyday meals with high quality ingredients. Keto and Paleo certified, it's flavorful and finished with a subtle hint of lime for a fresh, balanced taste. Pick up the 32-ounce jar at Sam's Club and keep it stocked in your kitchen.",
  "inLanguage": "en",
  "isFamilyFriendly": true,
  "contentUrl": "https://cdn.thedesirecompany.com/videos/hellmanns-avocado-mayo-16x9.mp4",
  "embedUrl": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
  "genre": ["Advertisement", "Product Showcase", "Food & Drink"],
  "keywords": ["Hellmann's", "Avocado Oil Mayonnaise", "Keto", "Paleo", "Sam's Club", "lime", "cooking"],
  "creator": {
    "@type": "Person",
    "name": "Alexandra Caspero",
    "jobTitle": "CEO/Founder - Wellness Expert - Dietician"
  },
  "publisher": { "@type": "Organization", "name": "Hellmann's" },
  "about": {
    "@type": "Product",
    "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
    "brand": { "@type": "Brand", "name": "Hellmann's" },
    "additionalProperty": [
      { "@type": "PropertyValue", "name": "Oil Type", "value": "100% Avocado Oil" },
      { "@type": "PropertyValue", "name": "Certification", "value": "Keto certified" },
      { "@type": "PropertyValue", "name": "Certification", "value": "Paleo certified" },
      { "@type": "PropertyValue", "name": "Flavor Note", "value": "Subtle hint of lime" },
      { "@type": "PropertyValue", "name": "Size", "value": "32-ounce jar" }
    ]
  },
  "isPartOf": {
    "@type": "WebPage",
    "@id": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456",
    "url": "https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456"
  }
}
</script>

Generating it server-side from the API response — pick the entry whose pdp_url matches the page you're rendering:

js
const { data } = await res.json();
const pageUrl = 'https://www.samsclub.com/ip/hellmanns-avocado-oil-mayonnaise-32-oz/123456';
// Only inject the entry anchored to the page you're rendering — a JSON-LD
// blob is tied to its own pdp_url, so never inject one from another page.
const entry = data.product.pdp_urls.find((u) => u.pdp_url === pageUrl);
if (entry && entry.json_ld) {
  const block = `<script type="application/ld+json">${JSON.stringify(entry.json_ld)}</script>`;
  // inject `block` into your PDP <head> or near the video player
}

Errors

StatuserrorWhen
400invalid_skuSKU is empty, over 50 chars, or has disallowed characters
401missing_api_keyNo API key supplied
401invalid_api_keyKey is unknown or revoked
404sku_not_foundNo product with this SKU in your partner catalog
429rate_limit_exceededOver 100 requests/minute
500internal_errorUnexpected server error — retry later

Example:

json
{ "error": "sku_not_found", "message": "No product found for this SKU." }

See Errors for the full reference.

The Desire Company — Enterprise API