Create a vendor, or update / skip the one with the same externalId

A vendor belongs to the tenant (no sales channel); its identity is externalId. Without one a POST always creates. onDuplicate (default 'update') decides: 201 created, 200 updated, unchanged or skipped, 409 duplicate. contacts replace the whole set on an update. No event is emitted. Unknown fields are refused (400).

Scope: products:write, channel:write or admin.

Idempotency: send Idempotency-Key; a retry with the same key replays the first answer.

Rate limit: write class, 1,200 requests per minute per tenant by default (read class 6,000). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a refusal is 429 rate_limited with Retry-After.

Body Params
string
length between 1 and 100

The integration's own id for the vendor, unique within the tenant.

string
required
length between 1 and 255
enum

general, drop-ship, supplier, packaging or manufacturer. Default 'general' on create.

boolean

Default true on create.

string
length ≤ 2000
address
object
publicInfo
object
object | null
contacts
array of objects
length ≤ 50

On an update, replaces the whole set; [] clears it.

contacts
enum

What a POST does when the document already exists. Default 'update' (D7).

Headers
string
length between 7 and 50

Any string of 7 to 50 characters that identifies this request (an order number, a webhook id). A retry with the same key and the same body answers the first result with Idempotent-Replayed: true; the same key with a different body is 422 idempotency_key_reused; a concurrent request with the same key is 409 in_progress with Retry-After. Recommended on every write.

Responses

Language
Credentials
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json