Skip to documentation
AppLaunchFlow/ Docs

API reference / Promo videos

promovideo preview post

POST/api/v1/promovideo/preview

Authorization

Send your API key or MCP OAuth token in the Authorization: Bearer header. Active or trialing Unlimited is required.

Required permission designs:read

Every mutation requires JSON and an Idempotency-Key. Reuse the same key and exact input when retrying.

Parameters

Idempotency-Keyheaderrequired

string

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

projectIdbodyrequired

string · uuid

variantIdbodyoptional

string · uuid

languagebodyoptional

"en" | "en-GB" | "en-AU" | "en-CA" | "es" | "es-MX" | "fr" | "fr-CA" | "de" | "it" | "pt" | "pt-BR" | "ja" | "ko" | "zh-CN" | "zh-TW" | "nl" | "ru" | "ar" | "tr" | "pl" | "sv" | "no" | "da" | "fi" | "cs" | "hi" | "hu" | "ro" | "uk" | "el" | "he" | "id" | "ms" | "th" | "vi" | "fil" | "hr" | "sk" | "ca" | "bn" | "gu" | "kn" | "ml" | "mr" | "or" | "pa" | "sl" | "ta" | "te" | "ur"

sceneIndexbodyoptional

integer

Config index of the scene to show; default first visible

minimum: 0 · maximum: 99

atbodyoptional

number

Position within the scene, 0–1 (default 0.5)

minimum: 0 · maximum: 1

framebodyoptional

integer

Absolute 30 fps video frame; overrides sceneIndex/at

minimum: 0 · maximum: 18000

formatbodyoptional

"appStore:default" | "appStore:duo" | "appStore:6.9" | "appStore:6.7" | "appStore:6.5" | "appStore:6.3" | "ipad:11" | "ipad:13" | "ipad:12.9" | "social:9:16" | "social:1:1" | "social:16:9" | "creative:header" | "creative:search"

Output format; default the video's previewFormat

scalebodyoptional

number

Output size relative to the format's full size

minimum: 0.1 · maximum: 1 · default: 0.5

View complete request schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "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)$"
    },
    "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)$"
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "en-GB",
        "en-AU",
        "en-CA",
        "es",
        "es-MX",
        "fr",
        "fr-CA",
        "de",
        "it",
        "pt",
        "pt-BR",
        "ja",
        "ko",
        "zh-CN",
        "zh-TW",
        "nl",
        "ru",
        "ar",
        "tr",
        "pl",
        "sv",
        "no",
        "da",
        "fi",
        "cs",
        "hi",
        "hu",
        "ro",
        "uk",
        "el",
        "he",
        "id",
        "ms",
        "th",
        "vi",
        "fil",
        "hr",
        "sk",
        "ca",
        "bn",
        "gu",
        "kn",
        "ml",
        "mr",
        "or",
        "pa",
        "sl",
        "ta",
        "te",
        "ur"
      ]
    },
    "sceneIndex": {
      "description": "Config index of the scene to show; default first visible",
      "type": "integer",
      "minimum": 0,
      "maximum": 99
    },
    "at": {
      "description": "Position within the scene, 0–1 (default 0.5)",
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "frame": {
      "description": "Absolute 30 fps video frame; overrides sceneIndex/at",
      "type": "integer",
      "minimum": 0,
      "maximum": 18000
    },
    "format": {
      "description": "Output format; default the video's previewFormat",
      "type": "string",
      "enum": [
        "appStore:default",
        "appStore:duo",
        "appStore:6.9",
        "appStore:6.7",
        "appStore:6.5",
        "appStore:6.3",
        "ipad:11",
        "ipad:13",
        "ipad:12.9",
        "social:9:16",
        "social:1:1",
        "social:16:9",
        "creative:header",
        "creative:search"
      ]
    },
    "scale": {
      "default": 0.5,
      "description": "Output size relative to the format's full size",
      "type": "number",
      "minimum": 0.1,
      "maximum": 1
    }
  },
  "required": [
    "projectId"
  ],
  "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
curl --request POST \
  --url "$ALF_API_URL/promovideo/preview" \
  --header "Authorization: Bearer $ALF_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $ALF_REQUEST_ID" \
  --data '{
  "projectId": "11111111-1111-4111-8111-111111111111"
}'

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.

mimeTypedatarequired

"image/png"

pngdatarequired

string

Base64 PNG of the rendered frame

widthdatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

heightdatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

formatdatarequired

string

framedatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

timeSecondsdatarequired

number

durationInFramesdatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

fpsdatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

sceneIndexdatarequired

integer

minimum: -9007199254740991 · maximum: 9007199254740991

sceneTypedataoptional

string

variantIddatarequired

string · uuid

languagedatarequired

string

View response schema
{
  "type": "object",
  "required": [
    "data",
    "meta"
  ],
  "properties": {
    "data": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "type": "object",
      "properties": {
        "mimeType": {
          "type": "string",
          "const": "image/png"
        },
        "png": {
          "type": "string",
          "description": "Base64 PNG of the rendered frame"
        },
        "width": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "height": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "format": {
          "type": "string"
        },
        "frame": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "timeSeconds": {
          "type": "number"
        },
        "durationInFrames": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "fps": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "sceneIndex": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "sceneType": {
          "type": "string"
        },
        "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)$"
        },
        "language": {
          "type": "string"
        }
      },
      "required": [
        "mimeType",
        "png",
        "width",
        "height",
        "format",
        "frame",
        "timeSeconds",
        "durationInFrames",
        "fps",
        "sceneIndex",
        "variantId",
        "language"
      ]
    },
    "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.

See error handling and idempotency →