This is the PSI Backend API Documentation.
This documentation aims to provide all the information you need to work with our API.
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_BEARER_TOKEN}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
This endpoint allows you to authenticate and retrieve an access_token and a refresh_token. The access_token must be included in the header of every API request to access protected resources. You can log in using your standard PSI account credentials. However, to avoid potential issues caused by password changes of regular user accounts, we strongly recommend creating a dedicated Sub-Account for API access. You can set up a Sub-Account in your PSI account settings (https://www.psi-network.de/).
curl --request POST \
"https://api.psiproductfinder.de/v2/auth" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"username\": \"demo@psi-network.de\",
\"password\": \"password\"
}"
{
"access_token": "eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19",
"refresh_token": "07070512341eacdemo3a64267c377cdcf06501",
"expires_in": 1737019546
}
Your access_token is valid for the duration specified in the expires_in field of the authentication response (e.g., typically 1 hour). Once the token expires, you must generate a new one to continue accessing protected resources.
curl --request POST \
"https://api.psiproductfinder.de/v2/refresh" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"username\": \"demo@psi-network.de\",
\"refresh_token\": \"07070512341eacdemo3a64267c377cdcf06501\"
}"
{
"access_token": "eyJ0eXAidemoV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJwcLmRlIiwiYXVkIjoicHNpcHJvZHVjdansmRlci5kZSIsImp0adIeoQzNjMwIiwiaWF0IjoxNzM3MDE5NTQ2LjE2OTkyMiwibmJmIjoxNzM3MDE5NTQ2LjE2OTkyMiwiZXhwIjoxNzM3MDE5NTQ2LjE2OTkyMiwicGF5bG9hZCI6eyJwc2lubyI6NDM2MzAsInVzZXJfaWQiOjEyNDcyOSwiZ3JvdXBzIjoiMTQiLCJlbWFpbCI6ImZyYW5rQHJoZWluc2NoYWZlLmRlIn19",
"expires_in": 1737020073
}
The Get Entities endpoint allows you to retrieve all products associated with your PSI number. It returns all products that belong to your account, but you can customize the results using optional query parameters.
deendeenMust be at least 1.
Must be at least 1. Must not be greater than 100.
curl --request GET \
--get "https://api.psiproductfinder.de/v2/products?language=en&locale=en&filter=outdated&search=Suchen&page=1&size=20" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"code": 200,
"status": "OK",
"data": [],
"meta": {}
}
Create an English product or add a German translation to an existing variant. For a translation, set language to de and use the existing variant's product_number. Language defaults to en; data returns the full product.
name, product_number and master_product_number are required. Group codes are listed in the PSI code spreadsheet.
curl --request POST \
"https://api.psiproductfinder.de/v2/products/store" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Demo Product\",
\"product_number\": \"demo-001\",
\"language\": \"en\",
\"locale\": \"en\",
\"master_product_number\": \"demo-001\",
\"brand\": \"PSI Demo\",
\"description\": \"This is a demo product\",
\"tags\": \"demo, promotion\",
\"ean_code\": \"4006381333931\",
\"product_groups\": [
\"05138008\",
\"08094001\"
],
\"certificates\": [
\"CERT-04200000\"
],
\"colors\": [
\"CG-BLAK5\"
],
\"color_description\": \"Black\",
\"country_origin\": \"CC-DE\",
\"made_in\": \"CC-DE\",
\"images\": [
{
\"src\": \"https:\\/\\/psiproductfinder.de\\/images\\/logo\\/logo.svg\",
\"name\": \"Demo product image\",
\"description\": \"Front view of the product\"
}
],
\"delivery_time_max\": 3,
\"delivery_time_min\": 1,
\"finishings\": [
{
\"group\": \"FG-APPN11\",
\"included\": false,
\"description\": \"Demo application\"
}
],
\"finishings_information\": \"Screen printing available.\",
\"legal_information\": \"Not suitable for children under 3.\",
\"material_description\": \"Acrylic\",
\"materials\": [
\"MG-ACRC7\"
],
\"measurement_length\": 100,
\"measurement_volume\": 10,
\"measurement_height\": 150,
\"measurement_width\": 135,
\"measurement_information\": \"Dimensions in millimetres.\",
\"weight_netto\": 10,
\"weight_brutto\": 13,
\"minimum_order_amount\": 1,
\"packaging\": 2,
\"price_ranges\": [
{
\"amount\": 1,
\"price_ek\": 1.5,
\"price_uvp\": 2
}
],
\"price_ranges_information\": \"Prices in EUR, excluding VAT.\",
\"product_information\": \"Reusable acrylic promotional product.\",
\"stock_available\": true,
\"delivery_information\": \"Ships within 3 business days.\",
\"target_group\": \"Adults\",
\"video\": \"https:\\/\\/example.com\\/demo-product.mp4\"
}"
{
"code": 200,
"status": "OK",
"message": "The product demo-001 has been successfully created.",
"data": {
"product_identifier": "p-demo",
"variant_identifier": "v-demo",
"product_number": "demo-001",
"name": "Demo Product"
}
}
This endpoint is used to retrieve a specific product or variant. You can identify the entity using one of the following methods: Internal Identifier: A unique identifier generated from your master_product_number, PSI number, and product_number. Identifiers starting with p- refer to a master product, and identifiers starting with v- refer to a variant. Product Number: You can also use your custom product_number as an identifier. Note: If you request a master product (p-), the response will include all associated variants.
required.
deendeencurl --request GET \
--get "https://api.psiproductfinder.de/v2/products/p-c2a1cf5x?language=en&locale=en" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"code": 400,
"status": "Bad request"
}
Update a product or translation. Omitted fields remain unchanged. Use the variant identifier in the URL; set language to de to update its German translation. data returns the full product.
Non-empty relationship arrays replace existing values. An empty price_ranges array clears prices; other empty arrays are ignored. Fields marked English only cannot be changed on a translation.
Variant identifier.
curl --request PATCH \
"https://api.psiproductfinder.de/v2/products/update/v-88c62663" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"Demo Product\",
\"product_number\": \"demo-001\",
\"language\": \"en\",
\"locale\": \"en\",
\"master_product_number\": \"demo-001\",
\"brand\": \"PSI Demo\",
\"description\": \"This is a demo product\",
\"tags\": \"demo, promotion\",
\"ean_code\": \"4006381333931\",
\"product_groups\": [
\"05138008\",
\"08094001\"
],
\"certificates\": [
\"CERT-04200000\"
],
\"colors\": [
\"CG-BLAK5\"
],
\"color_description\": \"Black\",
\"country_origin\": \"CC-DE\",
\"made_in\": \"CC-DE\",
\"images\": [
{
\"src\": \"https:\\/\\/psiproductfinder.de\\/images\\/logo\\/logo.svg\",
\"name\": \"Demo product image\",
\"description\": \"Front view of the product\"
}
],
\"delivery_time_max\": 3,
\"delivery_time_min\": 1,
\"finishings\": [
{
\"group\": \"FG-APPN11\",
\"included\": false,
\"description\": \"Demo application\"
}
],
\"finishings_information\": \"Screen printing available.\",
\"legal_information\": \"Not suitable for children under 3.\",
\"material_description\": \"Acrylic\",
\"materials\": [
\"MG-ACRC7\"
],
\"measurement_length\": 100,
\"measurement_volume\": 10,
\"measurement_height\": 150,
\"measurement_width\": 135,
\"measurement_information\": \"Dimensions in millimetres.\",
\"weight_netto\": 10,
\"weight_brutto\": 13,
\"minimum_order_amount\": 1,
\"packaging\": 2,
\"price_ranges\": [
{
\"amount\": 1,
\"price_ek\": 1.5,
\"price_uvp\": 2
}
],
\"price_ranges_information\": \"Prices in EUR, excluding VAT.\",
\"product_information\": \"Reusable acrylic promotional product.\",
\"stock_available\": true,
\"delivery_information\": \"Ships within 3 business days.\",
\"target_group\": \"Adults\",
\"video\": \"https:\\/\\/example.com\\/demo-product.mp4\"
}"
{
"code": 200,
"status": "OK",
"message": "The product demo-001 has been successfully updated.",
"data": {
"product_identifier": "p-demo",
"variant_identifier": "v-demo",
"product_number": "demo-001",
"name": "Demo Product"
}
}
To delete a variant, translation, or product, you need to provide the identifier (e.g., p-88c62663 for a product or v-88c62663 for a variant). If you want to delete a translation in a language other than the default (English), you must also specify the language parameter.
curl --request DELETE \
"https://api.psiproductfinder.de/v2/products/delete/v-88c62663" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"language\": \"en\"
}"
{
"code": 200,
"status": "success",
"message": "Product with identifier ':identifier' has been successfully deleted."
}
Returns a UUID. The upload-image endpoint accepts it as optional input but does not validate or use it.
curl --request GET \
--get "https://api.psiproductfinder.de/v2/upload-identifier" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"identifier": "57842050-b8be-4a0a-9383-130b0fa4d84e"
}
Upload an image as multipart form data. Use the returned absolute URL as images[].src. There is no daily upload limit; each variant accepts up to 5 images.
curl --request POST \
"https://api.psiproductfinder.de/v2/upload-image" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "bookmark="\
--form "identifier=57842050-b8be-4a0a-9383-130b0fa4d84e"\
--form "image=@/tmp/php91mpoprq7ipv8JbrJKi" {
"filename": "42d0050d623c8ec4481539245c1e6de9.png",
"absolute": "https://media.psiproductfinder.de/images/43630/42d0050d623c8ec4481539245c1e6de9.png"
}
curl --request POST \
"https://api.psiproductfinder.de/v2/bookmarks/et/contact" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identifier\": \"eveniet\"
}"
curl --request POST \
"https://api.psiproductfinder.de/v2/products/translation" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" curl --request GET \
--get "https://api.psiproductfinder.de/v2/user-histories" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"vmurphy@example.net\"
}"
cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Server Error"
}
curl --request POST \
"https://api.psiproductfinder.de/v2/user-histories" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"zaria18@example.com\",
\"product_id\": \"ekukkagxbnaglwgfpsmtzwvtwihznwkbfqhkrpzbiexf\",
\"variant_id\": \"moozusqvigskerpcyy\"
}"
curl --request GET \
--get "https://api.psiproductfinder.de/v2/bookmarks" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Server Error"
}
curl --request POST \
"https://api.psiproductfinder.de/v2/bookmarks/store" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"language\": \"a\",
\"locale\": \"en_ZA\",
\"description\": \"Sapiente id consequuntur in veritatis architecto.\",
\"headline\": \"dolore\",
\"key\": \"repellat\",
\"keyvisual\": \"ut\",
\"name\": \"ea\",
\"show_as_slider\": true,
\"show_on_supplier_detail\": false,
\"show_request_all_button\": false
}"
curl --request GET \
--get "https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"message": "Server Error"
}
curl --request PATCH \
"https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56/update" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"description\": \"Est non velit laboriosam doloribus recusandae animi perferendis animi.\",
\"headline\": \"rerum\",
\"key\": \"et\",
\"keyvisual\": \"aperiam\",
\"name\": \"sit\",
\"show_as_slider\": false,
\"show_on_supplier_detail\": false,
\"show_request_all_button\": false
}"
curl --request POST \
"https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56/consequatur/add" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"description\": \"Ut quis sit error eum.\",
\"headline\": \"amet\",
\"key\": \"impedit\",
\"keyvisual\": \"tempora\",
\"name\": \"impedit\",
\"show_as_slider\": true,
\"show_on_supplier_detail\": false,
\"show_request_all_button\": false
}"
curl --request POST \
"https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56/omnis/remove" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"description\": \"Quam nam sit voluptas vero est.\",
\"headline\": \"perspiciatis\",
\"key\": \"id\",
\"keyvisual\": \"inventore\",
\"name\": \"est\",
\"show_as_slider\": true,
\"show_on_supplier_detail\": false,
\"show_request_all_button\": true
}"
curl --request POST \
"https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56/duplicate" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"ut\"
}"
curl --request DELETE \
"https://api.psiproductfinder.de/v2/bookmarks/0004a030-2c25-11ec-b493-23defdd27f56/destroy" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" curl --request GET \
--get "https://api.psiproductfinder.de/v2/commands/iure/occaecati" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" cache-control: no-cache, private
content-type: application/json
vary: Origin
{
"error": "denied."
}
The Group Search allows you to query available group codes, which are also listed in the XLSX file (download). You can use the search parameter to filter results by a specific term and the locale parameter (en or de) to retrieve the corresponding results in your preferred language. This makes it easy to find and integrate group codes into your workflow.
curl --request POST \
"https://api.psiproductfinder.de/v2/productGroups/search" \
--header "Authorization: Bearer {YOUR_BEARER_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"locale\": \"en\",
\"search\": \"Jackets\"
}"
[
{
"label": "Clothing",
"options": [
{
"label": "Clothing > Jackets",
"value": "01027009"
},
{
"label": "Clothing > Quilted Jackets",
"value": "01027025"
},
{
"label": "Clothing > Wind Jackets, Windcheaters",
"value": "01027031"
},
{
"label": "Clothing > Winter Jackets",
"value": "01027032"
}
]
},
{
"label": "Rucksacks",
"options": [
{
"label": "Rucksacks > Rain Jackets",
"value": "13206004"
}
]
}
]