Sign Customiser

Customiser languages

Publish a customiser language

Copy page

Promote the language draft copy to its published copy, which is what the storefront serves. Publishing is the only operation that changes what a shopper sees: writing draft values never does.

POST/api/v3/customisers/{customiser_id}/languages/{language_code}/publish

Overview

The gate is required copy. A 422 problem with code language_publish_blocked lists every required key whose draft value is still blank in missing_keys; write those, then retry. Stale values — copy whose source has changed since it was translated — do not block publishing: they publish, stay flagged as stale on the translations read, and remain reviewable. A 409 problem with code ai_translation_in_progress means an AI translation is still writing the draft; wait for it, or cancel it, then retry. Publishing is idempotent in the domain sense as well as the protocol sense: publishing an already-published language re-promotes its current draft values, which is how a merchant pushes reviewed changes live. The write clears the customiser cached storefront configuration and runs the advisory language sync; it never regenerates your Shopify products, product images, or product cache. An Idempotency-Key header is required. Requires the customisers:write scope. A 400 problem means the Idempotency-Key header is missing or malformed. 401, 403, 404, and 429 problems behave as on the read operation, with customisers:write as the required scope.

Authorisation

Bearer token required. Include it in theAuthorization header.

Required scope: customisers:write

Path parameters

customiser_idstringpathrequired

The customiser id, from the list customisers operation.

Example: 1

language_codestringpathrequired

The language tag, from the list customiser languages operation.

Example: fr

Publish a customiser language
curl https://web.signcustomiser.com/api/v3/customisers/1/languages/fr/publish \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN'
Response
{
  "data": {
    "object": "customiser_language",
    "customiser_id": 42,
    "language_code": "fr",
    "source_language_code": "en",
    "display_name": "French",
    "status": "published",
    "is_default": false,
    "translation_summary": {
      "key_count": 184,
      "required_key_count": 96,
      "translated_key_count": 184,
      "retired_key_count": 0,
      "missing_required_key_count": 0,
      "publishable": true
    },
    "ai_translation": null,
    "published_at": "2026-05-04T09:12:31Z",
    "created_at": "2026-05-04T09:09:00Z",
    "updated_at": "2026-05-04T09:12:31Z"
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/languages/fr/publish",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}