API reference / Variants & layouts
Transform a design
/api/v1/designs/transformParameters
Idempotency-Keyheaderrequiredstring
Persist this key for retries. Reusing it with changed input returns 409. Receipts are retained for at least 24 hours.
min length: 8 · max length: 128
Request body
application/json
generationIdbodyrequiredstring · uuid
languagebodyrequiredstring
min length: 1 · max length: 32
variantIdbodyoptionalstring · uuid
formatIdbodyoptional"ios-6.5" | "ios-6.3" | "ios-6.1" | "ios-duo-inner" | "ios-duo-outer" | "android-play-high"
Edit a phone format. Normal phone formats share screenshot replacements. Duo inner and outer each keep separate images while following the shared design; design edits create a custom layout. Existing custom formats remain independent.
resetFormatbodyoptionalboolean
atomicbodyoptionalboolean
default: true
includeResultPreviewbodyoptionalboolean
layoutsbodyoptional"mobile" | "tablet" | "desktop"[]
Layout sizes to transform. Defaults to ['mobile']; tablet and desktop change only when listed.
max items: 3
operationsbodyoptionalobject[]
max items: 100 · default: []
View complete request schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"generationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"language": {
"type": "string",
"minLength": 1,
"maxLength": 32
},
"variantId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"formatId": {
"description": "Edit a phone format. Normal phone formats share screenshot replacements. Duo inner and outer each keep separate images while following the shared design; design edits create a custom layout. Existing custom formats remain independent.",
"type": "string",
"enum": [
"ios-6.5",
"ios-6.3",
"ios-6.1",
"ios-duo-inner",
"ios-duo-outer",
"android-play-high"
]
},
"resetFormat": {
"type": "boolean"
},
"atomic": {
"default": true,
"type": "boolean"
},
"includeResultPreview": {
"type": "boolean"
},
"layouts": {
"description": "Layout sizes to transform. Defaults to ['mobile']; tablet and desktop change only when listed.",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"mobile",
"tablet",
"desktop"
]
}
},
"operations": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"update_node",
"delete_node",
"add_node",
"reorder",
"replace_color",
"bring_to_front",
"send_to_back"
]
},
"target": {
"type": "object",
"properties": {
"nodeType": {
"type": "string",
"enum": [
"layout",
"screen",
"header",
"panoramaBackground",
"screenshot",
"text",
"pill",
"badge",
"blob",
"rating",
"logo",
"illustration",
"magnifier",
"emoji",
"backgroundImage"
]
},
"nodeId": {
"type": "string"
},
"selector": {
"type": "string"
},
"screens": {
"anyOf": [
{
"type": "string",
"const": "all"
},
{
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
}
]
}
}
},
"changes": {
"default": {},
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"platform": {
"type": "string",
"enum": [
"ios",
"android"
]
}
},
"required": [
"type",
"target"
]
}
}
},
"required": [
"generationId",
"language"
],
"additionalProperties": false
}Request example
Set ALF_API_URL to https://dashboard.applaunchflow.com/api/v1 and ALF_API_KEY to your key. Replace sample IDs with your project’s values. Use a new ALF_REQUEST_ID for each new operation.
curl --request POST \
--url "$ALF_API_URL/designs/transform" \
--header "Authorization: Bearer $ALF_API_KEY" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: $ALF_REQUEST_ID" \
--data '{
"generationId": "11111111-1111-4111-8111-111111111111",
"language": "en"
}'This example shows the request structure. Some editor operations require additional query parameters that are not yet described in OpenAPI.
Response
Successful JSON responses wrap the result in data, with a request ID in meta.requestId.
successdataoptionalboolean
resultsdataoptionalobject[]
View response schema
{
"type": "object",
"required": [
"data",
"meta"
],
"properties": {
"data": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"results": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
},
"additionalProperties": {}
},
"meta": {
"type": "object",
"required": [
"requestId"
],
"properties": {
"requestId": {
"type": "string",
"format": "uuid"
}
}
}
}
}Errors & retries
Errors use application/problem+json. Check the stable code and keep requestId when contacting support. Respect Retry-After on 429 responses.