openapi: 3.0.3 info: title: Fyndiq Merchant Articles API version: v1 description: The Fyndiq Merchant API enables merchants to upload and manage products (articles) and to retrieve and fulfil orders on the Fyndiq marketplace, Sweden's largest marketplace for bargains. The API is REST-oriented, uses JSON request and response bodies, and is protected with HTTP Basic Authentication (Base64-encoded `merchantID:token`). A self-contained sandbox environment mirrors production for integration testing. contact: name: Fyndiq Merchant Help Center url: https://support.fyndiq.se/hc/ x-provenance: generated: '2026-07-19' method: derived source: https://merchantapi.fyndiq.com (public Postman collection 2328684/7185ENK) note: Faithfully reconstructed from Fyndiq's published Merchant API Postman documentation. Schemas reflect the documented request/response examples; Fyndiq does not publish an OpenAPI document. servers: - url: https://merchants-api.fyndiq.se/api/v1 description: Production - url: https://merchants-api.sandbox.fyndiq.se/api/v1 description: Sandbox (credentials provided on request) security: - basicAuth: [] tags: - name: Articles description: Create, update, retrieve and delete product articles. paths: /articles: post: operationId: createArticle tags: - Articles summary: Create an article description: Create a single article on the Fyndiq platform. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Article' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/CreatedResponse' '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Authorization credentials were incorrect content: application/json: schema: $ref: '#/components/schemas/Error' '409': description: SKU already exists, cannot create article content: application/json: schema: $ref: '#/components/schemas/Error' get: operationId: listArticles tags: - Articles summary: List articles description: Retrieve the product data on your Fyndiq account. Responses are paginated; use the pagination query parameters to page through results (up to 1000 per page). parameters: - name: limit in: query required: false schema: type: integer maximum: 1000 description: Maximum number of articles to return per page. - name: offset in: query required: false schema: type: integer description: Offset into the result set for pagination. responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Article' /articles/bulk: post: operationId: bulkCreateArticles tags: - Articles summary: Bulk create articles description: Create a batch of articles in one call. Up to 100 create requests per call. requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/Article' responses: '202': description: Accepted content: application/json: schema: $ref: '#/components/schemas/BulkResponse' '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' put: operationId: bulkUpdateArticles tags: - Articles summary: Bulk update articles description: Update a batch of articles in one call. Up to 200 update requests per call. requestBody: required: true content: application/json: schema: type: array items: type: object responses: '202': description: Accepted content: application/json: schema: $ref: '#/components/schemas/BulkResponse' '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' /articles/{article_id}: parameters: - name: article_id in: path required: true schema: type: string description: Fyndiq unique ID for the article. get: operationId: retrieveArticle tags: - Articles summary: Retrieve an article responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Article' '403': description: You do not have permission to access this object content: application/json: schema: $ref: '#/components/schemas/Error' put: operationId: updateArticle tags: - Articles summary: Update an article description: Update one or several fields of an article. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Article' responses: '204': description: Successful update '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/Error' delete: operationId: deleteArticle tags: - Articles summary: Delete an article description: Set the article status to deleted; it will no longer be visible on Fyndiq. responses: '204': description: Successful deletion /articles/{article_id}/price: parameters: - name: article_id in: path required: true schema: type: string put: operationId: updateArticlePrice tags: - Articles summary: Update an article price requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PriceList' responses: '204': description: Successful update '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/Error' /articles/{article_id}/quantity: parameters: - name: article_id in: path required: true schema: type: string put: operationId: updateArticleQuantity tags: - Articles summary: Update an article quantity requestBody: required: true content: application/json: schema: type: object properties: quantity: type: integer responses: '204': description: Successful update '400': description: Invalid payload content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Permission denied content: application/json: schema: $ref: '#/components/schemas/Error' /articles/sku/{sku}: parameters: - name: sku in: path required: true schema: type: string description: SKU for the article. get: operationId: retrieveArticleBySku tags: - Articles summary: Retrieve an article by SKU responses: '200': description: Article found content: application/json: schema: type: object properties: description: type: string content: type: object properties: article: $ref: '#/components/schemas/Article' '404': description: Article not found content: application/json: schema: $ref: '#/components/schemas/Error' /categories/{market}/{language}: parameters: - name: market in: path required: true schema: type: string description: Market code (e.g. SE). - name: language in: path required: true schema: type: string description: Language code (e.g. sv, en). get: operationId: listCategories tags: - Articles summary: List categories description: Retrieve the Fyndiq category tree for the given market and language. responses: '200': description: OK content: application/json: schema: type: array items: type: object components: schemas: BulkResponse: type: object properties: description: type: string example: Accepted responses: type: array items: type: object CreatedResponse: type: object properties: id: type: string description: type: string example: Article was created. Property: type: object properties: name: type: string value: type: string Article: type: object properties: id: type: string product_id: type: string sku: type: string parent_sku: type: string title: type: array items: $ref: '#/components/schemas/LocalizedText' description: type: array items: $ref: '#/components/schemas/LocalizedText' quantity: type: integer status: type: string example: for sale fyndiq_status: type: string example: new fyndiq_reasons: type: array items: type: string categories: type: array items: type: string properties: type: array items: $ref: '#/components/schemas/Property' brand: type: string gtin: type: string main_image: type: string format: uri images: type: array items: type: string format: uri markets: type: array items: type: string merchant_id: type: string price: $ref: '#/components/schemas/PriceList' original_price: $ref: '#/components/schemas/PriceList' shipping_time: type: array items: $ref: '#/components/schemas/ShippingTime' ShippingTime: type: object properties: market: type: string example: SE min: type: integer max: type: integer MarketPrice: type: object properties: market: type: string example: SE value: $ref: '#/components/schemas/Money' PriceList: type: array items: $ref: '#/components/schemas/MarketPrice' LocalizedText: type: object properties: language: type: string example: en-US value: type: string Money: type: object properties: amount: type: string example: '50.00' currency: type: string example: SEK Error: type: object description: Standard Fyndiq error envelope. `errors` carries field-level detail. properties: description: type: string errors: type: object securitySchemes: basicAuth: type: http scheme: basic description: Base64-encoded `merchantID:token`.