Sign Customiser

Navigation

Dark mode

Starts one AI sign design from an uploaded source and answers 202 at once. Requires ai_sign_designs:write and an Idempotency-Key.

POST/api/v3/ai-sign-design-jobs
POSTCreate an AI sign design job
POST/api/v3/ai-sign-design-jobs

Create an AI sign design job

Starts one AI sign design from an uploaded source and answers 202 at once. Requires `ai_sign_designs:write` and an `Idempotency-Key`. The design runs in the background: poll `GET /api/v3/ai-sign-design-jobs/{job_id}` (the `Location` header) no more often than `poll_after_seconds`, until `status` is `delivered` or `failed`. Name the design context in one of two ways. For a standalone design, send `product_family`. For a design in one of your customisers, send `customiser_id`, and optionally one of its `letter_type_id`s. That also needs `customisers:read`: without it the create answers 403 `insufficient_scope` naming `customisers:read`. The family is the customiser's own: a different `product_family` answers 422 `product_family_conflict`. Credits: the job holds one credit before any work starts. A delivered design charges that credit, and a failed design releases it, so a failure costs nothing. `charge.state` reports `reserved`, `charged` or `released`. With no credit available the create answers 409 `insufficient_credits` with `required_units` and `available_units`, and nothing is reserved. The source is verified and used once. Its bytes are checked when the job starts; a failed check answers 422 `source_rejected` and the source cannot be used again. A source that another job used answers 409 `source_already_consumed`. A retry with the same `Idempotency-Key` and body returns the same job and charges nothing more. If the designer is busy this answers 429 `ai_sign_design_capacity_reached` with `Retry-After`; retry with the same key. While the AI sign designer is turned off, or design jobs cannot start for this store yet, this answers 503 `ai_sign_designer_unavailable` and nothing is reserved. `output_formats` chooses the files. It defaults to every format: `svg`, `eps` and `illustrator_pdf` (an Illustrator-compatible PDF, not a native Illustrator file). SVG is always made. Send `["svg"]` to skip the optional conversions. The source and every file the job makes are stored privately.

Authorisation

The Authorization header expects a Bearer token. Generate one on the API keys page in your dashboard.

Body
Create an AI sign design job

Overview

The design runs in the background: poll GET/api/v3/ai-sign-design-jobs/{job_id} (the Location header) no more often than poll_after_seconds, until status is delivered or failed. Name the design context in one of two ways. For a standalone design, send product_family. For a design in one of your customisers, send customiser_id, and optionally one of its letter_type_ids. That also needs customisers:read: without it the create answers 403 insufficient_scope naming customisers:read. The family is the customiser's own: a different product_family answers 422 product_family_conflict. Credits: the job holds one credit before any work starts. A delivered design charges that credit, and a failed design releases it, so a failure costs nothing. charge.state reports reserved, charged or released. With no credit available the create answers 409 insufficient_credits with required_units and available_units, and nothing is reserved. The source is verified and used once. Its bytes are checked when the job starts; a failed check answers 422 source_rejected and the source cannot be used again. A source that another job used answers 409 source_already_consumed. A retry with the same Idempotency-Key and body returns the same job and charges nothing more. If the designer is busy this answers 429 ai_sign_design_capacity_reached with Retry-After; retry with the same key. While the AI sign designer is turned off, or design jobs cannot start for this store yet, this answers 503 ai_sign_designer_unavailable and nothing is reserved. output_formats chooses the files. It defaults to every format: svg, eps and illustrator_pdf (an Illustrator-compatible PDF, not a native Illustrator file). SVG is always made. Send ["svg"] to skip the optional conversions. The source and every file the job makes are stored privately.

Authorisation

Bearer token required. Include it in the Authorization header.

Required scope: ai_sign_designs:write

Request body

source_fileobjectbody
product_familystringbody
customiser_idintegerbody
letter_type_idintegerbody
output_formatsarraybody

Request body example

application/json
{
  "source_file": {
    "id": "aisrc_9f2c4b7ad13e6058ba41cd4201"
  },
  "product_family": "neon",
  "customiser_id": 16,
  "letter_type_id": 16,
  "output_formats": [
    "svg",
    "eps",
    "illustrator_pdf"
  ]
}
Create an AI sign design job
curl https://web.signcustomiser.com/api/v3/ai-sign-design-jobs \
  --request POST \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "source_file": {
    "id": "aisrc_9f2c4b7ad13e6058ba41cd4201"
  },
  "product_family": "neon",
  "customiser_id": 16,
  "letter_type_id": 16,
  "output_formats": [
    "svg",
    "eps",
    "illustrator_pdf"
  ]
}'
Response
{
  "data": {
    "object": "ai_sign_design_job",
    "id": "aijob_4k8m2p6r9t1v3x5z7b0d2f4h6j",
    "status": "queued",
    "product_family": "neon",
    "customiser_id": null,
    "letter_type_id": null,
    "source_file": {
      "id": "aisrc_9f2c4b7ad13e6058ba41cd4201",
      "media_type": "image/png",
      "byte_size": 184320,
      "width_px": 1600,
      "height_px": 900,
      "url": null,
      "download_url": null
    },
    "output_formats": [
      "svg",
      "eps",
      "illustrator_pdf"
    ],
    "poll_after_seconds": 5,
    "result": null,
    "charge": {
      "state": "reserved",
      "units": 1
    },
    "error": null,
    "created_at": "2026-10-20T09:32:00Z",
    "completed_at": null
  },
  "links": {
    "self": "https://web.signcustomiser.com/api/v3/ai-sign-design-jobs/aijob_4k8m2p6r9t1v3x5z7b0d2f4h6j",
    "documentation": "https://www.signcustomiser.com/help/api/"
  },
  "meta": {
    "api_version": "v3",
    "request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t"
  }
}

Type a question and press Enter. Use the arrow keys to move between the results.