Skip to content
  • There are no suggestions because the search field is empty.

How to connect your product data to Flipsnack via API

Sync inventory from your ERP or PIM system instead of manual spreadsheet uploads

Overview

Flipsnack's Catalog API automates the transfer of product data from internal systems, such as a Product Information Management (PIM) platform or an Enterprise Resource Planning (ERP) tool, directly into your Flipsnack workspace. 

💡 Benefits of connecting your product data through the API
  • The ceiling is 500 products a call: the same for creates, updates and deletions, so a full catalog moves in a handful of calls.
  • Send the diff: an update carries only the fields that changed, a price or a description.
  • Your PIM stays the source of truth: your integration pushes from the PIM or ERP, so the catalog cannot drift from it.
  • No CSV in between: products land in Automation, ready for any flipbook.

This feature eliminates the need for manual CSV uploads, letting your team import, update, and delete product information programmatically. It's designed for enterprise users such as B2B wholesalers, manufacturers, and retailers aiming to scale catalog creation with minimal effort.

Common use-cases

  • Wholesalers syncing thousands of SKUs across regions
    For businesses managing large product inventories, the API integration allows centralized product data to be synced across multiple catalogs, ensuring accuracy and consistency for every region-specific catalog.
  • Retailers are updating prices and descriptions seasonally
    Retailers can push seasonal updates such as holiday discounts, product name changes, or new promotions directly into Flipsnack without starting from scratch or manually editing entries.
  • Manufacturers distributing technical specs across teams
    With complex specs and frequent updates, manufacturers can use the API to ensure that engineering, marketing, and sales teams are all referencing the same product details in their catalogs.
  • Distributors customizing offers for individual clients
    Distributors can dynamically push tailored product sets or pricing tiers to Flipsnack, enabling them to design personalized catalogs for specific clients or vertical markets.

Requirements

  • Plan: Available as an add-on for any Flipsnack plan
  • Integration type: Requires developer setup on your end (API connector)

Step-by-step guide

Before you begin, here’s a quick overview of how it works: Your system (PIM, ERP, or internal app) sends product data in JSON format to Flipsnack using an API connector. Once pushed, the product information appears in Automation and is ready to use in any flipbook without manual uploads.

Get your API key

To begin, go to the Settings tab and on the left side, click on Integration , and take from there your unique API key for product feed integration. This key grants write access to your workspace data and the one you will add to your system, so be sure to keep it secure. Explore API documentation

From Integration take your API key

Set up your data source

  • Use your ERP, PIM, or custom application.
  • Configure it to send POST requests to Flipsnack’s API endpoint.
  • Ensure data is formatted in JSON according to Flipsnack’s API documentation.

Push your product data

We now support custom fields within the Products API so you can create more flexible product feeds. Just like with your CSV and spreadsheet uploads, you can now add custom fields directly to any product you create via the API. 

You can send batches of up to 500 products per request, and each product can include fields such as name, SKU, description, image URL, price, variants, specifications, and other custom fields.

You control when and how often data is pushed to Flipsnack. Syncs can be triggered on demand, either manually or through scheduled jobs in your internal system. This flexibility lets you align product updates with launches, seasonal campaigns, or other business workflows.

Important: Use consistent SKU identifiers across updates to ensure accurate tracking and modifications.

Review import results

After each data push, Flipsnack returns a detailed JSON response. This includes:

  • A list of all successfully imported products
  • Specific error messages for any product entries that failed to import (e.g., missing SKU, improperly formatted fields)

Important: The API validates each product individually, but if any item in a batch returns an error, the entire batch will be rejected.

Each valid product is automatically stored in a standardized format and grouped logically under a unique identifier (sourceHash). This sourceHash will be generated and managed by your system, not by Flipsnack. You’ll see all successful imports appear in the Automation tab in Design Studio, ready for use in your flipbooks.

Note: You can send up to 500 products per API request. The system supports a rate limit of 200 requests per minute. 

Trigger a catalog sync

Pushing products updates the data in your workspace, but an existing catalog keeps showing the values it was built with until it is synced. The collection.syncCatalog action starts that sync from your own system, so a catalog can refresh itself right after a feed change instead of waiting for someone to open Design Studio.

