Skip to content

Create a supplier

POST
/suppliers
curl --request POST \
--url https://api.oletapp.com/your-store/v1/suppliers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "billing_address_1": "example", "billing_address_2": "example", "billing_city": "example", "billing_country": "example", "billing_email": "hello@example.com", "billing_fax": "example", "billing_first_name": "example", "billing_last_name": "example", "billing_phone": "example", "billing_state": "example", "billing_zipcode": "example", "default_markup": 1, "description": "example", "name": "example", "shipping_address_1": "example", "shipping_address_2": "example", "shipping_city": "example", "shipping_country": "example", "shipping_email": "hello@example.com", "shipping_fax": "example", "shipping_first_name": "example", "shipping_last_name": "example", "shipping_phone": "example", "shipping_state": "example", "shipping_zipcode": "example" }'

Accepts every field the admin create form accepts, including billing/shipping contacts and default_markup (basis points). Duplicate names are allowed.

Requires scope: catalog:write

Media typeapplication/json
object
billing_address_1
Any of:
string
<= 255 characters
billing_address_2
Any of:
string
<= 255 characters
billing_city
Any of:
string
<= 100 characters
billing_country
string | null
billing_email
Any of:
string format: email
<= 254 characters /^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/
billing_fax
string | null
billing_first_name
Any of:
string
<= 100 characters
billing_last_name
Any of:
string
<= 100 characters
billing_phone
string | null
billing_state
Any of:
string
<= 100 characters
billing_zipcode
Any of:
string
<= 20 characters
default_markup
Any of:
number
description
Any of:
string
<= 255 characters
name
required
string
>= 1 characters <= 85 characters
shipping_address_1
Any of:
string
<= 255 characters
shipping_address_2
Any of:
string
<= 255 characters
shipping_city
Any of:
string
<= 100 characters
shipping_country
string | null
shipping_email
Any of:
string format: email
<= 254 characters /^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/
shipping_fax
string | null
shipping_first_name
Any of:
string
<= 100 characters
shipping_last_name
Any of:
string
<= 100 characters
shipping_phone
string | null
shipping_state
Any of:
string
<= 100 characters
shipping_zipcode
Any of:
string
<= 20 characters
Examplegenerated
{
"billing_address_1": "example",
"billing_address_2": "example",
"billing_city": "example",
"billing_country": "example",
"billing_email": "hello@example.com",
"billing_fax": "example",
"billing_first_name": "example",
"billing_last_name": "example",
"billing_phone": "example",
"billing_state": "example",
"billing_zipcode": "example",
"default_markup": 1,
"description": "example",
"name": "example",
"shipping_address_1": "example",
"shipping_address_2": "example",
"shipping_city": "example",
"shipping_country": "example",
"shipping_email": "hello@example.com",
"shipping_fax": "example",
"shipping_first_name": "example",
"shipping_last_name": "example",
"shipping_phone": "example",
"shipping_state": "example",
"shipping_zipcode": "example"
}

Create a supplier

Media typeapplication/json
object
data
required
object
billing_address_1
required
string | null
billing_address_2
required
string | null
billing_city
required
string | null
billing_country
required
string | null
billing_email
required
string | null
billing_fax
required
string | null
billing_first_name
required
string | null
billing_last_name
required
string | null
billing_phone
required
string | null
billing_state
required
string | null
billing_zipcode
required
string | null
created_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$/
default_markup
required
Any of:

The default markup applied to this supplier’s products. Integer basis points (1/100 of a percent).

integer
>= -9007199254740991 <= 9007199254740991
description
required
string | null
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
name
required
string
shipping_address_1
required
string | null
shipping_address_2
required
string | null
shipping_city
required
string | null
shipping_country
required
string | null
shipping_email
required
string | null
shipping_fax
required
string | null
shipping_first_name
required
string | null
shipping_last_name
required
string | null
shipping_phone
required
string | null
shipping_state
required
string | null
shipping_zipcode
required
string | null
updated_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$/
version
required

Opaque delta-sync version. Increases with every change; use it to detect updates.

string
Examplegenerated
{
"data": {
"billing_address_1": "example",
"billing_address_2": "example",
"billing_city": "example",
"billing_country": "example",
"billing_email": "example",
"billing_fax": "example",
"billing_first_name": "example",
"billing_last_name": "example",
"billing_phone": "example",
"billing_state": "example",
"billing_zipcode": "example",
"created_at": "2026-04-15T12:00:00Z",
"default_markup": 1,
"description": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"shipping_address_1": "example",
"shipping_address_2": "example",
"shipping_city": "example",
"shipping_country": "example",
"shipping_email": "example",
"shipping_fax": "example",
"shipping_first_name": "example",
"shipping_last_name": "example",
"shipping_phone": "example",
"shipping_state": "example",
"shipping_zipcode": "example",
"updated_at": "2026-04-15T12:00:00Z",
"version": "example"
}
}

An error response.

Media typeapplication/json
object
error
required
object
code
required

A machine-readable error code, e.g. VALIDATION_FAILED.

string
Allowed values: UNAUTHORIZED PLAN_REQUIRED INSUFFICIENT_SCOPE NOT_FOUND VALIDATION_FAILED CONFLICT STALE_VERSION RATE_LIMITED IDEMPOTENCY_KEY_REUSED IDEMPOTENCY_IN_PROGRESS IMAGE_FETCH_FAILED UNPROCESSABLE INTERNAL RETAILER_CANCELLED RETAILER_SUSPENDED RETAILER_NOT_FOUND TRIAL_DECISION_REQUIRED PLAN_USERS_EXCEEDED RETAILER_PAUSED PRODUCT_LIMIT_REACHED NOT_STOCK_TRACKED REASON_DIRECTION_MISMATCH REASON_NOT_ALLOWED INSUFFICIENT_STOCK OUTLET_DELETED
fields
Array<object>
object
field
required
string
message
required
string
message
required

A plain-English sentence describing what went wrong.

string
Example
{
"error": {
"code": "UNAUTHORIZED"
}
}