List Products

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.maddenanalytics.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "Madden Analytics API MCP server": {
    "url": "https://docs.maddenanalytics.com/mcp"
  }
}

Close
GET /v2/api/products

Lists all Products with prices from all price lists

Query parameters

  • page integer

    Page Number

    Minimum value is 1. Default value is 1.

  • pageSize integer

    Page Size

    Default value is 10.

  • key string

    Filter on a specific key

  • sku_id string

    Filter by sku ID, repeatable (e.g. ?sku_id=1&sku_id=2)

  • skus string

    Filter by sku, repeatable (e.g. ?skus=abc&skus=def)

  • seasons string

    Filter by season, repeatable (e.g. ?seasons=AW25&seasons=SS25)

  • productgroupids string

    Filter by productGroupId, repeatable (e.g. ?productgroupids=1&productgroupids=2)

  • variantgroupids string

    Filter by variantGroupId, repeatable (e.g. ?variantgroupids=1&variantgroupids=2)

  • sortBySize boolean

    Return each variant's sizes in size order (XS, S, M, L, ...) instead of by id, grouped by productGroupID and variantGroupID. Sorts the returned page only, so raise pageSize (max 10000) to keep a variant whole

    Default value is false.

application/json

Body Required

  • activePlanning boolean

    Active Planning indicates if the variant is included in planning

    Default value is false.

  • additionalSuppliers object

    Suppliers

  • ageGroup string

    AgeGroup assosciated with the product

  • brandName string Required

    Name of the products brand

  • carryOver boolean

    CarryOver marks a new version of an existing SKU (same sku, new season) on accounts that version SKUs by season. The new version inherits every field the request does not send from the SKU's latest existing version: attributes, custom fields, info, prices and suppliers alike. Key, season, status and sales dates are not inherited. Ignored when the version already exists, which is updated as sent (info replaced, a legacy price needing vatValue) except that an omitted brand or category name keeps the stored one, and on accounts without versions. On accounts with versions, an externalSizeId in the sent info (the key the size had before it was carried over) becomes a synonym of the version, so a later keyswitch from that key finds it.

  • categoryName string

    Category of product.

  • collection string

    Collection that the product belongs to

  • color string Required

    Color assosciated with the variant

  • costCalculationPrice number

    CostCalculationPrice is the base cost price to be used with CostCalculationValues.

  • costCalculationValues object

    CostCalculationValues used to calculate the cost price

  • costPrice number

    CostPrice of the Variant

  • costPriceCurrency string

    CostPriceCurrency of the Variant

  • customFields string

    Any JSON object holding additional filter attributes On writes its keys merge into the stored object: keys not sent are kept.

  • department string

    Department assosciated with the product

  • ean string

    EAN of Variant

  • endDate string

    Date the SKU stops selling (YYYY-MM-DD)

  • externalAttributes object

    External Attributes is a JSON field that can be used to store any additional information about the product. On writes its keys merge into the stored object: keys not sent are kept, null values are ignored.

  • gender string

    Gender assosciated with the product

  • id integer
  • imageUrl string
  • info object

    Any info / data needed by the integration (json)

  • key string Required

    Key used between products, transaction & stock tables. Usually SKU or EAN but needs to be same on all occurrences

  • leadTime integer

    DEPRECATED: derived = ProductionLeadTimeDays + ShippingLeadTimeDays. Use the split fields below. The physical skus.lead_time column has been retired, so this field must never be written. gorm:"->" (read-only) blocks struct-based writes (Save / Updates(struct)) while keeping the list endpoint's as lead_time read alias working. It does NOT cover the Assign(item). FirstOrCreate upsert path, whose SET map is built via BuildCondition (keyed on Readable) — that path omits "lead_time" explicitly in Create(). See MAD-8917.

  • moq integer

    DEPRECATED: use variantMoq. The same value under its old name; either one writes the variant MOQ, and sending both with different values is rejected.

  • packsize integer

    Packsize

  • price number

    Sales Price of the Variant. In requests: including or excluding VAT according to priceIncludingVat (excluding when omitted); a price excluding VAT is converted to gross with vatValue. In responses: the gross (inc VAT) price from the account's default D2C price list, with priceIncludingVat set to true.

  • priceCurrency string

    Sales Price Currency of the Variant

  • priceIncludingVat boolean

    If Price is including VAT or not. Always true in responses.

  • prices array[object]

    Prices of the Variant across multiple price lists

    Hide prices attributes Show prices attributes object
    • customPrice1 number
    • customPrice2 number
    • customPrice3 number
    • customPrice4 number
    • listExternalID string

      ID of Price list in external platform

    • price number

      Price including VAT.

    • vat number
  • productGroupID string Required

    ProductGroupID is used to group products together within Madden

  • productMoq integer

    Minimum Order Quantity of product

  • productName string Required

    Name of product

  • productType number

    Type of product (1: Normal/standard, 2: Commission, 3: Local)

    Values are 1, 2, or 3. Default value is 1.

  • productionLeadTimeDays integer

    Production lead time of the SKU in days.

  • season string

    Season that the product belongs to

  • shippingLeadTimeDays integer

    Shipping lead time of the SKU in days.

  • size string Required

    Size assosciated with the variant

  • sku string

    SKU of product. Should be unique per size/variant

  • skuMoq integer

    Minimum Order Quantity of the SKU (a single size)

  • skuSynonyms array[string]

    List of sku synonyms that should point to this variant

  • startDate string

    Date the SKU starts selling (YYYY-MM-DD)

  • status number

    Status of the variant (1: Inactive, 2: Active, 3: Outgoing)

    Values are 1, 2, 3, 4, 5, 6, or 7. Default value is 2.

  • subCategory string Required

    Subcategory of product. Should be a relevant for segmentation

  • supplier string

    Supplier of the Product

  • supplierPrice number

    Price to produce

  • supplierPriceCurrency string

    Currency to produce

  • unitVolume number

    Unit volume of the product in meters (l*w*h) (CBM)

  • variantExternalID string

    ID of variant in external platform

  • variantGroupID string

    VariantGroupID is used to group variants

  • variantMoq integer

    Minimum Order Quantity of variant

  • variantName string Required

    Name of specific variant

  • vatValue number

    Vat Value is the percentage of VAT. When price is sent and vatValue is omitted or 0, the default D2C price list's default VAT is used if the list has one; any other value is used as sent, even when it differs from that default.

  • vendorSKU string

    Vendors SKU if using own sku structure

  • weight number

    Weight of the product in kilograms (kg)

  • wholesalePrice number

    Wholesale price of the Variant (Excl VAT). In responses: from the account's default B2B price list.

  • wholesalePriceCurrency string

    Currency Code of the Wholeale Price

  • year string

    Start of the porducts life-cycle

