"Akeneo PIM REST API skill. Use when working with Akeneo PIM REST for api. Covers 137 endpoints."
Resources
1Install
npx skillscat add lap-platform/claude-marketplace/akeneo-pim-rest-api Install via the SkillsCat registry.
SKILL.md
Akeneo PIM REST API
API version: 1.0.0
Auth
ApiKey Authorization in header
Base URL
Setup
- Set your API key in the appropriate header
- GET /api/rest/v1/products-uuid -- verify access
- POST /api/rest/v1/products-uuid -- create first products-uuid
Endpoints
137 endpoints across 1 groups. See references/api-spec.lap for full details.
api
| Method | Path | Description |
|---|---|---|
| GET | /api/rest/v1/products-uuid | Get list of products |
| POST | /api/rest/v1/products-uuid | Create a new product |
| PATCH | /api/rest/v1/products-uuid | Update/create several products |
| POST | /api/rest/v1/products-uuid/search | Search list of products |
| GET | /api/rest/v1/products-uuid/{uuid} | Get a product |
| PATCH | /api/rest/v1/products-uuid/{uuid} | Update/create a product |
| DELETE | /api/rest/v1/products-uuid/{uuid} | Delete a product |
| POST | /api/rest/v1/products-uuid/{uuid}/proposal | Submit a draft for approval |
| GET | /api/rest/v1/products-uuid/{uuid}/draft | Get a draft |
| GET | /api/rest/v1/products | Get list of products |
| POST | /api/rest/v1/products | Create a new product |
| PATCH | /api/rest/v1/products | Update/create several products |
| GET | /api/rest/v1/products/{code} | Get a product |
| PATCH | /api/rest/v1/products/{code} | Update/create a product |
| DELETE | /api/rest/v1/products/{code} | Delete a product |
| POST | /api/rest/v1/products/{code}/proposal | Submit a draft for approval |
| GET | /api/rest/v1/products/{code}/draft | Get a draft |
| GET | /api/rest/v1/product-models | Get list of product models |
| POST | /api/rest/v1/product-models | Create a new product model |
| PATCH | /api/rest/v1/product-models | Update/create several product models |
| GET | /api/rest/v1/product-models/{code} | Get a product model |
| PATCH | /api/rest/v1/product-models/{code} | Update/create a product model |
| DELETE | /api/rest/v1/product-models/{code} | Delete a product model |
| POST | /api/rest/v1/product-models/{code}/proposal | Submit a draft for approval |
| GET | /api/rest/v1/product-models/{code}/draft | Get a draft |
| GET | /api/rest/v1/published-products | Get list of published products |
| GET | /api/rest/v1/published-products/{code} | Get a published product |
| GET | /api/rest/v1/media-files | Get a list of product media files |
| POST | /api/rest/v1/media-files | Create a new product media file |
| GET | /api/rest/v1/media-files/{code} | Get a product media file |
| GET | /api/rest/v1/media-files/{code}/download | Download a product media file |
| POST | /api/rest/v1/jobs/export/{code} | Launch export job by code |
| POST | /api/rest/v1/jobs/import/{code} | Launch import job by code |
| GET | /api/rest/v1/families | Get list of families |
| POST | /api/rest/v1/families | Create a new family |
| PATCH | /api/rest/v1/families | Update/create several families |
| GET | /api/rest/v1/families/{code} | Get a family |
| PATCH | /api/rest/v1/families/{code} | Update/create a family |
| DELETE | /api/rest/v1/families/{code} | Delete a family |
| GET | /api/rest/v1/families/{family_code}/variants | Get list of family variants |
| POST | /api/rest/v1/families/{family_code}/variants | Create a new family variant |
| PATCH | /api/rest/v1/families/{family_code}/variants | Update/create several family variants |
| GET | /api/rest/v1/families/{family_code}/variants/{code} | Get a family variant |
| PATCH | /api/rest/v1/families/{family_code}/variants/{code} | Update/create a family variant |
| GET | /api/rest/v1/attributes | Get list of attributes |
| POST | /api/rest/v1/attributes | Create a new attribute |
| PATCH | /api/rest/v1/attributes | Update/create several attributes |
| GET | /api/rest/v1/attributes/{code} | Get an attribute |
| PATCH | /api/rest/v1/attributes/{code} | Update/create an attribute |
| GET | /api/rest/v1/attributes/{attribute_code}/options | Get list of attribute options |
| POST | /api/rest/v1/attributes/{attribute_code}/options | Create a new attribute option |
| PATCH | /api/rest/v1/attributes/{attribute_code}/options | Update/create several attribute options |
| GET | /api/rest/v1/attributes/{attribute_code}/options/{code} | Get an attribute option |
| PATCH | /api/rest/v1/attributes/{attribute_code}/options/{code} | Update/create an attribute option |
| GET | /api/rest/v1/attribute-groups | Get list of attribute groups |
| POST | /api/rest/v1/attribute-groups | Create a new attribute group |
| PATCH | /api/rest/v1/attribute-groups | Update/create several attribute groups |
| GET | /api/rest/v1/attribute-groups/{code} | Get an attribute group |
| PATCH | /api/rest/v1/attribute-groups/{code} | Update/create an attribute group |
| GET | /api/rest/v1/association-types | Get a list of association types |
| POST | /api/rest/v1/association-types | Create a new association type |
| PATCH | /api/rest/v1/association-types | Update/create several association types |
| GET | /api/rest/v1/association-types/{code} | Get an association type |
| PATCH | /api/rest/v1/association-types/{code} | Update/create an association type |
| GET | /api/rest/v1/channels | Get a list of channels |
| POST | /api/rest/v1/channels | Create a new channel |
| PATCH | /api/rest/v1/channels | Update/create several channels |
| GET | /api/rest/v1/channels/{code} | Get a channel |
| PATCH | /api/rest/v1/channels/{code} | Update/create a channel |
| GET | /api/rest/v1/locales | Get a list of locales |
| GET | /api/rest/v1/locales/{code} | Get a locale |
| GET | /api/rest/v1/categories | Get list of categories |
| POST | /api/rest/v1/categories | Create a new category |
| PATCH | /api/rest/v1/categories | Update/create several categories |
| GET | /api/rest/v1/categories/{code} | Get a category |
| PATCH | /api/rest/v1/categories/{code} | Update/create a category |
| POST | /api/rest/v1/category-media-files | Create a category media file |
| GET | /api/rest/v1/category-media-files/{file_path}/download | Download a category media file |
| GET | /api/rest/v1/currencies | Get a list of currencies |
| GET | /api/rest/v1/currencies/{code} | Get a currency |
| GET | /api/rest/v1/measure-families | Get list of measure families (deprecated as of v5.0) |
| GET | /api/rest/v1/measure-families/{code} | Get a measure family (deprecated as of v5.0) |
| GET | /api/rest/v1/measurement-families | Get list of measurement families |
| PATCH | /api/rest/v1/measurement-families | Update/create several measurement families |
| GET | /api/rest/v1/reference-entities | Get list of reference entities |
| GET | /api/rest/v1/reference-entities/{code} | Get a reference entity |
| PATCH | /api/rest/v1/reference-entities/{code} | Update/create a reference entity |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/attributes | Get the list of attributes of a given reference entity |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{code} | Get an attribute of a given reference entity |
| PATCH | /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{code} | Update/create an attribute of a given reference entity |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options | Get a list of attribute options of a given attribute for a given reference entity |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options/{code} | Get an attribute option for a given attribute of a given reference entity |
| PATCH | /api/rest/v1/reference-entities/{reference_entity_code}/attributes/{attribute_code}/options/{code} | Update/create a reference entity attribute option |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/records | Get the list of the records of a reference entity |
| PATCH | /api/rest/v1/reference-entities/{reference_entity_code}/records | Update/create several reference entity records |
| GET | /api/rest/v1/reference-entities/{reference_entity_code}/records/{code} | Get a record of a given reference entity |
| PATCH | /api/rest/v1/reference-entities/{reference_entity_code}/records/{code} | Update/create a record of a given reference entity |
| POST | /api/rest/v1/reference-entities-media-files | Create a new media file for a reference entity or a record |
| GET | /api/rest/v1/reference-entities-media-files/{code} | Download the media file associated to a reference entity or a record |
| GET | /api/rest/v1/asset-families | Get list of asset families |
| GET | /api/rest/v1/asset-families/{code} | Get an asset family |
| PATCH | /api/rest/v1/asset-families/{code} | Update/create an asset family |
| GET | /api/rest/v1/asset-families/{asset_family_code}/attributes | Get the list of attributes of a given asset family |
| GET | /api/rest/v1/asset-families/{asset_family_code}/attributes/{code} | Get an attribute of a given asset family |
| PATCH | /api/rest/v1/asset-families/{asset_family_code}/attributes/{code} | Update/create an attribute of a given asset family |
| GET | /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options | Get a list of attribute options of a given attribute for a given asset family |
| GET | /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options/{code} | Get an attribute option for a given attribute of a given asset family |
| PATCH | /api/rest/v1/asset-families/{asset_family_code}/attributes/{attribute_code}/options/{code} | Update/create an asset attribute option for a given asset family |
| POST | /api/rest/v1/asset-media-files | Create a new media file for an asset |
| GET | /api/rest/v1/asset-media-files/{code} | Download the media file associated to an asset |
| GET | /api/rest/v1/asset-families/{asset_family_code}/assets | Get the list of the assets of a given asset family |
| PATCH | /api/rest/v1/asset-families/{asset_family_code}/assets | Update/create several assets |
| GET | /api/rest/v1/asset-families/{asset_family_code}/assets/{code} | Get an asset of a given asset family |
| PATCH | /api/rest/v1/asset-families/{asset_family_code}/assets/{code} | Update/create an asset |
| DELETE | /api/rest/v1/asset-families/{asset_family_code}/assets/{code} | Delete an asset |
| GET | /api/rest/v1/assets | Get list of PAM assets |
| POST | /api/rest/v1/assets | Create a new PAM asset |
| PATCH | /api/rest/v1/assets | Update/create several PAM assets |
| GET | /api/rest/v1/assets/{code} | Get a PAM asset |
| PATCH | /api/rest/v1/assets/{code} | Update/create a PAM asset |
| GET | /api/rest/v1/assets/{asset_code}/reference-files/{locale_code} | Get a reference file |
| POST | /api/rest/v1/assets/{asset_code}/reference-files/{locale_code} | Upload a new reference file |
| GET | /api/rest/v1/assets/{asset_code}/reference-files/{locale_code}/download | Download a reference file |
| GET | /api/rest/v1/assets/{asset_code}/variation-files/{channel_code}/{locale_code} | Get a variation file |
| POST | /api/rest/v1/assets/{asset_code}/variation-files/{channel_code}/{locale_code} | Upload a new variation file |
| GET | /api/rest/v1/assets/{asset_code}/variation-files/{channel_code}/{locale_code}/download | Download a variation file |
| GET | /api/rest/v1/asset-categories | Get list of PAM asset categories |
| POST | /api/rest/v1/asset-categories | Create a new PAM asset category |
| PATCH | /api/rest/v1/asset-categories | Update/create several PAM asset categories |
| GET | /api/rest/v1/asset-categories/{code} | Get a PAM asset category |
| PATCH | /api/rest/v1/asset-categories/{code} | Update/create a PAM asset category |
| GET | /api/rest/v1/asset-tags | Get list of PAM asset tags |
| GET | /api/rest/v1/asset-tags/{code} | Get a PAM asset tag |
| PATCH | /api/rest/v1/asset-tags/{code} | Update/create a PAM asset tag |
| GET | /api/rest/v1 | Get list of all endpoints |
| POST | /api/oauth/v1/token | Get authentication token |
| GET | /api/rest/v1/system-information | Get system information |
Enhanced Skill Content
Question Mapping
- "How do I list all products in the catalog?" -> GET /api/rest/v1/products
- "How do I find a product by its UUID?" -> GET /api/rest/v1/products-uuid/{uuid}
- "How do I create a new product?" -> POST /api/rest/v1/products
- "How do I update multiple products at once?" -> PATCH /api/rest/v1/products
- "How do I search products with filters?" -> POST /api/rest/v1/products-uuid/search
- "What families are defined in the PIM?" -> GET /api/rest/v1/families
- "How do I get the attribute options for a select attribute?" -> GET /api/rest/v1/attributes/{attribute_code}/options
- "How do I upload a media file for a product?" -> POST /api/rest/v1/media-files
- "How do I download an asset image?" -> GET /api/rest/v1/asset-media-files/{code}
- "How do I trigger a product export job?" -> POST /api/rest/v1/jobs/export/{code}
- "How do I import a CSV file into the PIM?" -> POST /api/rest/v1/jobs/import/{code}
- "How do I authenticate and get an access token?" -> POST /api/oauth/v1/token
- "How do I submit a product draft for approval?" -> POST /api/rest/v1/products/{code}/proposal
- "What reference entities exist and how do I browse their records?" -> GET /api/rest/v1/reference-entities then GET /api/rest/v1/reference-entities/{reference_entity_code}/records
- "How do I check which version of Akeneo PIM is running?" -> GET /api/rest/v1/system-information
Response Tips
- Products & Product Models: Paginated lists; use
pagination_type=search_afterfor large catalogs (avoids offset limits). Quality scores and completenesses are optional nested objects -- request them explicitly via query params. - Families & Attributes: Standard page-based pagination (
page,limit,with_count). Family variants are nested under/families/{code}/variants. - Reference Entities & Assets (new system): Use cursor-based pagination only (
search_after). Nopageparam. Records and assets are scoped under their parent entity/family. - Assets (legacy): Support both
pageandsearch_afterpagination. Reference files and variation files are locale- and channel-specific sub-resources. - Media Files:
POSTreturnsLocationheader with the new media code -- there is no code in the response body. Download endpoints return raw binary. - Batch PATCH (collections): Returns a streaming JSON response with per-line status for each item -- parse line by line, not as a single JSON object.
- OAuth Token: Returns
access_tokenandrefresh_token. Token format and expiry are in the response body. 422 typically means malformed grant type. - Error responses: 401 = expired/missing token, 403 = insufficient permissions, 406 = missing
Accept: application/jsonheader, 422 = validation failure with field-level details, 415 = wrongContent-Type.
Anomaly Flags
- 429 on attribute options: The attribute options PATCH endpoints (both collection and single) can return 429. Surface rate-limit headers proactively and suggest backing off before retrying batch option updates.
- 201 vs 204 ambiguity: Single-resource PATCH endpoints return 201 (created) or 204 (updated). Flag when a PATCH unexpectedly creates a new resource -- the caller may have misspelled a code.
- 413 on batch operations: Collection-level PATCH endpoints return 413 when the payload is too large. Surface this early if the request body exceeds ~100 items and recommend splitting into smaller batches.
- 406 errors on every GET: Almost all GET endpoints error on 406, meaning the
Acceptheader is wrong or missing. If a user gets repeated 406s, proactively suggest addingAccept: application/json. - 422 with field details: Validation errors include per-field messages. Surface the specific failing fields rather than just the status code.
- Legacy vs new asset system: The API has both
/assets(legacy PAM) and/asset-families/{code}/assets(new Asset Manager). Flag if a user is mixing calls between the two systems, as they are incompatible. - Missing auth on write operations: All POST/PATCH/DELETE require auth. If a 401 appears on a write, remind the user to obtain a fresh token via
/api/oauth/v1/token.
Playbook
1. Initial Setup and Authentication
- Call
POST /api/oauth/v1/tokenwith your client credentials (Base64-encodedclient_id:secretin theAuthorizationheader, grant type in the body). - Extract
access_tokenfrom the response. - Use
Authorization: Bearer {access_token}on all subsequent requests. - Verify connectivity by calling
GET /api/rest/v1(API root) orGET /api/rest/v1/system-information.
2. Bulk Product Export and Sync
- Call
GET /api/rest/v1/productswithpagination_type=search_afterandlimit=100. - For each page, extract the
search_aftercursor from_links.next. - Repeat until no
nextlink is present. - Optionally include
with_quality_scores=trueandwith_completenesses=trueto get enrichment status per product. - For large catalogs (>50k products), prefer UUID-based endpoints (
/products-uuid) for stable identifiers.
3. Creating a Product with Media
- Upload the image via
POST /api/rest/v1/media-fileswithContent-Type: multipart/form-data. Capture the media code from theLocationresponse header. - Create the product via
POST /api/rest/v1/productswith the media code assigned to the relevant image attribute in the body. - Verify by calling
GET /api/rest/v1/products/{code}and confirming the attribute value contains the media code.
4. Setting Up a Product Family with Variants
- Create the family via
POST /api/rest/v1/familieswith the attribute set and attribute requirements. - Add a family variant via
POST /api/rest/v1/families/{family_code}/variantsdefining the variant axes (e.g., size, color). - Create a product model via
POST /api/rest/v1/product-modelsreferencing the family and variant level. - Create variant products via
POST /api/rest/v1/productswith aparentfield pointing to the product model code. - Verify the hierarchy by fetching
GET /api/rest/v1/product-models/{code}and checking its associations.
5. Managing Reference Entity Records
- List available reference entities via
GET /api/rest/v1/reference-entities(cursor-paginated). - Inspect the entity structure via
GET /api/rest/v1/reference-entities/{code}to understand its attributes. - List attribute definitions via
GET /api/rest/v1/reference-entities/{code}/attributes. - Upsert records in bulk via
PATCH /api/rest/v1/reference-entities/{code}/recordswith an array of record objects. Parse the streaming response line by line for per-record status. - Verify individual records via
GET /api/rest/v1/reference-entities/{code}/records/{record_code}.
Response Tips
- Check response schemas in references/api-spec.lap for field details
- List endpoints may support pagination; check for limit, offset, or cursor params
- Create/update endpoints typically return the created/updated object
References
- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas
Generated from the official API spec by LAP