Skip to content

Set presentation price

PUT/v1/catalog/items/{catalogItemId}/presentation-price

Requires 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.json

Response 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

catalogItemIdstringrequired

Pattern: ^cat_[0-7][0-9a-hjkmnp-tv-z]{25}$

Headers

Affinity-Versionstring

Selects 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-Keystringrequired

Request body specification application/json

practiceIdstring | null
Show practiceId fields
Any of · 1: string

string

Pattern: ^prac_[0-7][0-9a-hjkmnp-tv-z]{25}$

Any of · 2: null

null

amountCentsinteger | nullrequired
Show amountCents fields
Any of · 1: integer

integer

Maximum: 2147483647

Greater than: 0

Any of · 2: null

null

baseVersionintegerrequired

Minimum: 0

Response specifications

200Successful response

application/json

amountCentsany & any | nullrequired
Show 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

versionintegerrequired
currencystringrequired

Allowed: "USD"

affinityPriceCentsany & any | nullrequired
Show 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 | nullrequired
Show affinityBasis fields
Any of · 1: object
Any of · 1: object
kindstringrequired

Allowed: "item"

quantitystringrequired

Allowed: "1"

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

quantityPricesany | null
Show quantityPrices fields
Any of · 1: any

Array items · object

quantityany & anyrequired
Show quantity fields
All of · 1: any

any

Maximum length: 100

All of · 2: any

any

Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$

amountCentsanyrequired
Show 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
kindstringrequired

Allowed: "package"

quantityany & anyrequired
Show quantity fields
All of · 1: any

any

Maximum length: 100

All of · 2: any

any

Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

Any of · 3: object
kindstringrequired

Allowed: "unit"

quantitystringrequired

Allowed: "1"

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

Any of · 2: null

null

basisobject | nullrequired
Show basis fields
Any of · 1: object
Any of · 1: object
kindstringrequired

Allowed: "item"

quantitystringrequired

Allowed: "1"

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

quantityPricesany | null
Show quantityPrices fields
Any of · 1: any

Array items · object

quantityany & anyrequired
Show quantity fields
All of · 1: any

any

Maximum length: 100

All of · 2: any

any

Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$

amountCentsanyrequired
Show 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
kindstringrequired

Allowed: "package"

quantityany & anyrequired
Show quantity fields
All of · 1: any

any

Maximum length: 100

All of · 2: any

any

Pattern: ^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

Any of · 3: object
kindstringrequired

Allowed: "unit"

quantitystringrequired

Allowed: "1"

unitanyrequired
Show unit fields
All of · 1: any

any

Minimum length: 1

Any of · 2: null

null

400HTTP 400

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

401Unauthorized

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

403Forbidden

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

404Not found

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

409Conflict

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

429Too many requests

application/json

codestringrequired
dataobject
detailstringrequired
instancestringrequired
requestIdstringrequired
statusintegerrequired

Minimum: 400

Maximum: 599

titlestringrequired
traceIdstring
typestringrequired

Format: uri

Type to search…

↑↓ navigate↵ selectEsc close