---
title: "Bluestone PIM Integration"
description: "Bluestone PIM is a Norwegian product information management platform. Agents create and enrich products, maintain the catalog tree and attribute definitions, manage the Media Bank, score data completeness, and publish approved content to downstream channels."
url: https://flowrunner.ai/integrations/bluestone-api-public
date_modified: 2026-09-04T19:26:11-07:00
---

# Bluestone PIM

[E-commerce](https://flowrunner.ai/integrations/category/e-commerce)

Bluestone PIM is a Norwegian product information management platform. Agents create and enrich products, maintain the catalog tree and attribute definitions, manage the Media Bank, score data completeness, and publish approved content to downstream channels.

3 triggers · 182 actions · OAuth · available

[Bluestone PIM website](https://www.bluestonepim.com/) · [Platform Documentation](https://bluestonepim.com/) · Capability data verified 2026-08-26

1.  A supplier feed or an ERP export lands with new and changed products
2.  Agent maps the incoming columns onto the attribute definitions this catalog actually has
3.  Create Product writes the new records, and Update Product Attributes upserts up to a hundred values on each one in a single call
4.  Add Products To Category files them in the tree and Attach Assets To Product links their images
5.  Recalculate Completeness scores the batch and Get Validation Issues names what is still short
6.  Agent posts the products that cleared the threshold and the ones that did not to the merchandising channel
7.  A product owner decides whether the shortfalls hold the release or ship as a known gap

## What This Integration Enables

Bluestone PIM is the master record that sits upstream of every storefront, marketplace and print feed a merchant runs, and its defining commitment is that editing and publishing are two separate acts. You can enrich a product all week and nothing moves until a sync session is closed. That separation is what makes it safe to let agents do the enrichment. FlowRunner agents create products, upsert a hundred attribute values in one call, and file records in the catalog tree. They attach and order images in the Media Bank, maintain the attribute model itself, and stamp a season or a supplier code across a searched selection. All of it happens inside the staging half of that boundary.

The platform's other commitment is that it does not destroy product data. There is no delete for a product anywhere in this API, only archive and unarchive. That is a good default, and FlowRunner's [human-in-the-loop](https://flowrunner.ai/concepts/human-in-the-loop) discipline covers the places where the platform's own caution runs out. Agents also score completeness, list the specific validation issues behind a score, open and close publication sessions, read the partial results a session reports, and check whether what the webshop can see still matches what the master record says. Contexts are the axis all of it turns on: a product can be complete in one locale and empty in another, published in one channel and not another, and scored separately in each.

### Without FlowRunner

**Product data assembled in files**: Copy, attributes and images are gathered per channel in spreadsheets that diverge the moment they are sent

**Publication as an unrecorded push**: Somebody decides a product is ready and exports it, and the reasoning is not written anywhere the next person can read

**Quality found by the channel**: A missing attribute surfaces as a marketplace rejection or a customer question rather than before the feed left

### With FlowRunner

**One master, many contexts**: Products, attributes, assets and categories exist once, and each locale and channel is a dimension of the same record rather than a copy of it

**Publication as an explicit session**: Nothing reaches a channel until a session is closed, and the session reports which products went out and which did not

**Quality scored before it ships**: Completeness scores and validation issues are read as part of the release, so a gap becomes a decision instead of a surprise

## Use Case Scenarios

### A supplier feed becomes an enriched catalog record

A supplier drop or an ERP export arrives. The agent reads the current model with Search Attribute Definitions rather than assuming field names, maps the incoming columns onto it, and writes each product with Create Product followed by Update Product Attributes, which upserts up to a hundred values per product in a single call. Add Products To Category files them in the tree, and Attach Assets To Product links the images, with Reorder Product Asset putting the pack shot in first position. Where a product was first created in the storefront rather than the PIM, a [BigCommerce](https://flowrunner.ai/integrations/bigcommerce) product event runs the same path in reverse so the master record catches up rather than diverging. Validate Attribute Value runs before the write on anything the feed is known to be loose about, which turns a rejected batch into a caught row.

### Publication gated on data quality

Nothing should reach a channel because a batch happened to finish. On a schedule the agent calls Recalculate Completeness across the release selection, reads Get Completeness Scores, and pulls Get Validation Issues for everything below threshold. The products that pass go into a session: Create Sync Session against the target contexts, Add Products To Sync Session in batches of a hundred, then Close Sync Session, which is the call that actually publishes. Get Sync Session Report is read afterwards, because a published with issues result means some products went and some did not, and Get Sync Session Product Issues names which. When On Product Event reports a product published, [WooCommerce](https://flowrunner.ai/integrations/woocommerce) receives the new name, description and attribute values so the storefront and the master record agree.

### The data quality backlog becomes assigned work

A catalog with fifty thousand products always has a quality tail, and it is invisible until somebody builds a report nobody has time to build. The agent runs Scan Products with a cursor so depth does not degrade the query, reads Get Completeness Scores and Get Validation Issues for the shortfall, and turns the result into a working document in [Google Sheets](https://flowrunner.ai/integrations/google-sheets) that buyers and copywriters can sort by brand or by category. Then it creates the work rather than just reporting it: Create Task against a product selection, Assign Task to the group that owns those brands, and Add Task Comment explaining what the score is missing. A morning digest goes to the merchandising channel in [Slack](https://flowrunner.ai/integrations/slack), and Complete Task Product moves progress as each item is finished.

## Human-in-Loop Highlight

Bluestone refuses to delete a product. Across 182 operations there is no product delete at all, only Archive Products and Unarchive Products, because the platform's own position is that a master record should not be destroyable by an API call. Delete Category is the place that position runs out. It removes the node and every descendant beneath it, unassigns every product on the way down, and on a top level node takes the entire catalog tree with it. The products survive, so nothing fails and nothing is reported. What is gone is the structure every channel's navigation and category mapping was built from, and Archive Catalog is sitting right beside it as the reversible answer for a root. So a tidy-up agent reads Get Category Tree, counts what hangs beneath, and stops. It posts: "Category Outdoor / Legacy 2023 has 14 descendant nodes and 2,318 products filed beneath it, and 3 of those nodes are mapped in the active marketplace feed. Deleting it unassigns every one of those products and cannot be undone. Archive the catalog instead, or delete?" The product owner answers. The agent will build, move, reorder and file all day; it will not be the thing that quietly removes a tree in a system that was designed not to lose anything.

Agent processes routinely

Detects exception requiring judgment

Clear match Continues automatically

Ambiguous Routes to human via preferred channel

Human decides

Agent resumes with decision

## Agent Capabilities

182 actions

### Products

10

-   **List Products** Reads a page of products with a cursor, a hundred at a time. Ask for the views you need, because with none requested the platform returns bare identifiers.
-   **Get Product** Reads one product with the sections you ask for: metadata, attributes, categories, assets or labels. Multi language values come back wrapped, so a name reads as a map of locale to value rather than a string.
-   **Get Product Overview** Reads a product's summary view in one call, for a flow that needs the shape of a record rather than every section of it.
-   **Get Products By IDs** Reads many products by identifier in one call, which is how a batch avoids a loop of single reads.
-   **Get Products By Numbers** Reads many products by their business numbers, which is what an ERP or supplier feed actually knows them by.
-   **Create Product** Creates a product. It answers with an empty body and returns the new identifier in a header, which this connector reads back so a flow has something to chain on.
-   **Update Product** Updates a product's name, number and description. The connector wraps the multi language values the way the platform models them.
-   **Copy Product** Duplicates a product, which is the fastest honest way to add a near identical variant of something already enriched.
-   **Archive Products** Archives up to a hundred products. There is no delete for a product anywhere in this platform, and this is deliberately the removal.
-   **Unarchive Products** Brings archived products back. The counterpart that makes archiving the safe removal.

### Product Attributes

10

-   **Get Product Attributes** Reads the attribute values on a product for the current context.
-   **Add Product Attribute** Adds one attribute value to a product.
-   **Update Product Attribute** Updates one attribute value on a product.
-   **Update Product Attributes** Upserts up to a hundred attribute values on one product in a single call. The workhorse of any enrichment flow.
-   **Delete Product Attribute** Removes an attribute value from a product.
-   **Set Attribute On Products** Stamps the same attribute value across a set of products, which is how a season, a supplier code or a campaign marker reaches a whole selection.
-   **Remove Attribute From Products** Removes an attribute across a set of products. It answers immediately and finishes later, so a read straight afterwards can still show the old value.
-   **Set Product Dictionary Values** Writes dictionary backed attribute values on a product, which is the controlled vocabulary path rather than free text.
-   **Get Async Task Status** Polls the jobs that answer with a task identifier rather than a result. The read that tells a flow whether an asynchronous write has actually landed.
-   **Validate Attribute Value** Checks a value against its definition before writing it, which turns a rejected batch into a caught row.

### Attribute Definitions

22

-   **List Attribute Definitions** Lists the attribute definitions in the organization, paged by number and size with a default page large enough that a first call usually returns everything.
-   **Search Attribute Definitions** Searches attribute definitions, for a flow that maps an incoming feed column onto whatever the catalog already calls it.
-   **Get Attribute Definition** Reads one attribute definition with its type and constraints.
-   **Create Attribute Definition** Defines a new attribute. Names and numbers are unique across the whole organization rather than per group, so a duplicate anywhere blocks the create unless name validation is relaxed deliberately.
-   **Update Attribute Definition** Updates an attribute definition.
-   **Preview Attribute Definition Delete** Shows what a definition delete would affect before it happens. Read this rather than discovering the blast radius afterwards.
-   **Delete Attribute Definition** Deletes an attribute definition. It answers immediately and completes in the background.
-   **List Products Using Attribute** Lists the products carrying an attribute, which is the impact check behind a model change.
-   **Add Select Value** Adds an option to a select attribute.
-   **Update Select Value** Renames or re-orders an option on a select attribute, which changes what every product carrying it displays.
-   **Delete Select Value** Removes an option from a select attribute. Asynchronous, so the products carrying it settle after the call returns.
-   **Create Dictionary Attribute Definition** Defines an attribute backed by a dictionary rather than free text.
-   **Create Dictionary Value** Adds a term to a dictionary, which is how a controlled vocabulary grows without opening it to free text.
-   **List Dictionary Values** Lists the terms in a dictionary.
-   **List Attribute Groups** Lists the groups attribute definitions are organized into.
-   **Create Attribute Group** Creates an attribute group.
-   **Rename Attribute Group** Renames an attribute group.
-   **Delete Attribute Group** Deletes an attribute group.
-   **List Attribute Group Definitions** Lists the definitions inside a group, which is what a data entry screen or a completeness rule is built from.
-   **List Ungrouped Attribute Definitions** Lists definitions that belong to no group, which is where model drift usually shows up first.
-   **List Compound Attribute Definitions** Lists compound attribute definitions, the ones built from several component values.
-   **Create Compound Attribute Definition** Defines a compound attribute, for a measurement or a specification that is genuinely several fields.

### Catalogs and Categories

23

-   **List Catalogs** Lists the catalogs in the organization with their root nodes.
-   **Get Category Tree** Reads a catalog's tree. Worth taking before any structural change, because the platform keeps no copy of a tree that has been removed.
-   **Archive Catalog** Archives a catalog root. The reversible alternative to deleting a top level node, and usually the right answer.
-   **Unarchive Catalog** Brings an archived catalog back.
-   **Create Category** Creates a category node. Names and numbers are unique across the entire organization rather than among siblings, which surprises most first integrations.
-   **Get Category** Reads one category with its settings.
-   **Update Category** Updates a category's name and description, wrapped the way the platform models partial multi language updates.
-   **Delete Category** Deletes a category and every descendant beneath it, unassigning every product on the way down. The products survive without their placement, and there is no undo. The operation this page's human gate exists for.
-   **List Category Children** Lists the direct children of a category.
-   **Get Category Path** Reads the path from a category up to its root, which is what a breadcrumb or a channel mapping needs.
-   **Move Category** Moves a category to a new parent, taking its subtree with it.
-   **Reorder Category** Changes a category's position among its siblings. Position zero is a real instruction to make it first rather than an empty value.
-   **Search Categories** Searches categories across catalogs.
-   **List Category Products** Lists the products filed under a category.
-   **Add Product To Category** Files one product under a category.
-   **Add Products To Category** Files up to a hundred products under a category in one call.
-   **Remove Product From Category** Removes one product from a category. This one fails when the product is not there, while several sibling bulk operations skip quietly, so a flow should not assume either contract.
-   **Get Product Categories** Reads every category a product is filed under.
-   **Assign Product To Categories** Sets the full set of categories a product belongs to.
-   **List Category Attributes** Lists the attributes assigned to a category, which is what drives requirements for products filed beneath it.
-   **Assign Attribute To Category** Assigns an attribute to a category.
-   **Set Category Attribute Value** Writes an attribute value at the category level.
-   **Unassign Attribute From Category** Removes an attribute from a category.

### Labels

9

-   **List Labels** Lists the labels available for products.
-   **Create Label** Creates a label. It returns no identifier, so read it back with List Labels.
-   **Update Label** Updates a label's name or appearance.
-   **Delete Label** Deletes a label and removes it from everything carrying it.
-   **Get Product Labels** Reads the labels on a product.
-   **Add Labels To Product** Adds several labels to one product.
-   **Remove Label From Product** Removes a label from one product.
-   **Add Label To Products** Adds one label across up to a hundred products, which is how a campaign or a review queue is marked in bulk.
-   **Remove Label From Products** Removes one label across a set of products, which is how that queue is cleared.

### Product Assets

4

-   **Get Product Assets** Reads the assets attached to a product in their display order.
-   **Attach Assets To Product** Attaches up to a hundred assets to a product.
-   **Detach Asset From Product** Removes an asset from a product without touching the file in the Media Bank.
-   **Reorder Product Asset** Changes an asset's position on a product. Position zero makes it the main image, which is a real instruction rather than an unset value.

### Variants and Bundles

8

-   **Create Variant Group** Creates a variant group, the parent that variants of one product hang from.
-   **Assign Product Variant** Assigns one product as a variant of a group.
-   **Assign Product Variants** Assigns several products as variants in one call.
-   **Unassign Product Variant** Removes a product from a variant group.
-   **Create Product Bundle** Creates a bundle, a product made of other products.
-   **Add Product To Bundle** Adds a component product to a bundle.
-   **Update Bundle Quantity** Changes how many of a component a bundle contains.
-   **Remove Product From Bundle** Removes a component from a bundle.

### Relations

9

-   **List Relations** Lists the relation types defined, such as accessory, spare part or replacement.
-   **Get Relation** Reads one relation type.
-   **Create Relation** Defines a relation type.
-   **Update Relation** Updates a relation type.
-   **Delete Relation** Deletes a relation type and the links using it.
-   **Get Product Relations** Reads the relations defined on a product.
-   **Get Related Products** Reads the products on the other end of a product's relations, which is what a cross sell block on a storefront is built from.
-   **Relate Products** Links products together under a relation type.
-   **Unrelate Products** Removes links between products.

### Media Bank

22

-   **List Assets** Reads a page of Media Bank assets with a cursor, a hundred at a time.
-   **Get Asset** Reads one asset with the views you ask for. With no view requested the platform answers with an identifier and nothing else.
-   **Get Assets By IDs** Reads many assets in one call.
-   **Find Assets By Numbers** Finds assets by the numbers a supplier or a DAM export knows them by.
-   **Start Asset Upload** Begins an upload and returns a pre-signed form. The file bytes are posted directly to storage by whatever holds them, which is why this connector does not move them itself.
-   **Complete Asset Upload** Finishes an upload. The asset is invisible to other users until this call runs.
-   **Cancel Asset Upload** Abandons an upload. The failure branch that keeps the Media Bank from filling with half created assets nobody can see.
-   **Generate Asset Download URLs** Returns expiring download links for assets, for a channel or a partner that needs the file rather than a reference.
-   **Generate Asset Fixed Link** Returns a durable path for an asset, for a storefront that will reference it repeatedly.
-   **Update Asset Name** Renames an asset.
-   **Update Asset Description** Updates an asset's description, which is where alt text and usage notes live.
-   **Set Asset Published** Publishes or unpublishes an asset, which decides whether downstream channels can see the file at all.
-   **Duplicate Asset** Copies an asset, for a crop or a variant that needs its own metadata.
-   **Delete Asset** Permanently deletes one asset from the Media Bank.
-   **Delete Assets** Permanently deletes a set of assets. There is no asset removed event in this platform, so nothing downstream is told.
-   **Get Asset Attributes** Reads the attribute values on an asset.
-   **Assign Attribute To Asset** Assigns an attribute to an asset.
-   **Set Asset Attribute Value** Writes an attribute value on an asset, which is how rights, photographer and usage terms get recorded.
-   **Add Labels To Asset** Adds media labels to an asset.
-   **Remove Label From Asset** Removes a media label from an asset.
-   **List Media Labels** Lists the labels available for Media Bank assets.
-   **Create Media Label** Creates a media label.

### Search

5

-   **Search Products** Searches products with paging by page and size. Right for a screenful, and it degrades past a few thousand rows.
-   **Scan Products** Runs the same query with a cursor instead of page numbers. The form a full export should use, because it does not degrade with depth.
-   **Count Products** Counts the products matching a query without pulling them, which is how a flow sizes a batch before it starts.
-   **Search Assets** Searches the Media Bank.
-   **Full Text Search** Searches across entity types in one call, for a lookup that does not know which object it is chasing.

### Data Quality

9

-   **Get Completeness Scores** Reads completeness scores across a selection, which is the number a data quality report is built on.
-   **Get Entity Completeness** Reads one entity's completeness. It fails both when no score has been calculated and when the entity does not exist, so a failure here is not proof the product is missing.
-   **Recalculate Completeness** Recalculates scores. The call to make before trusting a number the platform has flagged as stale.
-   **Get Completeness Calculation Status** Reports whether scores need recalculating, which is the platform's own statement that the numbers are out of date.
-   **List Completeness Requirements** Lists the rules that decide what complete means for a given selection.
-   **Create Completeness Requirement** Creates a completeness rule.
-   **Update Completeness Requirement** Updates a completeness rule, which changes the score on every product it covers.
-   **Delete Completeness Requirement** Deletes a completeness rule.
-   **Get Validation Issues** Lists the specific problems behind a score, which is what turns a percentage into a work list somebody can act on.

### Editorial Tasks

10

-   **List Tasks** Lists editorial tasks with their state.
-   **Get Task** Reads one task with its product selection.
-   **Create Task** Creates an editorial task against a product selection, which is how a flow hands enrichment work to named people.
-   **Update Task** Updates a task. Asynchronous, so a read straight afterwards can still show the old state.
-   **Assign Task** Assigns a task to a user or a group. Also asynchronous.
-   **Assign Products To Task** Adds products to a task's selection.
-   **Complete Task Product** Marks one product in a task as finished, which is what moves a task's progress rather than a single completion flag.
-   **Revoke Task Product** Reopens a product inside a task, for work that was marked done and was not.
-   **List Task Comments** Reads the discussion on a task.
-   **Add Task Comment** Adds a comment to a task, which is how an agent explains why it queued something for a person.

### History

3

-   **List History** Lists change history across the catalog, which is what answers who changed this and when.
-   **Get Entity History** Reads the change history of one product, category or asset.
-   **Count Entity History** Counts history entries for an entity, for a flow that wants activity volume rather than the entries themselves.

### Contexts

4

-   **List Contexts** Lists the locale and channel contexts the organization defines. It needs no identifiers and exercises the whole token exchange, which makes it the connection test.
-   **Create Context** Creates a context. It returns no identifier, so read it back with List Contexts.
-   **Update Context** Updates a context's configuration.
-   **Archive Context** Archives a context rather than deleting it.

### Publishing

10

-   **Create Sync Session** Opens a publication session against one or more contexts. Nothing is published yet.
-   **Add Products To Sync Session** Adds up to a hundred products to an open session, repeated as many times as the batch needs.
-   **Close Sync Session** Closes the session, and closing is what actually publishes. Everything before this call is staging.
-   **Cancel Sync Session** Throws an open session away without publishing any of it.
-   **Get Sync Session** Reads a session's state while it runs.
-   **Get Sync Session Report** Reads the session outcome. A published with issues result is a partial success, meaning some products went out and some did not.
-   **Get Sync Session Product Issues** Lists which products failed and why, which is the difference between knowing a publish was partial and knowing what to fix.
-   **Change Product Publication State** Publishes or unpublishes up to a hundred products in one context without opening a session. The right tool for a small correction, not for a release.
-   **Get Product Publication States** Answers whether what the webshop can see matches what is in the master record.
-   **Get Category Publication States** Answers the same question for categories, which is how a navigation change is verified rather than assumed.

### Published Content

8

-   **Get Published Product** Reads a product as published consumers see it, through the read only published surface rather than the master record.
-   **List Published Products** Lists published products.
-   **Get Published Products By Numbers** Reads published products by their business numbers.
-   **List Published Categories** Lists published categories.
-   **List Published Category Products** Lists the products published under a category.
-   **List Published Attributes** Lists the attributes present on published content.
-   **List Publications** Lists the publications available on the published surface.
-   **List Publish Info** Reads publication metadata, which is how a channel checks freshness without pulling the content.

### Users and Access

6

-   **Get My Permissions** Reads what this API client is actually allowed to do. The first thing to run when a call is refused, because a refusal here often means the path or the environment is wrong rather than the rights.
-   **List Users** Lists the users in the organization.
-   **Get User** Reads one user.
-   **List User Groups** Lists user groups, which is what tasks are assigned to when they are not assigned to a person.
-   **List Roles** Lists the roles defined in the organization.
-   **List API Clients** Lists the API clients configured, which is the inventory behind a credential review.

### Webhooks

10

-   **Create Webhook** Registers a webhook. On its own it subscribes to nothing, which is the single most common reason a Bluestone webhook is silent.
-   **Get Webhook** Reads one webhook's configuration.
-   **List Webhooks** Lists the registered webhooks.
-   **Update Webhook** Updates a webhook. Asynchronous, so the change settles after the call returns.
-   **Delete Webhook** Removes a webhook.
-   **Subscribe Webhook Events** Subscribes a webhook to specific event types. The second call that a working subscription needs.
-   **List Webhook Subscriptions** Lists what a webhook is subscribed to. An empty list here is the diagnosis for a trigger that never fires.
-   **Unsubscribe Webhook Events** Removes event types from a webhook's subscription.
-   **Ping Webhook** Sends a test delivery, which proves the endpoint before a real event depends on it.
-   **List Webhook Deliveries** Lists delivery attempts with their status. Filtered to errors, this is the debugger for a webhook the platform may have started blocking.

## Triggers

3 triggers

### Event Triggers

3

-   **On Product Event** Fires when a product is created, published, or when one of its names, numbers, attributes, assets, labels, categories, variants, bundles or relations changes. There is no generic product updated event in this platform, only fine grained ones, so a picker offering one would be inventing an event that never fires. Deliveries are batched and this trigger fires once per event in the batch, with the batch size carried on each one.
-   **On Category Event** Fires when a category or catalog node is created, removed, renamed, moved, reordered or archived, or when one of its attributes or assets changes. Category is the only entity in Bluestone with a removal event, so a flow that needs to know when something was deleted can only learn it here.
-   **On Asset Event** Fires when a Media Bank asset is created, renamed, renumbered, redescribed, or has an attribute set or unset. There is no asset removed event, so a deleted file is not something a flow can be told about, which is worth knowing before a workflow depends on one.

## Frequently Asked Questions

### What can FlowRunner do with Bluestone PIM?

FlowRunner agents can run List Products, Get Product, and Get Product Overview in Bluestone PIM, plus 179 more actions.

### Does connecting Bluestone PIM to FlowRunner require OAuth?

Yes. Bluestone PIM connects to FlowRunner with OAuth 2.0, so agents authenticate without handling raw credentials.

### Can Bluestone PIM trigger a FlowRunner workflow automatically?

Yes. Bluestone PIM supports 3 triggers that can start a FlowRunner workflow automatically.

**Work at Bluestone PIM?** This integration exposes Bluestone PIM to AI agents on every FlowRunner plan, including through MCP, at no cost to you. [See what FlowRunner offers integration partners](https://flowrunner.ai/integrations/partners), including how to keep this page current.

---
Markdown version of https://flowrunner.ai/integrations/bluestone-api-public. Site index: https://flowrunner.ai/llms.txt
