Skip to main content
GET
/
product-values
List product values (pricing)
curl --request GET \
  --url https://app.simcel.io/api/master/v1/product-values \
  --header 'Authorization: Bearer <token>'
{
  "total": 1240,
  "limit": 50,
  "skip": 0,
  "data": [
    {
      "productId": "SKU-001",
      "customerRef": "CUST-FR-001",
      "name": "GrossSalesValue",
      "value": 24.5,
      "startDate": "2025-01-01",
      "endDate": "2025-12-31"
    },
    {
      "productId": "SKU-001",
      "customerRef": "CUST-FR-001",
      "name": "ListedPrice",
      "value": 21,
      "startDate": "2025-01-01",
      "endDate": "2025-12-31"
    }
  ]
}

What is a Product Value?

A Product Value is a pricing record that defines what a product is worth for a specific customer, over a specific date range. SIMCEL uses product values to compute revenue KPIs like Gross FIE Sales and Net FIE Sales in simulations. Each record has five key fields:
FieldDescription
productIdThe product this price applies to
customerRefThe customer this price is for
nameThe pricing type (see below)
valueThe price amount in plan currency
startDate / endDateEffective date range

Pricing types (name)

ValueDescription
GrossSalesValueGross selling price per unit (carton) to the customer
GrossSalesValuePerKgGSV expressed per kilogram
ListedPriceThe official listed/catalogue price before trade deductions
ListedPricePerKgListed price per kilogram
The simulation engine uses GrossSalesValue as the primary revenue driver. ListedPrice is used to compute trade expense deductions.

Query pricing for a product

resp = requests.get(
    "https://app.simcel.io/api/master/v1/product-values",
    headers={"Authorization": f"Bearer {token}"},
    params={
        "workspaceId": "ws_abc123",
        "productId": "SKU-001",
        "name": "GrossSalesValue",
        "asOf": "2025-06-01",   # only prices valid on this date
    }
)

for record in resp.json()["data"]:
    print(f"{record['customerRef']}: €{record['value']:.2f} "
          f"({record['startDate']}{record['endDate']})")

Override pricing for a planning cycle

Use POST /product-values to inject a price override for a specific plan. This is the programmatic equivalent of a price event in SIMCEL — useful for automating annual price list updates or testing pricing scenarios.
# Apply a 5% price increase for a customer from July 2025
current_price = 24.50

resp = requests.post(
    "https://app.simcel.io/api/master/v1/product-values",
    headers={
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    },
    json={
        "workspaceId": "ws_abc123",
        "planId": "plan_9xKz2",
        "productId": "SKU-001",
        "customerRef": "CUST-FR-001",
        "name": "GrossSalesValue",
        "value": round(current_price * 1.05, 2),
        "startDate": "2025-07-01",
        "endDate": "2025-12-31",
    }
)
print(resp.json())
# { "success": true, "overrideId": "ovr_pv_abc", "appliedAt": "..." }

Bulk pricing update pattern

price_updates = [
    {"customerRef": "CUST-FR-001", "productId": "SKU-001", "value": 25.70},
    {"customerRef": "CUST-FR-001", "productId": "SKU-002", "value": 18.40},
    {"customerRef": "CUST-UK-005", "productId": "SKU-001", "value": 22.00},
]

results = []
for update in price_updates:
    resp = requests.post(
        "https://app.simcel.io/api/master/v1/product-values",
        headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
        json={
            "workspaceId": "ws_abc123",
            "planId": "plan_9xKz2",
            "name": "GrossSalesValue",
            "startDate": "2025-07-01",
            "endDate": "2025-12-31",
            **update,
        }
    )
    results.append({"input": update, "result": resp.json()})

success = sum(1 for r in results if r["result"]["success"])
print(f"Updated {success}/{len(results)} prices successfully")
Pricing overrides are scoped to a plan via planId. The same product–customer pair can have different prices across plans, allowing you to test the financial impact of price changes scenario-by-scenario.

Authorizations

Authorization
string
header
required

OAuth2 Client Credentials flow.

Query Parameters

workspaceId
string
required

The workspace ID to query master data from

productId
string

Filter by product ID

customerRef
string

Filter by customer reference

name
enum<string>

Filter by pricing type

Available options:
GrossSalesValue,
ListedPrice,
GrossSalesValuePerKg,
ListedPricePerKg
asOf
string<date>

Filter to prices valid on a specific date (ISO 8601). Returns records where startDate ≤ asOf ≤ endDate.

limit
integer
default:50

Maximum number of records to return (max 500)

Required range: x <= 500
skip
integer
default:0

Number of records to skip (for pagination)

Response

Paginated list of product pricing records

total
integer
limit
integer
skip
integer
data
object[]