The PIM API lets your system (ERP, store, warehouse) read and write product data.

**Full, live documentation** — with your company's property dictionary, limits and examples — is in PIM: **Help** in the sidebar (`https://data.ecomcart.store/api-doc`).

## Basics

- **Base URL:** `https://data.ecomcart.store/api/v1`
- **Authentication:** header `Authorization: Bearer <key>` (or `X-Api-Key: <key>`)
- **Format:** JSON

Create the key under **Settings → API keys** with the *PIM API* service — see [API keys](/hc/pim/articles/en-api-keys).

```bash
curl -H "Authorization: Bearer $PIM_KEY" \
     https://data.ecomcart.store/api/v1/meta
```

## Main endpoints

| Endpoint | What it does |
|---|---|
| `/products` | List, create, change products; also `/resolve`, `/locks`, `/media` |
| `/suppliers/{code}/products` | Submitting supplier offers |
| `/jobs/{id}` | Background job status |
| `/categories`, `/manufacturers`, `/suppliers` | Reference data |
| `/attributes`, `/attribute-families`, `/attribute-groups`, `/options` | The property dictionary |
| `/media/{id}/file` | Downloading an image or file |
| `/meta` | Your account's limits and settings (machine-readable) |
| `/events` | Log of all events (a reliable alternative to webhooks) |

## Limits

Limits are **per company** (not per key) and depend on your plan:

- requests per minute — headers `X-RateLimit-Limit` / `X-RateLimit-Remaining`;
- items per minute on batch endpoints — `X-RateLimit-Items-Limit` / `X-RateLimit-Items-Remaining`;
- a separate limit for `?sync=1` requests.

When you exceed a limit the response is **429** with a `Retry-After` header — wait that many seconds.

## Common errors

| Code | Meaning |
|---|---|
| **401** | No key, or the key isn't valid |
| **403** | The key lacks the needed permission (`key_scope`) or the company is suspended |
| **404** | Object not found (or not in your assortment) |
| **422** | Invalid data — see `errors` in the response |
| **429** | Limit exceeded — see `Retry-After` |

## Events

Follow changes with [webhooks](/hc/pim/articles/en-webhooks) or by reading `/events` periodically.
