Sign Customiser

List the customiser's languages in the order they were added. Each language carries its status, whether it is_default, a translation_summary of how much of its copy is written, and its most recent ai_translation if it has ever had one. publishable inside the summary is the copy gate: it is true when no required key is still blank.

GET/api/v3/customisers/{customiser_id}/languages

Overview

A running AI translation blocks the publish separately, which ai_translation reports. meta.language_sync is the customiser-level state of the advisory catalogue sync every option write triggers. That sync adds translation rows for new copy, retires rows for copy that is gone, and marks drifted values stale — it runs after the triggering write has committed and cannot fail it, so it is eventually consistent by design. status is not_run before the customiser has ever been synchronised, and otherwise the outcome the last sync recorded: synchronised, or failed when it did not converge. languages_version changes whenever the published payload does, so an integration can cache against it. The operation is read-only, has no side effects, and is always safe to retry. Requires the customisers:read scope. A 404 problem with code resource_not_found means the customiser does not exist on the store your API key belongs to. A 401 problem means the key is missing, invalid, or expired; a 403 problem with code insufficient_scope means the key lacks customisers:read; a 422 problem means an unknown query parameter or an invalid cursor; 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 it in theAuthorization header.

Required scope: customisers:read

Path parameters

customiser_idstringpathrequired

The customiser id, from the list customisers operation.

Example: 1

Query parameters

limitstringquery

The page size, 1 to 100. Defaults to 20.

Example: 20

cursorstringquery

The opaque next_cursor from a previous page.

Example: eyJ2IjoxfQ

List customiser languages
curl https://web.signcustomiser.com/api/v3/customisers/1/languages?limit=20&cursor=eyJ2IjoxfQ \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN'
Response
{
  "data": [
    {
      "object": "customiser_language",
      "customiser_id": 42,
      "language_code": "en",
      "source_language_code": "en",
      "display_name": "English",
      "status": "published",
      "is_default": true,
      "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-04-02T11:00:00Z",
      "updated_at": "2026-05-04T09:12:31Z"
    },
    {
      "object": "customiser_language",
      "customiser_id": 42,
      "language_code": "fr",
      "source_language_code": "en",
      "display_name": "French",
      "status": "draft",
      "is_default": false,
      "translation_summary": {
        "key_count": 184,
        "required_key_count": 96,
        "translated_key_count": 12,
        "retired_key_count": 0,
        "missing_required_key_count": 84,
        "publishable": false
      },
      "ai_translation": {
        "object": "language_ai_translation",
        "status": "running",
        "cancellable": true,
        "chunks_total": 8,
        "keys_targeted": 184,
        "error_summary": null,
        "started_at": "2026-05-04T09:10:00Z",
        "finished_at": null,
        "created_at": "2026-05-04T09:09:58Z",
        "updated_at": "2026-05-04T09:11:20Z"
      },
      "published_at": null,
      "created_at": "2026-05-04T09:09:00Z",
      "updated_at": "2026-05-04T09:11:20Z"
    }
  ],
  "pagination": {
    "has_more": false,
    "next_cursor": null
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/customisers/42/languages",
    "documentation": "https://www.signcustomiser.com/help/api/",
    "next": null
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
    "language_sync": {
      "languages_version": "9f2b1c0d4e5a6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f8",
      "synced_at": "2026-05-04T09:12:31Z",
      "status": "synchronised"
    }
  }
}