Skip to content
Syncore

Prices & price rules

Final prices

GET /prices (ability prices:read) returns the final selling price of each product and where it comes from.

curl -s "https://app.syncore.gr/api/v1/prices?sku=ABC-1001,ABC-1002" -H "Authorization: Bearer $SYNCORE_TOKEN"
{
  "data": [
    {
      "product_id": 1201,
      "sku": "ABC-1001",
      "base_price": 12.4,
      "final_price": 19.9,
      "manual_price": false,
      "price_rule_id": 3,
      "updated_at": "2026-10-29T10:00:00+02:00"
    }
  ],
  "meta": { "current_page": 1, "per_page": 25, "total": 1, "last_page": 1 },
  "links": { "next": null, "prev": null }
}

Filters: sku (comma separated), supplier_id, page, per_page. price_rule_id is the rule that applied; null when the price is manual or no rule matches.

To set a manual price on one product use PATCH /products/{id} with manual_price — see Products.

Price rules

Endpoint Ability
GET /price-rules, GET /price-rules/{id} prices:read
POST /price-rules, PATCH /price-rules/{id}, DELETE /price-rules/{id} prices:write

Rule fields:

Field Values
name, description text
rule_type 1 percentage, 2 fixed amount, 3 fixed price
value number ≥ 0
price_rule_scope 1 all, 2 supplier, 3 category, 4 product
global_supplier_id / global_category_id / global_product_id depending on the scope
rule_conditions, price_comparison, price_threshold optional condition: 1 lower than, 2 greater than the threshold
is_enabled true / false

Example: +25% on every product of one supplier.

curl -s -X POST "https://app.syncore.gr/api/v1/price-rules" \
  -H "Authorization: Bearer $SYNCORE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Supplier A +25%", "rule_type": 1, "value": 25, "price_rule_scope": 2, "global_supplier_id": 7, "is_enabled": true}'

Answers 201 with the rule (id, the fields above, priority, updated_at). PATCH takes only the fields you change; DELETE answers 204.