Skip to content

Create or update a catalogue item

POST
/api/v1/items
curl --request POST \
--url https://dashboard.azimea.com/api/v1/items \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "id": "plan-pro", "kind": "plan", "name": "Pro plan", "description": "Unlimited projects and priority support.", "url": "https://example.com/pricing#pro", "imageUrl": "https://example.com/img/pro.png", "price": 49, "comparePrice": 59, "currency": "EUR", "inStock": true, "stockQuantity": null, "categories": [ "plans" ], "attributes": { "billing": "monthly", "seats": 5 }, "active": true }'

Adds a product, plan or service from your own system to the catalogue Azimea recommends in emails, or updates it. id is your own id for the item: sending the same id again updates the same item, and a field left out keeps its value. A new item defaults to a product, in stock and active; kind is product, plan, service or other. To stop recommending an item but keep its history, send active: false instead of deleting it. Items synced from a connected store are not written here. Needs the items:write permission. Refusals come back as catalog.* codes on the field, for example catalog.item_name_missing, catalog.item_currency_invalid, or catalog.items_limit once the catalogue holds 100,000 items.

Media typeapplication/json
object
id
string
nullable
Example
plan-pro
kind
string
nullable
Example
plan
name
string
nullable
Example
Pro plan
description
string
nullable
Example
Unlimited projects and priority support.
url
string
nullable
Example
https://example.com/pricing#pro
imageUrl
string
nullable
Example
https://example.com/img/pro.png
price
number format: decimal
nullable
Example
49
comparePrice
number format: decimal
nullable
Example
59
currency
string
nullable
Example
EUR
inStock
boolean
nullable
Example
true
stockQuantity
integer format: int32
nullable
Example
null
categories
Array<string>
nullable
Example
[
"plans"
]
attributes
object
key
additional properties
Example
{
"billing": "monthly",
"seats": 5
}
active
boolean
nullable
Example
true
Example
{
"id": "plan-pro",
"kind": "plan",
"name": "Pro plan",
"description": "Unlimited projects and priority support.",
"url": "https://example.com/pricing#pro",
"imageUrl": "https://example.com/img/pro.png",
"price": 49,
"comparePrice": 59,
"currency": "EUR",
"inStock": true,
"stockQuantity": null,
"categories": [
"plans"
],
"attributes": {
"billing": "monthly",
"seats": 5
},
"active": true
}

The item as stored

Media typeapplication/json
object
isSuccess
boolean
value
One of:
object
id
string format: guid
source
string
storeId
string format: guid
nullable
externalId
string
kind
string
name
string
description
string
nullable
url
string
nullable
imageUrl
string
nullable
price
number format: decimal
nullable
comparePrice
number format: decimal
nullable
currency
string
nullable
inStock
boolean
stockQuantity
integer format: int32
nullable
categories
Array<string>
attributes
object
key
additional properties
active
boolean
createdAt
string format: date-time
updatedAt
string format: date-time
nullable
status
integer format: int32
errors
Array<object>
object
code
string
message
string
params
object
key
additional properties
fieldErrors
object
key
additional properties
Array<object>
object
code
string
message
string
params
object
key
additional properties
Example
{
"isSuccess": true,
"value": {
"id": "01a10900-0000-7000-8000-000000000001",
"source": "api",
"storeId": null,
"externalId": "plan-pro",
"kind": "plan",
"name": "Pro plan",
"description": "Unlimited projects and priority support.",
"url": "https://example.com/pricing#pro",
"imageUrl": "https://example.com/img/pro.png",
"price": 49,
"comparePrice": 59,
"currency": "EUR",
"inStock": true,
"stockQuantity": null,
"categories": [
"plans"
],
"attributes": {
"billing": "monthly",
"seats": 5
},
"active": true,
"createdAt": "2026-10-05T09:00:00+00:00",
"updatedAt": null
},
"status": 0,
"errors": [],
"fieldErrors": null
}

Missing or invalid API key

The key lacks the items:write permission