Responses

  • 200 application/json

    OK

    Hide response attributes Show response attributes object
    • activePlanning boolean

      Active Planning indicates if the variant is included in planning

      Default value is false.

    • additionalSuppliers object

      Suppliers

    • ageGroup string

      AgeGroup assosciated with the product

    • brandName string Required

      Name of the products brand

    • carryOver boolean

      CarryOver marks a new version of an existing SKU (same sku, new season) on accounts that version SKUs by season. The new version inherits every field the request does not send from the SKU's latest existing version: attributes, custom fields, info, prices and suppliers alike. Key, season, status and sales dates are not inherited. Ignored when the version already exists, which is updated as sent (info replaced, a legacy price needing vatValue) except that an omitted brand or category name keeps the stored one, and on accounts without versions. On accounts with versions, an externalSizeId in the sent info (the key the size had before it was carried over) becomes a synonym of the version, so a later keyswitch from that key finds it.

    • categoryName string

      Category of product.

    • collection string

      Collection that the product belongs to

    • color string Required

      Color assosciated with the variant

    • costCalculationPrice number

      CostCalculationPrice is the base cost price to be used with CostCalculationValues.

    • costCalculationValues object

      CostCalculationValues used to calculate the cost price

    • costPrice number

      CostPrice of the Variant

    • costPriceCurrency string

      CostPriceCurrency of the Variant

    • customFields string

      Any JSON object holding additional filter attributes On writes its keys merge into the stored object: keys not sent are kept.

    • department string

      Department assosciated with the product

    • ean string

      EAN of Variant

    • endDate string

      Date the SKU stops selling (YYYY-MM-DD)

    • externalAttributes object

      External Attributes is a JSON field that can be used to store any additional information about the product. On writes its keys merge into the stored object: keys not sent are kept, null values are ignored.

    • gender string

      Gender assosciated with the product

    • id integer
    • imageUrl string
    • info object

      Any info / data needed by the integration (json)

    • key string Required

      Key used between products, transaction & stock tables. Usually SKU or EAN but needs to be same on all occurrences

    • leadTime integer

      DEPRECATED: derived = ProductionLeadTimeDays + ShippingLeadTimeDays. Use the split fields below. The physical skus.lead_time column has been retired, so this field must never be written. gorm:"->" (read-only) blocks struct-based writes (Save / Updates(struct)) while keeping the list endpoint's as lead_time read alias working. It does NOT cover the Assign(item). FirstOrCreate upsert path, whose SET map is built via BuildCondition (keyed on Readable) — that path omits "lead_time" explicitly in Create(). See MAD-8917.

    • moq integer

      DEPRECATED: use variantMoq. The same value under its old name; either one writes the variant MOQ, and sending both with different values is rejected.

    • packsize integer

      Packsize

    • price number

      Sales Price of the Variant. In requests: including or excluding VAT according to priceIncludingVat (excluding when omitted); a price excluding VAT is converted to gross with vatValue. In responses: the gross (inc VAT) price from the account's default D2C price list, with priceIncludingVat set to true.

    • priceCurrency string

      Sales Price Currency of the Variant

    • priceIncludingVat boolean

      If Price is including VAT or not. Always true in responses.

    • prices array[object]

      Prices of the Variant across multiple price lists

      Hide prices attributes Show prices attributes object
      • customPrice1 number
      • customPrice2 number
      • customPrice3 number
      • customPrice4 number
      • listExternalID string

        ID of Price list in external platform

      • price number

        Price including VAT.

      • vat number
    • productGroupID string Required

      ProductGroupID is used to group products together within Madden

    • productMoq integer

      Minimum Order Quantity of product

    • productName string Required

      Name of product

    • productType number

      Type of product (1: Normal/standard, 2: Commission, 3: Local)

      Values are 1, 2, or 3. Default value is 1.

    • productionLeadTimeDays integer

      Production lead time of the SKU in days.

    • season string

      Season that the product belongs to

    • shippingLeadTimeDays integer

      Shipping lead time of the SKU in days.

    • size string Required

      Size assosciated with the variant

    • sku string

      SKU of product. Should be unique per size/variant

    • skuMoq integer

      Minimum Order Quantity of the SKU (a single size)

    • skuSynonyms array[string]

      List of sku synonyms that should point to this variant

    • startDate string

      Date the SKU starts selling (YYYY-MM-DD)

    • status number

      Status of the variant (1: Inactive, 2: Active, 3: Outgoing)

      Values are 1, 2, 3, 4, 5, 6, or 7. Default value is 2.

    • subCategory string Required

      Subcategory of product. Should be a relevant for segmentation

    • supplier string

      Supplier of the Product

    • supplierPrice number

      Price to produce

    • supplierPriceCurrency string

      Currency to produce

    • unitVolume number

      Unit volume of the product in meters (l*w*h) (CBM)

    • variantExternalID string

      ID of variant in external platform

    • variantGroupID string

      VariantGroupID is used to group variants

    • variantMoq integer

      Minimum Order Quantity of variant

    • variantName string Required

      Name of specific variant

    • vatValue number

      Vat Value is the percentage of VAT. When price is sent and vatValue is omitted or 0, the default D2C price list's default VAT is used if the list has one; any other value is used as sent, even when it differs from that default.

    • vendorSKU string

      Vendors SKU if using own sku structure

    • weight number

      Weight of the product in kilograms (kg)

    • wholesalePrice number

      Wholesale price of the Variant (Excl VAT). In responses: from the account's default B2B price list.

    • wholesalePriceCurrency string

      Currency Code of the Wholeale Price

    • year string

      Start of the porducts life-cycle

  • default application/json

    All errors will return the same object with a describing code & message

    Hide response attributes Show response attributes object
    • error string
    • message string
    • statusCode integer
