Set presentation price
/v1/catalog/items/{catalogItemId}/presentation-priceRequires selling_prices:write. Sets one override for this platform and all its practices, including when the Affinity default is absent. Omit practiceId. Null restores inheritance. Use baseVersion from the latest read.
Request example
Replace example values with your Test data. Check the field rules below before you send a request.
{
"practiceId": "prac_01j2y8m6jcc9tt24af5pw9x1bc",
"amountCents": 0,
"baseVersion": 0
}curl -X PUT 'https://api.affinityrx.com/v1/catalog/items/{catalogItemId}/presentation-price' \
-H "Authorization: Bearer $AFFINITY_API_KEY" \
-H 'Affinity-Version: 2026-09-28' \
-H 'Idempotency-Key: <Idempotency-Key>' \
-H 'Content-Type: application/json' \
--data @request.jsonResponse example
These examples show the body structure. Values can differ. Select a status code to see its response.
{
"amountCents": "<string>",
"version": 0,
"currency": "USD",
"affinityPriceCents": "<string>",
"affinityBasis": {
"kind": "item",
"quantity": "1",
"unit": "<string>",
"quantityPrices": "<string>"
},
"basis": {
"kind": "item",
"quantity": "1",
"unit": "<string>",
"quantityPrices": "<string>"
}
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 400,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 401,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 403,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 404,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 409,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}{
"code": "<string>",
"data": "<string>",
"detail": "<string>",
"instance": "<string>",
"requestId": "<string>",
"status": 429,
"title": "<string>",
"traceId": "<string>",
"type": "<string>"
}Implementation specification
Use these field types and limits to build your integration. Download the OpenAPI document for the complete contract.
Path parameters
catalogItemIdstringrequiredPattern: ^cat_[0-7][0-9a-hjkmnp-tv-z]{25}$
Headers
Affinity-VersionstringSelects the HTTP API contract for this request only. When omitted, API-key requests use their service account’s stored version. Does not change the stored default.
Pin requests to 2026-09-28.
Idempotency-KeystringrequiredRequest body specification application/json
practiceIdstring | nullShow practiceId fields
Any of · 1: string
string
Pattern: ^prac_[0-7][0-9a-hjkmnp-tv-z]{25}$
Any of · 2: null
null
amountCentsinteger | nullrequiredShow amountCents fields
Any of · 1: integer
integer
Maximum: 2147483647
Greater than: 0
Any of · 2: null
null
baseVersionintegerrequiredMinimum: 0
Response specifications
200Successful response
application/json
amountCentsany & any | nullrequiredShow amountCents fields
Any of · 1: any & any
All of · 1: any
any
Greater than: 0
All of · 2: any
any
Maximum: 2147483647
Any of · 2: null
null
versionintegerrequiredcurrencystringrequiredAllowed: "USD"
affinityPriceCentsany & any | nullrequiredShow affinityPriceCents fields
Any of · 1: any & any
All of · 1: any
any
Greater than: 0
All of · 2: any
any
Maximum: 2147483647
Any of · 2: null
null
affinityBasisobject | nullrequiredShow affinityBasis fields
Any of · 1: object
Any of · 1: object
kindstringrequiredAllowed: "item"
quantitystringrequiredAllowed: "1"
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
quantityPricesany | nullShow quantityPrices fields
Any of · 1: any
Array items · object
quantityany & anyrequiredShow quantity fields
All of · 1: any
any
Maximum length: 100
All of · 2: any
any
Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$
amountCentsanyrequiredShow amountCents fields
All of · 1: any
any
Greater than: 0
All of · 1: any
any
Minimum items: 1
Any of · 2: null
null
Any of · 2: object
kindstringrequiredAllowed: "package"
quantityany & anyrequiredShow quantity fields
All of · 1: any
any
Maximum length: 100
All of · 2: any
any
Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
Any of · 3: object
kindstringrequiredAllowed: "unit"
quantitystringrequiredAllowed: "1"
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
Any of · 2: null
null
basisobject | nullrequiredShow basis fields
Any of · 1: object
Any of · 1: object
kindstringrequiredAllowed: "item"
quantitystringrequiredAllowed: "1"
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
quantityPricesany | nullShow quantityPrices fields
Any of · 1: any
Array items · object
quantityany & anyrequiredShow quantity fields
All of · 1: any
any
Maximum length: 100
All of · 2: any
any
Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$
amountCentsanyrequiredShow amountCents fields
All of · 1: any
any
Greater than: 0
All of · 1: any
any
Minimum items: 1
Any of · 2: null
null
Any of · 2: object
kindstringrequiredAllowed: "package"
quantityany & anyrequiredShow quantity fields
All of · 1: any
any
Maximum length: 100
All of · 2: any
any
Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
Any of · 3: object
kindstringrequiredAllowed: "unit"
quantitystringrequiredAllowed: "1"
unitanyrequiredShow unit fields
All of · 1: any
any
Minimum length: 1
Any of · 2: null
null
400HTTP 400
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri
401Unauthorized
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri
403Forbidden
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri
404Not found
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri
409Conflict
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri
429Too many requests
application/json
codestringrequireddataobjectdetailstringrequiredinstancestringrequiredrequestIdstringrequiredstatusintegerrequiredMinimum: 400
Maximum: 599
titlestringrequiredtraceIdstringtypestringrequiredFormat: uri