{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Personalized Image & GIF Generator from Lottie Template",
    "description": "Returns a personalized PNG and/or GIF for every row of your data, rendered from one Lottie template (Bodymovin JSON or .lottie): dynamic text, colors and images per row, from JSON, a CSV URL or an Apify dataset. Template-based, not AI. No browser, no MP4. $0.005 per image; failed rows are free.",
    "version": "0.1",
    "x-build-id": "MaOYSsXTd9Swc9XGj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lakadev~lottie-template-bulk-png-gif/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lakadev-lottie-template-bulk-png-gif",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/lakadev~lottie-template-bulk-png-gif/runs": {
      "post": {
        "operationId": "runs-sync-lakadev-lottie-template-bulk-png-gif",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/lakadev~lottie-template-bulk-png-gif/run-sync": {
      "post": {
        "operationId": "run-sync-lakadev-lottie-template-bulk-png-gif",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "templateUrl": {
            "title": "Template URL",
            "type": "string",
            "description": "Public http or https URL of a Lottie template: a Bodymovin .json file or a .lottie (dotLottie) file, up to 10 MB. Use it for a template that is already online or larger than 5 MB. If you also fill Template JSON, this URL wins."
          },
          "templateJson": {
            "title": "Template JSON (inline)",
            "type": "object",
            "description": "Paste the Lottie JSON here, or use templateUrl. Run once without rows to list what can be replaced. The prefilled example is a small greeting card (public domain, CC0): replace it with your own template."
          },
          "rows": {
            "title": "Rows (JSON)",
            "type": "array",
            "description": "One object per image. Keys are column names: by default, a key that equals a text layer name replaces its text, an image asset id replaces the image, a shape layer name replaces its fill color (#RRGGBB). For MCP calls, keep to 100 rows for PNG or 20 rows for GIF so results arrive within 45 s. Replace the example rows with yours, or empty the list to inspect your template. Ignored when csvUrl or datasetId is set."
          },
          "csvUrl": {
            "title": "CSV URL",
            "type": "string",
            "description": "Public URL of a CSV file (UTF-8, header line, comma, semicolon or tab separated, up to 10 MB), for example a published Google Sheet. Use it instead of rows when your data is a spreadsheet. If set, rows is ignored."
          },
          "datasetId": {
            "title": "Apify dataset",
            "type": "string",
            "description": "A dataset of your Apify account whose items become the rows, for example the output of another Actor. This Actor only reads it and never writes to it. If set, rows is ignored. Through the API, pass the dataset id as a string."
          },
          "mappings": {
            "title": "Mappings",
            "type": "array",
            "description": "Leave empty to match columns to template elements by name. Otherwise a list of {\"column\", \"target\": \"text\"|\"color\"|\"image\", \"layer\" (text and color) or \"asset\" or \"layer\" (image), \"fit\": \"shrink\"|\"none\", \"maxWidth\", \"imageFit\": \"cover\"|\"contain\"}. Use it when your column names differ from the layer names. Column names may be paths such as location.city.",
            "default": []
          },
          "idColumn": {
            "title": "ID column",
            "type": "string",
            "description": "Optional column whose value is copied to the id field of each output row, to match results with your data (for example a SKU)."
          },
          "png": {
            "title": "Create PNG",
            "type": "boolean",
            "description": "Default true. Produce one PNG per row (one still frame of the template). At least one of png and gif must be on.",
            "default": true
          },
          "pngFrame": {
            "title": "PNG frame (% of the duration)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Which moment of the animation the PNG shows, from 0 to 100 percent of its duration. 100 (default) is the last frame, where texts have finished moving in. Use 0 for the first frame.",
            "default": 100
          },
          "pngSize": {
            "title": "PNG size (px)",
            "minimum": 64,
            "maximum": 2048,
            "type": "integer",
            "description": "Longest side of the PNG, from 64 to 2048 pixels. Leave empty to use the longest side of the template (limited to 2048)."
          },
          "gif": {
            "title": "Create GIF",
            "type": "boolean",
            "description": "Also produce one GIF per row (the whole animation, at most 30 s and 150 images). Costs one more image per row. Off by default.",
            "default": false
          },
          "gifSize": {
            "title": "GIF size (px)",
            "minimum": 64,
            "maximum": 720,
            "type": "integer",
            "description": "Longest side of the GIF, from 64 to 720 pixels. Smaller GIFs are lighter for an e-mail. Only used when gif is on.",
            "default": 480
          },
          "gifFps": {
            "title": "GIF images per second",
            "minimum": 5,
            "maximum": 25,
            "type": "integer",
            "description": "Wanted images per second, from 5 to 25. Long animations are lowered automatically to stay under 150 images. Only used when gif is on.",
            "default": 15
          },
          "background": {
            "title": "Background",
            "pattern": "^(#[0-9A-Fa-f]{6}|transparent)$",
            "type": "string",
            "description": "Background of the PNG: a color as #RRGGBB, or transparent (default) for a PNG with an alpha channel. A GIF has no alpha: it uses white when this is transparent.",
            "default": "transparent"
          },
          "maxRows": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "At most this many rows are processed, from 1 to 1000 (default 1000). Set a small number to try your template before running a whole file.",
            "default": 1000
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}