It works on catalogs built with Catalog Generator, catalogs created through collection.createCatalog, and normal flipbooks that have a product feed connected.

Request

curl -X GET "https://api.flipsnack.com/v1/" \
-G \
-d action=collection.syncCatalog \
-d apiKey=<your-api-key> \
-d collectionHash=<collection-hash> \
-d signature=<your-request-signature>

The action is GET only. Sending it as POST returns error code 40.

Response

The sync runs in the background, so the response confirms that it started rather than that it finished. A successful call answers with code 20 and returns:

  • The collectionHash you sent
  • collectionStatus set to processing
  • syncStartedDate, a UTC timestamp in Y-m-d H:i:s format

To find out when the sync has finished, poll collection.getCollection at regular intervals until collectionStatus is no longer processing.

Important: A sync updates the catalog's stored content, not what your readers see. On a published catalog, the live version keeps serving the previous data until you republish. To finish the job, call collection.update with the collection's current collectionStatus once the sync completes.

The full loop

  • Push your changes with products.create, products.update or products.delete
  • Call collection.syncCatalog for the catalog you want refreshed
  • Poll collection.getCollection until the status is no longer processing
  • Call collection.update to republish, so readers see the new data

While a sync is running

The catalog is locked for the duration. These actions are rejected with error code 38 until the sync ends:

  • collection.update
  • collection.downloadHTML
  • collection.setPermissions
  • A second collection.syncCatalog on the same catalog

Once the sync ends, the collection returns to the status it had before.

Error codes

  • 30: the collectionHash is missing or empty
  • 38: a sync is already running for this catalog
  • 40: the collection has no connected feed, or the request was sent as POST
  • 41: the API key is not valid
  • 43: the collection belongs to another workspace, or has been deleted
  • 44: the request signature is not valid
  • 46: no collection matches that hash

Note: If a catalog stops syncing after its feed was removed, the call returns code 40. Reconnect a feed before trying again.

Use product data in your catalog

Now you can populate your catalogs with your products. Open Design Studio. Go to the Automation tab, where you will see your products, and then simply drag and drop products directly into your flipbook design.

Tip: WIth the new API updates you can now apply different templates to different categories and subcategories within a catalog, so each product group gets the layout that suits it best, while keeping everything in one publication. If you want to know more about this feature contact our support team.

The product methods in full

Every field these three calls accept, with the request and response for each. The rest of the API, including publishing and statistics, is in the Flipsnack API guide.

API Method: products.create

The products.create method enables external systems (such as PIMs, ERPs, or custom applications) to send product data directly to Flipsnack. Each request is authenticated with your apiKey and signature, uses a sourceHash to group products, and carries a list of products to insert. Up to 500 products can be submitted per request. The data is validated and processed, making the products available under the Automation tab in the Design Studio.

Required request parameters:

  • apiKey: Your API key.
  • signature: MD5 hash signature.
  • action: Must be products.create.
  • sourceHash: The feed the products belong to.
  • products: The products themselves, as JSON.
  • feedName: The feed's name in the Automation tab.

You can now include custom information and custom fields when submitting products, allowing you to create more flexible and detailed product feeds, just as you can when using CSV files or spreadsheets.

Required Parameters

  • action: products.create
  • apiKey: Your API key.
  • signature: MD5 hash signature. For more details on creating a signature, refer to this page.
  • sourceHash: the unique hash used to identify the updated feed
  • feedName: the name listed in the feed list in automation page

Response

In case of successfully processing all the products the response will look like:

JSON
{
"Code":200,
"status":"",
"data": {
"message":"Products updated successfully",
"Errors":[]
}
}

In case of validation error the response will look like this:

JSON
{
"code": 400,
"status": "",
"data": {
"message": "Invalid or incomplete data sent!",
"errors": [
"Variable \"$products\" got invalid value \"\" at \"products[0].discount_price\"; Int cannot represent non-integer value: \"\""
]
}
}

In case of max number of products sent exceeded the response will look like:

JSON
{
"code": 51,
"status": "The maximum number of products exceeded"
}

In case of missing mandatory parameters the response will look like:

JSON
{
"code": 30
"status": "Missing mandatory parameter"
"Data": [
Feed name parameter is missing,
Products parameter is missing
Source hash parameter is missing
Products hashes parameter is missing
]
}

