Printago API
GET /v1/customizer/designs/{id}/with-files

Get design with per-layer files

Get a design row plus every per-layer file with a short-lived signed URL. Used by the order detail page to surface what the customer submitted on a given OrderItem (resolved from `inputs.design_id`). `configName` is null when the originating config has been deleted — the design + files survive via `ON DELETE SET NULL`.

Requires: customizer.manage

Path Parameters

id required
string

Response Schema

DesignWithFilesResponse
configNamerequired
string
designrequired
object
A submitted design (SVG + metadata) created by a customer. Pre-Phase-2 rows hold a single merged SVG at `storagePath`. New rows leave `storagePath` null and reference per-layer files via the `customizer_design_files` table instead.
configIdrequired
string
pattern: ^[a-z0-9]{24}$
createdAtrequired
string
format: date-time
designJsonrequired
any
etsyReceiptIdrequired
string
externalUrirequired
string
fileSourcerequired
any
finishrequired
string
frameColorrequired
string
idrequired
string
pattern: ^[a-z0-9]{24}$
shopifyOrderIdrequired
string
storagePathrequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
filesrequired
object[]
colorrequired
string
idrequired
string
mimeTyperequired
string
rolerequired
any
signedUrlrequired
string
slotrequired
string
sortOrderrequired
number

Example Response

200 OK — application/json
{
  "design": {
    "configId": "string",
    "id": "string",
    "storeId": "string",
    "createdAt": "2026-08-24T03:58:55.315Z",
    "updatedAt": "2026-08-24T03:58:55.315Z"
  },
  "files": [
    {
      "id": "string",
      "slot": "string",
      "sortOrder": 1,
      "color": "string",
      "mimeType": "string",
      "signedUrl": "string"
    }
  ]
}