Skip to main content

Akeneo PIM

Akeneo PIM is a Product Information Management platform that centralizes, structures, enriches, and distributes product data across commerce channels — eCommerce sites, marketplaces, ERP systems, print catalogs, and retail systems. The Akeneo REST API exposes products, product models, families, attributes, categories, channels, catalogs, association types, and asset families, enabling integrations to read the full product catalog, programmatically create or update product records, and keep Akeneo in sync with upstream systems of record.

Akeneo PIM icon

Power end-to-end data operations for your Akeneo PIM API with Nexla. Our bi-directional Akeneo PIM connector is purpose-built for Akeneo PIM, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Akeneo PIM or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Akeneo PIM workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

Akeneo PIM uses OAuth 2.0 to authorize API access. The Akeneo connector in Nexla performs a 3-legged OAuth 2.0 flow against an Akeneo Connected App, which means a PIM administrator authorizes the connector to act on their behalf and Akeneo issues access and refresh tokens that Nexla manages automatically. Before creating a credential in Nexla, register the Akeneo Connected App and collect the Client ID, Client Secret, and the Base URL of the target Akeneo instance.

Determine Your Akeneo Base URL

Each Akeneo PIM instance is hosted at a specific base URL, and every API call — including the OAuth authorize and token endpoints — is rooted at that URL.

  1. Sign in to your Akeneo PIM instance and copy the host portion of the URL from the browser address bar (for example, https://my-company.cloud.akeneo.com). This is the value to use as the Base URL when creating the Nexla credential.

  2. Customers on Akeneo's public SaaS platform may also use https://api.akeneo.com as the base URL. Self-hosted, Flexibility, or PaaS deployments use the hostname assigned to that instance.

    The same Base URL is used for the OAuth authorization endpoint (/connect/apps/v1/authorize), the token endpoint (/connect/apps/v1/oauth2/token), and every REST API call. Confirm the value with your Akeneo administrator if you are unsure.

Register an Akeneo Connected App

Akeneo Connected Apps are the recommended way for third-party integrations to access the PIM. A Connected App registration produces the OAuth Client ID and Client Secret that Nexla uses to drive the 3-legged flow.

  1. Sign in to your Akeneo Partner Portal account at partners.akeneo.com and follow the Create an app guide to register a new App. Provide the requested details, including the App name, description, and the Redirect URL.

    • Redirect URL: Set this to the Nexla OAuth callback URL displayed in the Nexla credential overlay when you select the OAuth 2.0 authentication option. The Redirect URL registered with Akeneo must match exactly — including scheme, host, and path — or Akeneo will reject the authorization request.
  2. Configure the Scopes that the App will request. Akeneo defines fine-grained scopes per resource family (for example, read_products, write_products, read_categories, write_categories, read_channel_settings). Select the scopes that match the endpoints the credential will be used with. For a credential that will read and write the full product catalog, the typical set is read_catalog_structure, read_attribute_options, read_categories, read_channel_settings, read_association_types, read_products, write_products, read_product_models, write_product_models, and read_asset_families.

  3. Once the App is registered, Akeneo displays the Client ID and Client Secret on the App settings page. Copy and store both values securely — the Client Secret is shown in full only once at creation time.

    If your Client Secret is lost or exposed, regenerate it from the App settings page in the Akeneo Partner Portal. Regenerating the secret invalidates the previous value, so any existing integrations using the old secret must be updated.

Authorize the App on the Target PIM

Each Akeneo PIM that the credential connects to must explicitly install and authorize the Connected App. This is performed by an administrator of the target PIM.

  1. As a PIM administrator, sign in to the target Akeneo PIM and open the Connect menu, then select Apps.

  2. Locate the App in the Akeneo App Store catalog (or, for private Apps, use the activation URL provided by the App publisher) and click Activate.

  3. Review the requested scopes and authorizations, and confirm the installation. The App is now installed on this PIM, and any user with permission to manage Apps can complete the OAuth 2.0 consent flow against it.

For complete information about Akeneo Connected Apps, the activation process, and the OAuth 2.0 flow, see the Akeneo Apps authentication and authorization documentation.

Important

The Client Secret grants the ability to obtain access tokens for any PIM that has installed the Connected App. Store it in a secure secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the host URL of the target Akeneo PIM instance in the Base URL field (for example, https://my-company.cloud.akeneo.com). This value is used as the root for the OAuth authorization URL, the token URL, and every REST API call made by Nexla. The default value, https://api.akeneo.com, is appropriate for the Akeneo public SaaS instance.

  4. Enter the Client ID issued for your Akeneo Connected App in the Client ID field. The Client ID is shown on the App settings page in the Akeneo Partner Portal.

  5. Enter the Client Secret issued for your Akeneo Connected App in the Client Secret field. The Client Secret is shown in full only once at App creation time and can be regenerated from the App settings page if it is lost.

  6. Enter the space-separated list of OAuth scopes that the credential should request in the Access Scope field. The scopes must be a subset of those configured on the Connected App and should match the endpoints the credential will be used with — for example, read_products write_products read_catalog_structure read_categories read_channel_settings.

    Request only the scopes that are required for the integration. Narrow scopes reduce the impact if a credential is ever compromised, and they align with the principle of least privilege recommended by Akeneo.

  7. Click Authorize to launch the Akeneo PIM consent screen. Sign in to the target Akeneo PIM with an account that has permission to authorize Connected Apps, and approve the requested scopes. After the consent screen is approved, Akeneo redirects back to Nexla with an authorization code. Nexla automatically exchanges this code for an access token and a refresh token at the ${akeneo_api.base_url}/connect/apps/v1/oauth2/token endpoint, and stores the resulting tokens on the credential. Subsequent API calls reuse the access token, and Nexla automatically refreshes it before expiration using the refresh token.

  8. Click the Save button at the bottom of the overlay to save the configured credential. Nexla validates the credential by issuing a GET request to the Akeneo /api/rest/v1/channels endpoint — a successful response confirms that the Base URL, OAuth tokens, and granted scopes are all valid. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Akeneo PIM connector tile, then select the credential that will be used to connect to the Akeneo PIM instance, and click Next; or, create a new Akeneo PIM credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Akeneo PIM endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below—click on an endpoint to see more information about it and how to configure your data source for this endpoint.

Get a product

This endpoint retrieves a single product by its UUID. Use it to enrich an existing dataset of product UUIDs with the latest Akeneo product details, or to drive downstream lookups against the canonical product catalog.

  • Enter the product UUID in the Product UUID field. This field is required. Product UUIDs are returned by the Akeneo products list endpoints and are the recommended product identifier going forward.
  • The response is a single product object — the path to data is set to the response root, so the product is treated as the record.

Akeneo recommends UUID-based product endpoints over the legacy code-based endpoints because product identifiers can change but UUIDs are stable for the lifetime of the product. For full payload reference, see the Akeneo products UUID API documentation.

Get Product by Code

This endpoint retrieves a single product by its product code (the legacy product identifier). Use it when an upstream system stores Akeneo product codes rather than UUIDs.

  • Enter the product code in the Product Code field. This field is required. Product codes are the human-readable product identifiers used by the legacy products endpoint.
  • The response is a single product object — the path to data is set to the response root.

Akeneo is migrating product endpoints from code-based identifiers to UUID-based identifiers. When possible, use the Get a product endpoint with UUIDs instead.

List product models

This endpoint returns all product models in the PIM. Product models group product variants that share common attributes (for example, all colorways and sizes of a single t-shirt design). Use it to sync the product model catalog into a warehouse or downstream system.

  • No configuration is required for this endpoint beyond selecting it. All product models accessible to the credential are returned automatically.
  • The endpoint is paginated. Nexla advances the page query parameter automatically with a page size of 100 and stops when an empty page is returned.

Product models are the parent records for variant products in Akeneo. Pair this endpoint with a products source to assemble the full hierarchy of models and variants.

Get a product model

This endpoint retrieves a single product model by its code. Use it to enrich an existing dataset of product model codes with the full Akeneo record.

  • Enter the product model code in the Product Model Code field. This field is required. Product model codes can be obtained from the List product models endpoint.
  • The response is a single product model object — the path to data is set to the response root.

List Attributes

This endpoint returns all attributes defined in the Akeneo PIM — the fields that products and product models can carry, including their data type, scope (channel-aware), locale-awareness, and validation rules. Use it as a reference dataset for mapping product fields downstream.

  • No configuration is required for this endpoint beyond selecting it. All attributes defined in the PIM are returned automatically.
  • The endpoint is paginated. Nexla advances the page query parameter automatically with a page size of 100 and stops when an empty page is returned.

Attributes describe the structure of the Akeneo catalog. Combine this endpoint with the Get an Attribute Group endpoint to group attributes into the logical sections used in the PIM UI.

List Categories

This endpoint returns all product categories in the Akeneo catalog. Categories form the merchandising tree used to organize products for each channel. Use it to sync the category tree into a warehouse or downstream commerce system.

  • No configuration is required for this endpoint beyond selecting it. All categories accessible to the credential are returned automatically.
  • The endpoint is paginated. Nexla advances the page query parameter automatically with a page size of 100 and stops when an empty page is returned.

Get Category

This endpoint retrieves a single category by its code. Use it to fetch the full record for a specific category — including its parent, position, and labels.

  • Enter the category code in the Category Code field. This field is required. Category codes can be obtained from the List Categories endpoint.
  • The response is a single category object — the path to data is set to the response root.

List Channels

This endpoint returns all sales channels configured in the Akeneo PIM. Channels define the locales, currencies, and category trees that products are projected onto when published — for example, "ecommerce", "print", or "mobile". Use it as a reference dataset for channel-aware product exports.

  • No configuration is required for this endpoint beyond selecting it. All channels configured in the PIM are returned automatically.
  • The endpoint is paginated. Nexla advances the page query parameter automatically with a page size of 100 and stops when an empty page is returned.

Channel codes are required by other endpoints (and by the Akeneo product API itself) when filtering product values by channel scope.

Get Channel

This endpoint retrieves a single channel by its code. Use it to inspect the locales, currencies, and category tree configured for a specific channel.

  • Enter the channel code in the Channel Code field. This field is required. Channel codes can be obtained from the List Channels endpoint.
  • The response is a single channel object — the path to data is set to the response root.

Get Catalog

This endpoint retrieves the metadata for a single Akeneo App catalog by its catalog ID. Akeneo App catalogs scope the subset of products that a Connected App is allowed to read from the PIM.

  • Enter the catalog ID in the Catalog ID field. This field is required. Catalog IDs are returned when the catalog is created and are managed under the Connected App's settings.
  • The response is a single catalog object — the path to data is set to the response root.

Akeneo App catalogs are a separate concept from the merchandising category tree returned by the List Categories endpoint.

Get a Family

This endpoint retrieves a single family by its code. Families define the set of attributes that a product carries (for example, "tshirt", "shoe", "book"), the required attributes per channel, and the family variants used for product models.

  • Enter the family code in the Family Code field. This field is required. Family codes are managed under Settings > Families in the Akeneo PIM.
  • The response is a single family object — the path to data is set to the response root.

Get a Family Variant

This endpoint retrieves a single family variant by family code and variant code. Family variants define the variant axes (for example, color and size) that drive how products are grouped under a product model.

  • Enter the parent family code in the Family Code field. This field is required.
  • Enter the family variant code in the Variant Code field. This field is required.
  • The response is a single family variant object — the path to data is set to the response root.

Family variant codes are unique within a family but not globally — the family code is required to disambiguate them.

Get an Attribute Group

This endpoint retrieves a single attribute group by its code. Attribute groups organize attributes into the sections shown on the product edit page in the Akeneo PIM (for example, "Marketing", "Technical", "SEO").

  • Enter the attribute group code in the Attribute Group Code field. This field is required. Attribute group codes are managed under Settings > Attribute groups in the Akeneo PIM.
  • The response is a single attribute group object — the path to data is set to the response root.

Get an Association Type

This endpoint retrieves a single association type by its code. Association types define the relationships between products and product models — for example, "X-SELL", "UPSELL", or "SUBSTITUTION".

  • Enter the association type code in the Association Type Code field. This field is required. Association type codes are managed under Settings > Association types in the Akeneo PIM.
  • The response is a single association type object — the path to data is set to the response root.

List Asset Families

This endpoint returns all asset families configured in the Akeneo PIM. Asset families define the structure of rich media assets — images, videos, documents — that can be attached to products. Use it to sync the asset family catalog into a downstream DAM or commerce system.

  • No configuration is required for this endpoint beyond selecting it. All asset families accessible to the credential are returned automatically.
  • This endpoint uses Akeneo's HAL-style next-link pagination — Nexla advances through pages by following the $._links.next.href link in each response and stops when no next link is present.

Asset families are part of the Akeneo Asset Manager feature. The set of asset families available depends on the Akeneo edition and the scopes granted to the Connected App.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Akeneo PIM data sources can also be manually configured to ingest data from any valid Akeneo PIM API endpoint — for example, the products list endpoint with custom search filters, locale and channel scopes, or attribute filters — or to create more complex sources that chain calls to multiple endpoints, such as listing products and then fetching the family record for each. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

All Akeneo PIM API URLs use your instance Base URL followed by /api/rest/v1/ and the resource path (for example, https://my-company.cloud.akeneo.com/api/rest/v1/products-uuid). Akeneo enforces the OAuth scopes granted to the Connected App on every call, so 403 responses typically indicate a missing scope rather than a malformed URL.

Akeneo list endpoints (such as /products-uuid, /product-models, /categories, /channels) wrap result records in a HAL envelope under _embedded.items, so the path to data is $._embedded.items[*]; endpoints that return a single object use $ to treat the entire response body as a single record. To preserve Akeneo HAL pagination context (_links.next.href, _links.first.href) with each record, set the metadata path to $._links.

The Akeneo products endpoints support a search query parameter that can filter on updated timestamps, so date/time macros such as {now-1} with a Day time unit can be used to fetch only the products updated in the last 24 hours on each run. Akeneo's updated search operator expects timestamps in the ISO 8601 format YYYY-MM-DD HH:MM:SS, so the selected date format must match. The Authorization: Bearer header is added automatically based on your Akeneo PIM credential's OAuth access token, and Nexla refreshes the token before expiration.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Akeneo PIM data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Akeneo PIM destination, and select the Send to Destination option from the menu. Select the Akeneo PIM connector from the list of available destination connectors, then select the credential that will be used to connect to the Akeneo PIM instance, and click Next; or, create a new Akeneo PIM credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Akeneo PIM endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create a new product

This endpoint creates a new product in the Akeneo PIM using the UUID-based products API. Use it to programmatically introduce products into the catalog from an upstream system of record (such as an ERP or MDM).

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/products-uuid call. Each record must include the fields that Akeneo requires for a new product — typically uuid (a valid v4 UUID), family (the family code), and the values object containing channel-scoped, locale-aware attribute values.
  • Use the Nexla transform layer to shape upstream attributes into the structure that the Akeneo product payload expects. Each value in values is an array of objects with scope, locale, and data properties.

This endpoint creates a product with a new UUID. To create or update a product idempotently based on a known UUID, use the Update/create a product endpoint instead. For full payload reference, see the Akeneo products UUID API documentation.

Update/create a product

This endpoint upserts a product by UUID — updating the product if it exists, or creating it if it does not. Use it to synchronize product records from a system of record where the same UUID is sent on every run.

  • Enter the product UUID in the Product UUID field. The default value substitutes the upstream record's uuid attribute into the URL, so the destination can be driven directly by a record stream that already carries Akeneo UUIDs.
  • The body of each PATCH call is the upstream record (as JSON). Akeneo merges the payload with the existing product — attributes not present in the payload are left untouched, and array values are replaced wholesale.

Akeneo's PATCH semantics are partial-update at the top level only. Sending values for an attribute fully replaces the existing array for that attribute. To remove an attribute value, send an empty array.

Create Product

This endpoint creates a new product using the legacy code-based products API. Use it when upstream systems already track Akeneo product codes rather than UUIDs.

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/products call. Each record must include an identifier (the product code) and may include family, categories, enabled, and the values object.

Akeneo recommends migrating to the UUID-based products API. New integrations should use the Create a new product or Update/create a product endpoints unless code-based identifiers are required.

Upsert product

This endpoint upserts a product by code using the legacy code-based products API. The product is updated if a product with the matching code exists, or created if it does not.

  • Enter the product code in the Product Code field. The default value substitutes the upstream record's identifier (or code) attribute into the URL.
  • The body of each PATCH call is the upstream record (as JSON). Akeneo merges the payload with the existing product using the same PATCH semantics as the UUID-based upsert endpoint.

Create a new product model

This endpoint creates a new product model in the Akeneo PIM. Product models are the parent records for variant products and define the attributes shared across all variants.

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/product-models call. Each record must include a code (the unique product model code), a family_variant (the family variant code), and may include parent, categories, and the values object for shared attributes.

Product models cannot be created without a corresponding family variant. Use the Get a Family Variant source endpoint to confirm that the target family variant exists before activating this destination.

Update/create a product model

This endpoint upserts a product model by its code. The product model is updated if a model with the matching code exists, or created if it does not.

  • Enter the product model code in the Product Model Code field. The default value substitutes the upstream record's code attribute into the URL.
  • The body of each PATCH call is the upstream record (as JSON). Akeneo merges the payload with the existing product model using the same PATCH semantics as the products endpoints.

Create Category

This endpoint creates a new product category in the Akeneo PIM. Use it to bootstrap the category tree from an upstream merchandising system, or to add new categories programmatically as products require them.

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/categories call. Each record must include a code (the unique category code), and may include parent (the parent category code, omitted for root categories) and labels (a locale-keyed object of display labels).

Categories form a tree, so a category with a parent can only be created after the parent already exists. Order the upstream Nexset by tree depth, or run a transform that creates parents in a prior step.

Create Channel

This endpoint creates a new sales channel in the Akeneo PIM. Channels define the locales, currencies, and category tree that products are projected onto when published.

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/channels call. Each record must include a code, locales (an array of locale codes), currencies (an array of currency codes), category_tree (the root category code for this channel), and labels.

Channels reference locales, currencies, and a category tree that must already exist in the PIM. Confirm prerequisites with the List Channels and List Categories source endpoints before activating this destination.

Create Catalog

This endpoint creates a new Akeneo App catalog. App catalogs scope the subset of products that a Connected App is allowed to read from the PIM and are managed under the Connected App's settings.

  • The full upstream record is sent as the JSON body of the POST /api/rest/v1/catalogs call. Each record must include a name for the catalog and may include product selection criteria, value filters, and asset family filters.

Akeneo App catalogs are a separate concept from the merchandising category tree. They control which products a Connected App can read, not how products are merchandised in the storefront.

Manual configuration

Akeneo PIM destinations can also be manually configured to send data to any valid Akeneo PIM API endpoint, including configuring Nexla to automatically send the response received after each call to a new Nexla webhook data source — useful for capturing the per-record status that Akeneo returns from its batched product endpoints. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Akeneo write endpoints use POST (create new resource) or PATCH (update or upsert resource). Akeneo endpoints expect JSON for single-resource calls (application/json) and the line-delimited JSON variant application/vnd.akeneo.collection+json for bulk product and product model calls — the most common reason to add a custom request header is to override Content-Type for these bulk endpoints. All Akeneo PIM API URLs use your instance Base URL followed by /api/rest/v1/ and the resource path; for update/upsert operations, include the product UUID, product code, or other resource identifier at the end of the URL.

Akeneo's bulk product and product model endpoints accept up to 100 items per call, so record batching can significantly improve throughput when synchronizing large catalogs — the default batch size of 100 matches the Akeneo bulk-endpoint limit. These bulk endpoints return a per-line status payload identifying which records succeeded and which were rejected. The Authorization: Bearer header is added automatically based on your Akeneo PIM credential's OAuth access token.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To begin sending data to Akeneo PIM, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Akeneo PIM until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.