Feed Studio by WEBPROGRESS
BG

Feed Studio API, version 1

Connect any store or system. Send products as JSON and Feed Studio makes the collages and keeps the Meta and Google Shopping feeds up to date. Free for all accounts.

Authentication

Create a key in your account (Connect, Open API) and send it with every request:

Authorization: Bearer fs_YOUR_API_KEY

Base URL: https://webprogress.bg/studio/api/v1. Format: JSON, UTF-8. Limit: 120 requests per minute, up to 1000 products per request.

Send products

POST /products. Mode "replace" replaces all products (use for the first batch of a full sync), "upsert" adds and updates.

curl -X POST https://webprogress.bg/studio/api/v1/products \
  -H "Authorization: Bearer fs_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "mode": "upsert",
  "sync": true,
  "products": [{
    "id": "SKU-1001",
    "title": "Stride Run 3",
    "description": "...",
    "link": "https://shop.bg/stride-run-3",
    "image_link": "https://shop.bg/img/1001-1.jpg",
    "additional_image_link": ["https://shop.bg/img/1001-2.jpg", "https://shop.bg/img/1001-3.jpg"],
    "price": 129.90,
    "sale_price": 89.90,
    "currency": "EUR",
    "brand": "STRIDE",
    "brand_logo": "https://shop.bg/brands/stride.png",
    "availability": "in stock"
  }]
}'

Response: {"accepted":1,"rejected":0,"errors":[],"mode":"upsert"}

FieldDescription
id*unique ID; must match the ID in your Meta catalog
title*product name
image_link*main image (http/https)
price*regular price: number or "129.90 EUR"
sale_pricesale price; if lower than price we show the struck-out old price and discount
currencycurrency, default EUR
brandbrand
brand_logolink to the brand logo (transparent PNG is best)
additional_image_linkarray of up to 10 images
description, link, availability, condition, gtin, mpn, item_group_id, product_type, google_product_category, custom_label_0..4, color, size, gender, age_group, materialpassed unchanged to the feeds

Other endpoints

GET /statusstatus, product and collage counts, feed links
GET /products?limit=100&offset=0products sent so far
DELETE /products {"ids":["SKU-1001"]}deletes products
POST /brands {"brands":[{"name":"STRIDE","logo_url":"https://..."}]}brand logos separately from products
POST /syncstarts rendering now (otherwise within 5 minutes after sending)

Errors look like {"error":{"code":"unauthorized","message":"..."}} with HTTP status 400, 401, 404, 413, 422 or 429.

Full sync

Send the first batch with "mode":"replace", the rest with "upsert", and add "sync":true to the last one. Collages are only rendered for changed products, so you can send the whole catalog daily.

Prefer a feed? Use a link to an XML or CSV in Google format with an extra column brand_logo.

Don't want to do it yourself? Order an integration from us.