---
title: "Send up to 100 of a connected shop's products"
method: POST
path: "/external-products/batch"
tags: ["Connection"]
---

# Send up to 100 of a connected shop's products

`POST /external-products/batch`

## Request

- Base URL: `https://sitesplaced.com/api/v1`
- URL: `https://sitesplaced.com/api/v1/external-products/batch`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Connection key only. Permission `products:write`. These products are kept apart from the store's own products and can never be sold on a SitesPlaced storefront.

## Request body

- ExternalProductBatchRequest
  - `products` ExternalProductInput[], required
    - `external_id` string, required
    - `name` string, required
    - `sku` string
    - `price` number
    - `currency` string
    - `image_url` string, uri
    - `images` string[]
    - `url` string, uri
    - `category` string
    - `description` string
    - `stock` number
    - `status` string
    - `updated_at` string, date-time: ISO 8601, in UTC.

## Response `200`

One result per product.

- ExternalProductBatchResult
  - `results` object[], required
    - `external_id` string, nullable, required
    - `ok` boolean, required
    - `error` string

## Other responses

- `400`: `invalid_request`. The request is malformed or a field has a bad value; `param` names the field.
- `401`: `unauthorized`. The key is missing, wrong or revoked.
- `403`: `forbidden`. The key may not do this: a secret key sent from a browser, a publishable key from a website not on its list, the wrong kind of key, or a missing permission.
- `413`: `payload_too_large`. Bodies can be up to 1 MB.
- `429`: `rate_limited`. Wait for `Retry-After` seconds.
- `500`: `internal_error`.
- `503`: `unavailable`.

---

[API](https://skmtc.dev/sitesplaced/apis/sitesplaced-developer-api.md) · [All operations](https://skmtc.dev/sitesplaced/apis/sitesplaced-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sitesplaced/apis/sitesplaced-developer-api/revisions/66fbfbbaad1a?raw)