GET /v2/api/products
curl \
 --request GET 'https://api.maddenanalytics.com/v2/api/products' \
 --header "Authorization: $API_KEY" \
 --header "Content-Type: application/json" \
 --data '{
  "activePlanning": true,
  "additionalSuppliers": {},
  "ageGroup": "Senior",
  "brandName": "Acme",
  "carryOver": true,
  "categoryName": "Sneakers",
  "collection": "SS21",
  "color": "Black",
  "costCalculationPrice": 42.0,
  "costCalculationValues": {},
  "costPrice": 42,
  "costPriceCurrency": "USD",
  "customFields": "{}",
  "department": "Sports",
  "ean": "7340192703345",
  "endDate": "2026-02-01",
  "externalAttributes": {},
  "gender": "Unisex",
  "id": 42,
  "imageUrl": "https://example.com/image.jpg",
  "info": {},
  "key": "7340192703345",
  "leadTime": 3,
  "moq": 300,
  "packsize": 1,
  "price": 42,
  "priceCurrency": "USD",
  "priceIncludingVat": true,
  "prices": [
    {
      "customPrice1": 42.0,
      "customPrice2": 42.0,
      "customPrice3": 42.0,
      "customPrice4": 42.0,
      "listExternalID": "retail_SEK",
      "price": 42.0,
      "vat": 42.0
    }
  ],
  "productGroupID": "123456",
  "productMoq": 300,
  "productName": "Petter",
  "productType": 1,
  "productionLeadTimeDays": 30,
  "season": "Spring/Summer",
  "shippingLeadTimeDays": 14,
  "size": "43",
  "sku": "123456-001-43",
  "skuMoq": 50,
  "skuSynonyms": [
    "string"
  ],
  "startDate": "2026-01-15",
  "status": 2,
  "subCategory": "Low Sneakers",
  "supplier": "string",
  "supplierPrice": 42,
  "supplierPriceCurrency": "string",
  "unitVolume": 42.0,
  "variantExternalID": "shopify_432345",
  "variantGroupID": "123456-001",
  "variantMoq": 300,
  "variantName": "Petter Black",
  "vatValue": 25,
  "vendorSKU": "9876543-001-43",
  "weight": 42.0,
  "wholesalePrice": 42,
  "wholesalePriceCurrency": "USD",
  "year": "2021"
}'
Request examples
{
  "activePlanning": true,
  "additionalSuppliers": {},
  "ageGroup": "Senior",
  "brandName": "Acme",
  "carryOver": true,
  "categoryName": "Sneakers",
  "collection": "SS21",
  "color": "Black",
  "costCalculationPrice": 42.0,
  "costCalculationValues": {},
  "costPrice": 42,
  "costPriceCurrency": "USD",
  "customFields": "{}",
  "department": "Sports",
  "ean": "7340192703345",
  "endDate": "2026-02-01",
  "externalAttributes": {},
  "gender": "Unisex",
  "id": 42,
  "imageUrl": "https://example.com/image.jpg",
  "info": {},
  "key": "7340192703345",
  "leadTime": 3,
  "moq": 300,
  "packsize": 1,
  "price": 42,
  "priceCurrency": "USD",
  "priceIncludingVat": true,
  "prices": [
    {
      "customPrice1": 42.0,
      "customPrice2": 42.0,
      "customPrice3": 42.0,
      "customPrice4": 42.0,
      "listExternalID": "retail_SEK",
      "price": 42.0,
      "vat": 42.0
    }
  ],
  "productGroupID": "123456",
  "productMoq": 300,
  "productName": "Petter",
  "productType": 1,
  "productionLeadTimeDays": 30,
  "season": "Spring/Summer",
  "shippingLeadTimeDays": 14,
  "size": "43",
  "sku": "123456-001-43",
  "skuMoq": 50,
  "skuSynonyms": [
    "string"
  ],
  "startDate": "2026-01-15",
  "status": 2,
  "subCategory": "Low Sneakers",
  "supplier": "string",
  "supplierPrice": 42,
  "supplierPriceCurrency": "string",
  "unitVolume": 42.0,
  "variantExternalID": "shopify_432345",
  "variantGroupID": "123456-001",
  "variantMoq": 300,
  "variantName": "Petter Black",
  "vatValue": 25,
  "vendorSKU": "9876543-001-43",
  "weight": 42.0,
  "wholesalePrice": 42,
  "wholesalePriceCurrency": "USD",
  "year": "2021"
}
Response examples (200)
[
  {
    "activePlanning": true,
    "additionalSuppliers": {},
    "ageGroup": "Senior",
    "brandName": "Acme",
    "carryOver": true,
    "categoryName": "Sneakers",
    "collection": "SS21",
    "color": "Black",
    "costCalculationPrice": 42.0,
    "costCalculationValues": {},
    "costPrice": 42,
    "costPriceCurrency": "USD",
    "customFields": "{}",
    "department": "Sports",
    "ean": "7340192703345",
    "endDate": "2026-02-01",
    "externalAttributes": {},
    "gender": "Unisex",
    "id": 42,
    "imageUrl": "https://example.com/image.jpg",
    "info": {},
    "key": "7340192703345",
    "leadTime": 3,
    "moq": 300,
    "packsize": 1,
    "price": 42,
    "priceCurrency": "USD",
    "priceIncludingVat": true,
    "prices": [
      {
        "customPrice1": 42.0,
        "customPrice2": 42.0,
        "customPrice3": 42.0,
        "customPrice4": 42.0,
        "listExternalID": "retail_SEK",
        "price": 42.0,
        "vat": 42.0
      }
    ],
    "productGroupID": "123456",
    "productMoq": 300,
    "productName": "Petter",
    "productType": 1,
    "productionLeadTimeDays": 30,
    "season": "Spring/Summer",
    "shippingLeadTimeDays": 14,
    "size": "43",
    "sku": "123456-001-43",
    "skuMoq": 50,
    "skuSynonyms": [
      "string"
    ],
    "startDate": "2026-01-15",
    "status": 2,
    "subCategory": "Low Sneakers",
    "supplier": "string",
    "supplierPrice": 42,
    "supplierPriceCurrency": "string",
    "unitVolume": 42.0,
    "variantExternalID": "shopify_432345",
    "variantGroupID": "123456-001",
    "variantMoq": 300,
    "variantName": "Petter Black",
    "vatValue": 25,
    "vendorSKU": "9876543-001-43",
    "weight": 42.0,
    "wholesalePrice": 42,
    "wholesalePriceCurrency": "USD",
    "year": "2021"
  }
]
Response examples (default)
{
  "error": "Error Type (if any)",
  "message": "Message describing the error",
  "statusCode": 400
}