Pricing
Get customiser pricing
Retrieve the customiser's full pricing configuration as one canonical
document. The document's shape follows its pricing_model:
simple_letter prices per letter at fixed sign widths (sizes carry a
sizing_strategy of fixed_width or fixed_height and a
height_measurement_mode of line_height or letter_height, price
list rows carry per-line base_price/letter_price objects, and an
optional sheet_pricing section adds backing-sheet bands);
advanced_letter prices from material length (price lists carry a
letter_pricing_method of material_length or fixed_letter, a
shipping configuration, and rows with rates and dimension limits);
frame_fit prices by frame area (exactly one price list with
area-rate rows). Amount fields (base_price, letter_price lines,
price_per_letter) are integer minor units of currency; the rate
fields price_per_cm and price_per_sq_cm are decimal major currency
units per centimetre (or square centimetre); dimensions are
centimetres in _cm fields. currency is the store's configured ISO
4217 currency, or null on Shopify-backed stores that leave the
storefront currency in charge. The operation is read-only, has no side
effects, and is always safe to retry. Requires the pricing:read
scope; use this document as the base for PATCH/PUT writes and the
validate dry-run.
A 404 problem with code resource_not_found means the customiser does
not exist on the store your API key belongs to. A 422 problem with
code legacy_pricing_model means the customiser still uses the
retired fixed-height pricing model, which has no pricing document on
this API (its replacement is simple_letter with fixed_height
sizing). A 401 problem means the key is missing, invalid, or expired;
a 403 problem with code insufficient_scope means the key lacks
pricing:read; a 429 problem means too many requests — wait
retry_after seconds, then retry. Error responses use RFC 9457
problem+json with a machine-readable code and a request_id to
quote when contacting support.
Authorisation
Bearer token required. Include in the
Authorization header.
Path parameters
The customiser id, from the list customisers operation.
Example: 1
curl https://web.signcustomiser.com/api/v3/customisers/1/pricing \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'{
"data": {
"object": "customiser_pricing",
"customiser_id": 42,
"pricing_model": "simple_letter",
"pricing_model_display_name": "Simple Letter",
"currency": "USD",
"sizes": [
{
"size_id": 7,
"client_key": null,
"name": "Small",
"description": "Up to 50cm wide",
"sort_order": 1,
"char_limit": 20,
"line_limit": 3,
"min_char": 1,
"width_cm": 50,
"height_cm": null,
"line_height_cm": 12,
"width_multiplier": null,
"length_cm": null,
"sizing_strategy": "fixed_width",
"height_measurement_mode": "line_height"
}
],
"base_pricing": {
"mode": "single_base_price_by_size",
"rows": [
{
"size_id": 7,
"size_key": null,
"base_price": {
"line_1": 900,
"line_2": 1000,
"line_3": 1100
}
}
]
},
"price_lists": [
{
"price_list_id": 10,
"name": "Standard",
"rows": [
{
"size_id": 7,
"size_key": null,
"base_price": {
"line_1": 1000,
"line_2": 1200,
"line_3": 1400
},
"letter_price": {
"line_1": 100,
"line_2": 120,
"line_3": 140
}
}
]
}
],
"sheet_pricing": {
"rows": [
{
"width_limit_cm": 100,
"height_limit_cm": 60,
"base_price": 2000,
"price_per_sq_cm": 1.5
}
]
}
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/42/pricing",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"data": {
"object": "customiser_pricing",
"customiser_id": 57,
"pricing_model": "advanced_letter",
"pricing_model_display_name": "Advanced Letter",
"currency": "USD",
"sizes": [
{
"size_id": 12,
"client_key": null,
"name": "Default",
"description": null,
"sort_order": 1,
"char_limit": null,
"line_limit": null,
"min_char": 1,
"width_cm": null,
"height_cm": null,
"line_height_cm": null,
"width_multiplier": 1.5,
"length_cm": null,
"sizing_strategy": null,
"height_measurement_mode": null
}
],
"base_pricing": {
"mode": "included_in_price_lists",
"rows": []
},
"price_lists": [
{
"price_list_id": 21,
"name": "Material",
"letter_pricing_method": "material_length",
"shipping": {
"calculation": "physical",
"volumetric_divisor": null,
"add_weight_to_product": true
},
"rows": [
{
"base_price": 1000,
"width_limit_cm": 100,
"height_limit_cm": 50,
"length_limit_cm": null,
"price_per_sq_cm": null,
"fixed_length_cm": null,
"width_modifier": null,
"height_modifier": null,
"length_modifier": null,
"max_price_multiplier": 3,
"price_per_cm": 0.5,
"price_per_letter": null
}
]
}
]
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/57/pricing",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"data": {
"object": "customiser_pricing",
"customiser_id": 63,
"pricing_model": "frame_fit",
"pricing_model_display_name": "Frame Fit",
"currency": "GBP",
"sizes": [
{
"size_id": 19,
"client_key": null,
"name": "A2",
"description": null,
"sort_order": 1,
"char_limit": null,
"line_limit": null,
"min_char": 1,
"width_cm": 59.4,
"height_cm": 42,
"line_height_cm": null,
"width_multiplier": null,
"length_cm": null,
"sizing_strategy": null,
"height_measurement_mode": null
}
],
"base_pricing": {
"mode": "included_in_price_lists",
"rows": []
},
"price_lists": [
{
"price_list_id": 33,
"name": "Frame pricing",
"shipping": {
"calculation": "physical",
"volumetric_divisor": null,
"add_weight_to_product": false
},
"rows": [
{
"base_price": 7500,
"width_limit_cm": 120,
"height_limit_cm": 90,
"length_limit_cm": null,
"price_per_sq_cm": 0.022,
"fixed_length_cm": null,
"width_modifier": null,
"height_modifier": null,
"length_modifier": null
}
]
}
]
},
"links": {
"self": "https://web.signcustomiser.com/api/v3/customisers/63/pricing",
"documentation": "https://www.signcustomiser.com/help/api/"
},
"meta": {
"api_version": "v3",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}
}{
"type": "https://www.signcustomiser.com/help/api/problems/missing_api_key",
"title": "Missing API key",
"status": 401,
"code": "missing_api_key",
"detail": "Provide a store API key as a bearer token: Authorization: Bearer <api key>. Keys are created in the merchant admin under Integrate → API Tokens.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/insufficient_scope",
"title": "Insufficient scope",
"status": 403,
"code": "insufficient_scope",
"detail": "This operation requires the pricing:read scope, but the API key grants the following scopes: store:read. Create a key that includes the required scope in the merchant admin under Integrate → API Tokens.",
"required_scopes": [
"pricing:read"
],
"granted_scopes": [
"store:read"
],
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/resource_not_found",
"title": "Resource not found",
"status": 404,
"code": "resource_not_found",
"detail": "The requested resource does not exist or does not belong to the authenticated store.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/legacy_pricing_model",
"title": "Legacy pricing model",
"status": 422,
"code": "legacy_pricing_model",
"detail": "This customiser uses the retired fixed-height pricing model (legacy_fixed_height), which has no pricing document on this API. Recreate the customiser as simple_letter with a fixed_height sizing strategy on its sizes to manage its pricing here.",
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}{
"type": "https://www.signcustomiser.com/help/api/problems/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"detail": "You have exceeded the request limit for this API key. Wait 60 seconds, then retry.",
"retry_after": 60,
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
}