Printago API
POST
/v1/layouts
Create dashboard layout
The definition is validated against the layout schema: structural problems and authoring mistakes (malformed placements, duplicate placement ids, footprints off the size classes) are rejected with 400. The layout belongs to the calling user; their first layout becomes the default unless `isDefault` says otherwise, and setting `isDefault` clears it from their other layouts.
Request Body
Layout name, its definition document, and an optional default flag
LayoutInsert
definitionrequired
object
cardsrequired
object[]
max items: 200
cardrequired
string
entityIdoptional
string
hrequired
integer
idrequired
string
wrequired
integer
xrequired
integer
yrequired
integer
formatVersionoptional
integer
moderequired
string
isDefaultoptional
boolean
namerequired
string
Example Request
application/json
{
"name": "string",
"definition": {
"formatVersion": 1,
"mode": "string",
"cards": [
{
"id": "string",
"card": "string",
"entityId": "string",
"x": 1,
"y": 1,
"w": 1,
"h": 1
}
]
},
"isDefault": true
}
Response Schema
Layout
createdAtrequired
string
format: date-time
definitionrequired
object
A layout is a declarative arrangement of card instances, not code.
cardsrequired
object[]
cardrequired
string
entityIdoptional
string
hrequired
number
idrequired
string
wrequired
number
xrequired
number
yrequired
number
formatVersionrequired
number
moderequired
any
formatVersionrequired
number
idrequired
string
pattern: ^[a-z0-9]{24}$
isDefaultrequired
boolean
moderequired
any
namerequired
string
storeIdrequired
string
pattern: ^[a-z0-9]{24}$
updatedAtrequired
string
format: date-time
userIdrequired
string
Example Response
201 OK — application/json
{
"name": "string",
"userId": "string",
"formatVersion": 1,
"isDefault": true,
"definition": {
"formatVersion": 1,
"cards": [
{
"id": "string",
"card": "string",
"entityId": "string",
"x": 1,
"y": 1,
"w": 1,
"h": 1
}
]
},
"id": "string",
"storeId": "string",
"createdAt": "2026-09-02T09:16:20.316Z",
"updatedAt": "2026-09-02T09:16:20.316Z"
}