Fenestro API Docs

Getting started

The public API is available at https://api.fenestro.io/v1. All catalogue endpoints require a tenant API token.

Make a request

curl -X POST https://api.fenestro.io/v1/brands \
  -H "Authorization: Bearer fen_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"Reynaers Aluminium","display_order":10}'

Pagination

List endpoints accept page and page_size. Page numbers start at 1. The maximum page size is 100.

GET /v1/products?page=1&page_size=50&active=true

Configurable product workflow

StepEndpointPurpose
BrandPOST /v1/brandsCreate or sync the manufacturer/catalogue label.
CategoryPOST /v1/categoriesCreate or sync the product family.
ProductPOST /v1/productsCreate the catalogue product with reference, prices, and dimensions.
OptionsPOST /v1/optionsCreate reusable tenant choices with pricing metadata.
PricingPOST /v1/products/{product_id}/pricing-configurationsCreate normalized configurator pricing rows.
StepsPOST /v1/products/{product_id}/stepsCreate the configurator flow and attach option ids.
From pricesGET /v1/categories/{category_id}/from-pricesCompute catalogue card minimum prices from active steps and pricing rows.
ValidationGET /v1/products/{product_id}/configuration/validationCheck that the product can be safely used by tenant integrations.

List response

{
  "data": [],
  "page": 1,
  "page_size": 50,
  "total": 0,
  "total_pages": 0,
  "has_more": false
}

Use Swagger UI for exact schemas and try-it-out calls. These docs explain the workflow and stable conventions.