AI sign designs
retry_ai_sign_design_job_exports
writeRetry AI sign design job exports
Repair a failed manufacturing file of a delivered design without buying another design.
Overview
Retry the failed EPS or Illustrator-compatible PDF conversions of a delivered AI sign design job. A retry is free: it uses no credit, does not change the charge, and does not run the AI sign designer again. Each job has a small number of free retries, reported as export_retries_remaining. Requires ai_sign_designs:write, supports dry_run, and requires an idempotency_key for an actual retry.
Permission
Requires theai_sign_designs:writepermission. A connection without it answersinsufficient_scopenaming the permission to approve.
Annotations
Prerequisites
- A delivered job whose eps or illustrator_pdf file has state failed and error.retryable true, from get_ai_sign_design_job.
- A merchant has connected this store and approved the ai_sign_designs:write scope.
Side effects
- Queues the conversion of each failed requested format again.
- Uses one free export retry of the job. Uses no credit.
- Claims the idempotency_key for at least 24 hours.
Arguments
The id of a delivered job, from get_ai_sign_design_job.
A client-generated key unique to this logical write, such as a UUID. Required: repeating the call with the same key and the same arguments replays the original result instead of writing twice, and the same key with different arguments is an idempotency_key_conflict.
When true, the retry is checked against the job and its retry budget is checked and nothing is written: the result is the same verdict the apply would have reached, and a problem the apply would have raised comes back as the same tool error. Defaults to false. A dry run claims no key.
Result
The job, with the retried files in processing. Read it again with get_ai_sign_design_job. A dry run returns the formats a retry would convert, the retries left and required_units 0.
The job after the retry started. Absent on a dry run.
queued, processing, delivered (one credit charged) or failed (no credit charged). Expected to grow: tolerate unknown values.
One of: queued, processing, delivered, failed
One of: neon, channel_letter, metal_cut_out
While the job runs, how long to wait before reading it again. Null once it is delivered or failed.
The delivered design, or null until delivery and for an erased design. Each ready file has a download_url that needs no login and can be given to a manufacturer.
reserved while the credit is held, charged once the design is delivered, released when the design failed.
One of: reserved, charged, released
True when this call replayed a previously recorded response for the same idempotency_key instead of applying the write again.
Present and true only when dry_run was requested.
Present only on a dry run, and always true: a failing dry run returns a tool error instead.
Present only on a dry run: the formats a retry would convert, the free retries left, and required_units, which is always 0.
Error cases
The design was erased. Do not retry.
No requested conversion has failed, one still runs, or the design needs manufacturing review.
The free retries of the job are used.
The export was tried too often in a short period. Wait retry_after seconds.
The job has not delivered a design. Poll it first.
The connection was approved without ai_sign_designs:write.
The id is unknown or belongs to another store.
Retry a failed EPS conversion
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "retry_ai_sign_design_job_exports",
"arguments": {
"job_id": "aijob_4k8m2p6r0t3v7x1z5b9d3f7h2j",
"idempotency_key": "7d9f1b3c-5e7a-4c9e-8b1d-3f5a7c9e1b3d"
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"structuredContent": {
"request_id": "req_01jz9x2k7c8f3m5n6p7q8r9s0t",
"store": {
"id": 12,
"name": "Demo Signs"
},
"job": {
"id": "aijob_4k8m2p6r0t3v7x1z5b9d3f7h2j",
"status": "delivered",
"product_family": "neon",
"customiser_id": null,
"letter_type_id": null,
"source_file": {
"id": "aisrc_9f2c4b7ad13e6058ba41cd4201",
"media_type": "image/png",
"byte_size": 482133,
"width_px": 1600,
"height_px": 900,
"download_url": "https://web.signcustomiser.com/ai-design-files/src9x2k7c8f3m5n6p7q8r9s0tabcd"
},
"output_formats": [
"svg",
"eps",
"illustrator_pdf"
],
"poll_after_seconds": null,
"result": {
"display_treatment": "fill_and_bloom",
"files": {
"svg": {
"state": "ready",
"purpose": "design",
"media_type": "image/svg+xml",
"byte_size": 18432,
"download_url": "https://web.signcustomiser.com/ai-design-files/svg9x2k7c8f3m5n6p7q8r9s0tabcd",
"error": null
},
"eps": {
"state": "processing",
"purpose": "manufacturing_export",
"media_type": "application/postscript",
"byte_size": null,
"download_url": null,
"error": null
},
"illustrator_pdf": {
"state": "ready",
"purpose": "manufacturing_export",
"media_type": "application/pdf",
"byte_size": 18432,
"download_url": "https://web.signcustomiser.com/ai-design-files/pdf9x2k7c8f3m5n6p7q8r9s0tabcd",
"error": null
},
"raster_preview": {
"state": "ready",
"purpose": "preview",
"media_type": "image/png",
"byte_size": 18432,
"download_url": "https://web.signcustomiser.com/ai-design-files/png9x2k7c8f3m5n6p7q8r9s0tabcd",
"error": null
},
"face_svg": null
},
"assessed_dimensions": {
"width_cm": 50,
"width_in": 19.69,
"height_cm": 25,
"height_in": 9.84,
"authored_units": {
"width_cm": "centimetres",
"height_cm": "centimetres"
}
},
"advisories": [],
"export_retries_remaining": 2
},
"charge": {
"state": "charged",
"units": 1
},
"error": null,
"created_at": "2026-10-20T09:31:00Z",
"completed_at": "2026-10-20T09:33:40Z"
},
"idempotent_replay": false
}
}
}A job that has not delivered (error)
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "retry_ai_sign_design_job_exports",
"arguments": {
"job_id": "aijob_4k8m2p6r0t3v7x1z5b9d3f7h2j",
"dry_run": true
}
}
}{
"jsonrpc": "2.0",
"id": 1,
"result": {
"isError": true,
"structuredContent": {
"error": {
"code": "ai_sign_design_not_delivered",
"title": "Design not delivered",
"detail": "This job has not delivered a design, so it has no exports to retry. Poll the job until status is delivered. A failed design has no exports. Nothing was started.",
"recovery": "The job has not delivered a design. Read it with get_ai_sign_design_job until status is delivered. A failed design has no files to export."
}
}
}
}