Introduction

Documentation for the OUTTRA DataHub API

This documentation aims to provide all the information you need to work with our API.

This is how a general structure of our product looks like:

Outtra

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can request a token from our support team at support-en@outtra.com

Endpoints

GET api/v2/datahub/products

GET
https://datahub_api.test
/api/v2/datahub/products
requires authentication

Query the DataHub for product information.

Important:

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

language
string

Returns the data in the specific language, if available. Expects a ISO-639-1 two-character language code. Fallback is english (en).

Example:
de
page[size]
integer

Set the number of elements returned. Max is 30.

Example:
2
page[number]
integer

Pagination found under the links attribute in the response.

Example:
1
filter[brand]
integer

Filters the data to a brand. Expects an ID that can be retrieved via the /datahub/my/brands endpoint.

Example:
136
filter[gtin]
string

The global identifier for a certain product. You can request for information about up to 1.000 gtins (or eans) seperated by comma.

Example:
04251422560870
filter[manufacturerArticleNumber]
string

Filters the data to a specific manufacturer article number. Best combined with the brand filter as manufacturer article numbers may not be unique.

Example:
3391022XL
filter[productSetId]
number

Filters the data to a specific product set. A product set includes all GTINs across all sizes and colors in a product.

Example:
5487
filter[colorSetId]
number

Filters the data to a specific color set.

Example:
1
filter[season]
string

Filters the data to a specific season. There are the two values "autumn_winter" and "spring_sumer", followed by a "-" and a year with four digits.

Example:
autumn_winter-2023
filter[updatedAfter]
string

Filters the response to only include data that has been updated after the given date.

Example:
2022-06-30
filter[manufacturerColor]
string

Filters the data to a specific manufacturer color. Best combined with the brand filter as manufacturer colors may not be unique.

Example:
sulphur-green

Response Fields

