Catalyte
REST API·intermediate·4 min

Bulk import

Send up to 1,000 products in one call. Atomic on plan caps.


For loading a catalog or running a nightly sync, the bulk endpoint accepts up to 1,000 products per request and is upsert by SKU.

Request

POST /api/public/v1/products/bulk
Content-Type: application/json

{
  "products": [
    { "sku": "TEE-BLACK-S", "title": "Tee S", "price_amount": 48.00, "price_currency": "USD" },
    { "sku": "TEE-BLACK-M", "title": "Tee M", "price_amount": 48.00, "price_currency": "USD" }
  ]
}

Response

{
  "created": 1,
  "updated": 1,
  "skipped": [],
  "products": [{ "id": "prd_...", "sku": "TEE-BLACK-S" }, ...]
}

Atomic on plan caps

If the request would push you past your plan's product cap, nothing is written and you get 402 plan_limit. Either upgrade or split the call.

Validation

  • Each product is validated independently. Bad rows return in skipped with a reason.
  • The whole call still succeeds; check the response.

Throughput

Workspaces are limited to 60 bulk calls per minute. Each call commits in a single transaction, so a 1,000-row import typically completes in 200–400 ms.