Data may contain just one or multiple of the messages but the message will be one of the upper ones.

For detailed instructions, visit the Flipsnack API Reference for products.create.

API Method: products.update

The products.update method allows external systems (such as a PIM or ERP) to send full or partial product data directly to Flipsnack. Send only the fields that changed. A full product is never required. After validation the updated products appear under the Automation tab in the Design Studio.

Required request parameters:

  • apiKey: Your API key.
  • signature: MD5 hash signature.
  • action: Must be products.update.
  • sourceHash: The feed the products belong to.
  • products: The products to change, as JSON, holding only the fields that changed, up to 500 products per request.

Optional: feedName.

This method also allows you to update any custom information or custom fields that are associated with your products.

Required Parameters

  • apiKey: Your API key.
  • signature: MD5 hash signature. For more details on creating a signature, refer to this page.
  • action: products.create
  • sourceHash: the unique hash used to identify the updated feed
  • feedName: the name listed in the feed list in automation page

Response

In case of successfully processing all the products the response will look like:

JSON
{
"Code":200,
"status":""
,
"data": {
"message":"Products updated successfully",
"Errors":[]
}
}

In case of validation error the response will look like this:

JSON
{
"code": 400,
"status": "",
"data": {
"message": "Invalid or incomplete data sent!",
"errors": [
"Variable \"$products\" got invalid value \"\" at \"products[0].discount_price\"; Int cannot represent non-integer value: \"\""
]
}
}

In case of max number of products sent exceeded the response will look like:

JSON
{
"code": 51,
"status": "The maximum number of products exceeded"
}

In case of missing mandatory parameters the response will look like:

JSON
{
"code": 30
"status": "Missing mandatory parameter"
"Data": [
Feed name parameter is missing,
Products parameter is missing
Source hash parameter is missing
Products hashes parameter is missing
]
}

Data may contain just one or multiple of the messages but the message will be one of the upper ones.

API Method: products.delete

The products.delete method allows external systems (such as a PIM or ERP) to remove products data directly from Flipsnack.

Required request parameters:

  • apiKey: Your API key.
  • signature: MD5 hash signature.
  • action: Must be products.delete.
  • sourceHash: The feed the products belong to.
  • productsSKU: An array of the SKUs to remove.

Removing every SKU in a feed removes the feed itself. The result is visible under the Automation tab in the Design Studio.

Note:
productsSKU takes several SKUs at once. If all the product codes are deleted, at once or one by one, all the data that was stored under that sourceHash will be deleted as well.

Variants can’t be deleted with this method. Using this method with codes from variants will not work.

Required Parameters

  • apiKey: Your API key.
  • signature: MD5 hash signature. For more details on creating a signature, refer to this page.
  • action: products.delete
  • sourceHash: the unique hash used to identify the updated feed

Response

In case of deleting the products successfully:

JSON
{
"Code":200,
"status":""
,
"data": {
"message":"Products deleted successfully",
"Errors":[]
}
}

In case there were no products deleted, the response will look like this:

JSON
{
"code": 400,
"status": "",
"data": {
"message": "No products to delete",
"errors": []
}
}

In case of missing mandatory parameters, the response will look like:

JSON
{
"code": 30
"status": "Missing mandatory parameter"
"Data": [
Source hash parameter is missing
Products hashes parameter is missing
]
}

Data may contain just one or multiple messages, but the message will be one of the ones aforementioned.

Additional tips / FAQs

  • Does the imported data fill in templates automatically?

No, product data is imported into your workspace but does not auto-populate flipbook templates. You’ll need to manually place the data using the Automation tab.

  • What should I do if the field content is too long for a layout box?

Use the “Hide overflow” option in Design Studio text boxes to ensure long content doesn’t break your layout.

  • Can I reuse my existing SKUs from other imports?

Yes, you can continue using the same SKU codes from previous CSV or Google Drive uploads when switching to API integration.

  • How are product groups organized?

Product data is grouped under a unique sourceHash identifier, which helps manage updates and deletions for related items.

Next steps

Need expert support?

Our team is here to help. Connect with our team experts or message us via the live chat for personalized assistance.