REST API

Build on the API
the app runs on.

Products, families, attributes, categories and assets over REST, described in an OpenAPI reference and checked against the same permissions as your team.

01Resources

The whole catalogue, over one REST API.

Read and write products, variants, families, attributes, categories, data languages and assets. A value saved through the API is the value your team sees in the app.

The same product as in the app The new weight shows on the product page and adds a version to its history.
GET /api/products/{id}/variants

Products and variants

List, search and filter products, read one in any data language and create variants.

PUT /api/families/{id}/structure

The data model

Families and their structure, attributes, attribute groups, units, dictionaries and data languages.

PUT /api/products/{id}/categories

Category trees

Build category trees and set the categories of each product.

POST /api/assets/upload-from-url

Assets

Upload files or fetch them from a URL, organise folders and read thumbnails.

02Reference

An OpenAPI reference inside your openProd.

Every route is described from the same schemas that check its requests. It opens at /api/docs for the roles you allow.

Open for the roles you choose The reference opens for users whose role includes Read API docs.
OpenAPI 3.0.3

Built from the schemas

Parameters and responses come from the schemas that validate each request, so the reference matches the API.

/api/docs/json /api/docs/yaml

JSON and YAML

Take the specification from /api/docs/json or /api/docs/yaml into your own tools.

400 {"error": "validation"}

Errors you can read

A rejected request returns 400 with the fields that failed, 404 for a missing record and 409 for a conflict.

products families assets

Grouped by resource

Routes are grouped the way the app is: products, families, attributes, categories, assets and more.

03Access

Your team's roles, on every request.

The API works with a signed-in openProd user. Each route checks one permission of that user's roles, and every change is saved under their name.

Checked on every route The role can read and update products, so the delete is refused with 403.
POST /api/auth/sign-in/email

Sign in once

Sign in with the user's email and password and send the session cookie with the calls that follow.

products.values.update Update product values

One permission per route

Reading products needs Read products. Saving values needs Update product values.

401 unauthorized 403 forbidden

Clear refusals

A call without a session returns 401. A call the role does not allow returns 403.

Source API Actor Jan Testowy

On the record

Changes show source API and the user in the audit log, and product edits add a version to the history.

04MCP server

For AI agents, the MCP server.

A separate MCP server gives AI clients tools for products, families, attributes, categories and assets, protected by its own key and the origins you allow.

Its own key, its own tools The MCP server answers AI clients with tools, protected by a key and the origins you allow.

Questions

Before you
write the first call.

How do API calls authenticate?

With an openProd user session. Sign in with the user's email and password at POST /api/auth/sign-in/email and send the session cookie with the calls that follow. Each route then checks the permissions of that user's roles.

Can I use API keys or access tokens?

The REST API works with user sessions. The MCP server has its own key, sent as a bearer token. If your integration needs another way to connect, talk to the team.

Where do I find the API reference?

In your openProd at /api/docs, for users whose role includes Read API docs. The same specification is available as JSON at /api/docs/json and as YAML at /api/docs/yaml.

Which permissions does an integration need?

Only the ones for the routes it calls. Create a role for the integration, for example with Read products and Update product values, and give it to the user the integration signs in as.

Are changes made through the API recorded?

Yes. They appear in the audit log with source API and the signed-in user as actor. Product edits also add a version to the product history, like edits in the app.

Does openProd send webhooks?

Not today. If your integration needs to react to changes in openProd, talk to the team about your case.

Is there an SDK?

There is no official SDK. The OpenAPI specification describes every route, so you can generate a client for your language with standard OpenAPI tools.

How is the MCP server different from the REST API?

The MCP server is a separate service for AI clients. It offers tools instead of routes, is protected by its own key and allowed origins instead of user roles, and its changes appear in the audit log with source MCP.

Planning an integration? Talk to the team.

In the demo, we open the API reference, set up a role for your integration and walk through the calls it needs.