Example request:
curl --request GET \
    --get "https://datahub_api.test/api/v2/datahub/products?language=de&page%5Bsize%5D=2&page%5Bnumber%5D=1&filter%5Bbrand%5D=136&filter%5Bgtin%5D=04251422560870&filter%5BmanufacturerArticleNumber%5D=3391022XL&filter%5BproductSetId%5D=5487&filter%5BcolorSetId%5D=1&filter%5Bseason%5D=autumn_winter-2023&filter%5BupdatedAfter%5D=2022-06-30&filter%5BmanufacturerColor%5D=sulphur-green" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "type": "variant",
            "gtin": "01234567891234",
            "attributes": {
                "gln": "supplier-1",
                "product_identifier": "784544",
                "product_short_description": "Men's Rain Jacket",
                "brand": {
                    "id": "845",
                    "name": "Example Brand"
                },
                "media": {
                    "images": [
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--B-01.png",
                            "position": 1,
                            "hash": "ec809ddf66ed7087",
                            "updatedAt": "2023-04-09",
                            "shootType": "hollow",
                            "productView": "front"
                        },
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--B-02.png",
                            "position": 2,
                            "hash": "bd4b61e1c2700ecb",
                            "updatedAt": "2023-04-09",
                            "shootType": "model",
                            "productView": "front"
                        },
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--M-01.jpg",
                            "position": 3,
                            "hash": "fbba25e06c2fe2d6",
                            "updatedAt": "2023-04-09",
                            "shootType": "hollow",
                            "productView": "back"
                        },
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--M-02.jpg",
                            "position": 4,
                            "hash": "45273a6fac1bc168",
                            "updatedAt": "2023-04-09",
                            "shootType": "hollow",
                            "productView": "left"
                        },
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--D-01.jpg",
                            "position": 5,
                            "hash": "335506130662c784",
                            "updatedAt": "2023-04-09",
                            "shootType": "hollow",
                            "productView": "right"
                        },
                        {
                            "url": "https://imagehub.outtra.com/images/asd7nxil2i/3247hnoiau7n/01234567891234/mens-rain-jacket--D-02.jpg",
                            "position": 6,
                            "hash": "0814878367256eca",
                            "updatedAt": "2023-04-09",
                            "shootType": "detail",
                            "productView": "unkown"
                        }
                    ],
                    "videos": [
                        {
                            "url": "https://www.example.com/123456789",
                            "type": "video_product"
                        },
                        {
                            "url": "https://www.example.com/123456789",
                            "type": "video_instruction"
                        }
                    ]
                },
                "fedas_code": "201042",
                "category_level_1": "Clothing",
                "category_level_2": "Jackets",
                "category_level_3": "Rain Jackets",
                "sex": "Male",
                "kids": false,
                "age_group": "1",
                "country_of_origin": "DE",
                "customs_tariff_ch": "123456",
                "customs_tariff_eu": "123456",
                "customs_tariff_scandinavia": "123456",
                "sales_unit": "1",
                "packing_unit": "1",
                "weight_packing_unit": "420",
                "usps": "Robust, elastic, lightweight rain jacket",
                "material": "100% Polyester",
                "product_longtext": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
                "activity": "Hiking",
                "sustainability": "Fair Wear Foundation",
                "goretex": true,
                "vibram": false,
                "features": "Breathable, Cooling, Quick drying",
                "vegan": false,
                "care_instructions": "Wash at 30°C, Do not bleach, Do not tumble dry, Do not iron, Do not dry clean",
                "video_product": "",
                "video_instruction": "",
                "hazard_note": "https://www.example.com/123456789",
                "product_instructions_url": "https://www.example.com/123456789",
                "hang_tag_url": "https://www.example.com/123456789",
                "size_table_shoes_url": "https://www.example.com/123456789",
                "size_table_men_url": "https://www.example.com/123456789",
                "size_table_women_url": "https://www.example.com/123456789",
                "size_table_kids_url": "https://www.example.com/123456789",
                "manufacturer_color_code": "98754",
                "manufacturer_color": "green moss",
                "base_color": "Green",
                "season": "autumn_winter-2023",
                "spin_360": "https://www.example.com/123456789",
                "product_dimensional_drawing_url": "https://www.example.com/123456789",
                "fedas_code_size": "54687",
                "size_range": "S-XXL",
                "manufacturer_size_code": "L",
                "size_description": "L",
                "size_description_2": "32",
                "volume": "",
                "volume_additional": "",
                "gtin": "01234567891234",
                "sku_supplier": "JK-1234",
                "weight": "380",
                "weight_unit": "g",
                "weight_info": "Weight in gramm",
                "wholesale_price": "85",
                "wholesale_price_unit": "EUR",
                "wholesale_price_valid_from_date": "2023-01-01",
                "rrp": "199",
                "rrp_unit": "EUR",
                "rrp_2": "",
                "rrp_2_unit": "",
                "rrp_3": "",
                "rrp_3_unit": "",
                "rrp_valid_from_date": "2023-01-01",
                "delivery_date": "2023-01-01",
                "height": "100",
                "height_unit": "cm",
                "width": "100",
                "width_unit": "cm",
                "length": "100",
                "length_unit": "cm",
                "diameter": "100",
                "diameter_unit": "cm",
                "packing_unit_height": "100",
                "packing_unit_height_unit": "cm",
                "packing_unit_width": "100",
                "packing_unit_width_unit": "cm",
                "packing_unit_length": "100",
                "packing_unit_length_unit": "cm",
                "packing_unit_diameter": "100",
                "packing_unit_diameter_unit": "cm",
                "delivery_unit_height": "100",
                "delivery_unit_height_unit": "cm",
                "delivery_unit_width": "100",
                "delivery_unit_width_unit": "cm",
                "delivery_unit_length": "100",
                "delivery_unit_length_unit": "cm",
                "carry_over_from_style": "winter-2022",
                "carry_over_to_style": "winter-2023",
                "carry_over_from_stylecolor": "AB12345",
                "carry_over_to_stylecolor": "CD67890",
                "main_material": "",
                "main_material_information": "",
                "outer_material": "",
                "outer_material_information": "",
                "outer_material_2": "",
                "outer_material_2_information": "",
                "inner_material": "",
                "inner_material_information": "",
                "inner_material_2": "",
                "inner_material_2_information": "",
                "liner_material": "",
                "liner_material_information": "",
                "filling_material": "",
                "filling_material_information": "",
                "sole": "",
                "sole_information": "",
                "textile_care_washing": "",
                "textile_care_bleaching": "",
                "textile_care_drying": "",
                "textile_care_ironing": "",
                "textile_care_professional_textile_care": "",
                "workbook_picture_url": ""
            }
        }
    ],
    "links": {
        "first": "https://api.outtra.com/api/v2/datahub/products?filter%5Bbrand%5D=136&page%5Bnumber%5D=1",
        "last": null,
        "prev": null,
        "next": "https://api.outtra.com/api/v2/datahub/products?filter%5Bbrand%5D=136&page%5Bnumber%5D=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://api.outtra.com/api/v2/datahub/products",
        "per_page": 30,
        "to": 30
    }
}
{
    "message": "no filter set. use one of the documented filters to receive a response"
}
{
    "message": "unknown filters detected: […]"
}
{
    "message": "Too many requests. Allowed per minute: X"
}
{
    "message": "an error occurred, please check your query string. if the issue persist, contact support-en@outtra.com."
}

GET api/v2/datahub/units

GET
https://datahub_api.test
/api/v2/datahub/units
requires authentication

Query the DataHub for unit information.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://datahub_api.test/api/v2/datahub/units" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "type": "unit",
            "outtra_unit_id": 1,
            "attributes": {
                "name": "Kilogramm",
                "abbreviation": "kg"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 2,
            "attributes": {
                "name": "Gramm",
                "abbreviation": "g"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 3,
            "attributes": {
                "name": "Liter",
                "abbreviation": "l"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 4,
            "attributes": {
                "name": "Milliliter",
                "abbreviation": "ml"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 5,
            "attributes": {
                "name": "Millimeter",
                "abbreviation": "mm"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 6,
            "attributes": {
                "name": "Meter",
                "abbreviation": "m"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 7,
            "attributes": {
                "name": "Centimeter",
                "abbreviation": "cm"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 8,
            "attributes": {
                "name": "Grad Celsius",
                "abbreviation": "° C"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 9,
            "attributes": {
                "name": "Percent",
                "abbreviation": "%"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 13,
            "attributes": {
                "name": "CHF",
                "abbreviation": "CHF"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 10,
            "attributes": {
                "name": "Euro",
                "abbreviation": "€"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 11,
            "attributes": {
                "name": "Pound Sterling",
                "abbreviation": "£"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 12,
            "attributes": {
                "name": "US Dollar",
                "abbreviation": "$"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 14,
            "attributes": {
                "name": "Kubikzentimeter",
                "abbreviation": "cm³"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 15,
            "attributes": {
                "name": "Norwegische Kronen",
                "abbreviation": "NOK"
            }
        },
        {
            "type": "unit",
            "outtra_unit_id": 16,
            "attributes": {
                "name": "Inch",
                "abbreviation": "in"
            }
        }
    ]
}

GET api/v2/datahub/seasons

GET
https://datahub_api.test
/api/v2/datahub/seasons
requires authentication

Query the DataHub for season information.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Query Parameters

language
string

Returns the data in the specific language, if available. Expects a ISO-639-1 two-character language code. Fallback is english (en).

Example:
de
Example request:
curl --request GET \
    --get "https://datahub_api.test/api/v2/datahub/seasons?language=de" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "type": "season",
            "outtra_season_id": 8,
            "attributes": {
                "name": "Frühjahr / Sommer 2020",
                "code": "spring_summer-2020"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 7,
            "attributes": {
                "name": "Herbst / Winter 2020",
                "code": "autumn_winter-2020"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 6,
            "attributes": {
                "name": "Frühjahr / Sommer 2021",
                "code": "spring_summer-2021"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 5,
            "attributes": {
                "name": "Herbst / Winter 2021",
                "code": "autumn_winter-2021"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 1,
            "attributes": {
                "name": "Frühjahr / Sommer 2022",
                "code": "spring_summer-2022"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 2,
            "attributes": {
                "name": "Herbst / Winter 2022",
                "code": "autumn_winter-2022"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 3,
            "attributes": {
                "name": "Frühjahr / Sommer 2023",
                "code": "spring_summer-2023"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 4,
            "attributes": {
                "name": "Herbst / Winter 2023",
                "code": "autumn_winter-2023"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 9,
            "attributes": {
                "name": "Frühjahr / Sommer 2024",
                "code": "spring_summer-2024"
            }
        },
        {
            "type": "season",
            "outtra_season_id": 10,
            "attributes": {
                "name": "Herbst / Winter 2024",
                "code": "autumn_winter-2024"
            }
        }
    ]
}

GET api/v2/datahub/my/brands

GET
https://datahub_api.test
/api/v2/datahub/my/brands
requires authentication

Query the DataHub for brands you have access to.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://datahub_api.test/api/v2/datahub/my/brands" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
{
    "data": [
        {
            "type": "brand",
            "id": "136",
            "attributes": {
                "name": "Ortovox",
                "url": "https://www.ortovox.de/",
                "permissions": {
                    "dataAccess": true,
                    "imageAccess": true
                },
                "products": {
                    "available": 763,
                    "updated": "2023-04-09"
                }
            }
        },
        {
            "type": "brand",
            "id": "150",
            "attributes": {
                "name": "Ziener",
                "url": "https://ziener.com/",
                "permissions": {
                    "dataAccess": true,
                    "imageAccess": true
                },
                "products": {
                    "available": 595,
                    "updated": "2023-02-22"
                }
            }
        },
        {
            "type": "brand",
            "id": "221",
            "attributes": {
                "name": "Hanwag",
                "url": "https://www.hanwag.de",
                "permissions": {
                    "dataAccess": true,
                    "imageAccess": true
                },
                "products": {
                    "available": 218,
                    "updated": "2023-03-04"
                }
            }
        }
    ],
    "links": {
        "first": "https://api.outtra.com/api/v2/datahub/my/brands?page%5Bnumber%5D=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://api.outtra.com/api/v2/datahub/my/brands",
        "per_page": 30,
        "to": 3
    }
}
{
    "message": "Too many requests. Allowed per minute: X"
}
{
    "message": "an error occurred, please check your query string. if the issue persist, contact support-en@outtra.com."
}

Retailer Insights (Enterprise)

Lost Sales


GET Retailer Lost Sales Statistics

GET
https://datahub_api.test
/api/v2/retailer-insights/{outtraBrandId}/lost-sales/{customerExternalId}
requires authentication

Returns lost sales statistics for a specific dealer of a brand. The dealer is identified by the brand's internal customer ID.

This is an Enterprise feature. Access requires an active Enterprise subscription for the authenticated tenant.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

outtraBrandId
integer
required

The OUTTRA brand ID. Must match a brand accessible by the authenticated tenant.

Example:
134
customerExternalId
string
required

The brand's internal customer ID for the dealer.

Example:
MAG-42

Query Parameters

date_min
string
required

Start date in d.m.Y format.

Example:
01.01.2026
date_max
string
required

End date in d.m.Y format. Must not exceed 12 months from date_min.

Example:
31.01.2026

Body Parameters

Response Fields

Example request:
curl --request GET \
    --get "https://datahub_api.test/api/v2/retailer-insights/134/lost-sales/MAG-42?date_min=01.01.2026&date_max=31.01.2026" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"date_min\": \"19.04.2026\",
    \"date_max\": \"2033-12-09\"
}"
Example response:
{
    "data": {
        "dealer_name": "Bike Shop Mueller",
        "customer_external_id": "MAG-42",
        "brand_id": 134,
        "brand_name": "MAGURA",
        "date_min": "01.01.2026",
        "date_max": "31.01.2026",
        "outtra_connected": true,
        "kpis": {
            "impressions": 279,
            "product_searches": 350,
            "market_potential_in_eur": 78888,
            "lost_sales_in_eur": 70254,
            "highlights": 279
        },
        "products": [
            {
                "product_identifier": "Mt7",
                "article_number": "mdp-9",
                "gtin": "04055184026014",
                "article_name_de": "Bremsscheibe MDR-P",
                "article_name_en": "Brake Disc MDR-P",
                "searches": 120,
                "lost_revenue_in_eur": 3548,
                "uvp_max": 89.9
            }
        ],
        "chart_data": [
            {
                "label": "2026-01-15T00:00:00.000Z",
                "market_potential_in_eur": 5000,
                "lost_sales_in_eur": 3500,
                "impressions": 25
            }
        ]
    }
}
{
    "message": "Unauthenticated."
}
{
    "message": "Dealer not found."
}
{
    "message": "The date min field is required.",
    "errors": {
        "date_min": [
            "The date min field is required."
        ]
    }
}