{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Slideshow Downloader",
    "description": "Save public TikTok slideshow photos with custom filenames, labels, SHA-256 checksums and an archive manifest. This independent Actor is not affiliated with, associated with, or endorsed by TikTok.",
    "version": "0.2",
    "x-build-id": "rSaLycsqac0fGygQk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~tiktok-slideshow-downloader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-tiktok-slideshow-downloader",
        "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/khadinakbar~tiktok-slideshow-downloader/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-tiktok-slideshow-downloader",
        "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/khadinakbar~tiktok-slideshow-downloader/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-tiktok-slideshow-downloader",
        "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": {
          "slideshowUrls": {
            "title": "TikTok slideshow URLs",
            "maxItems": 500,
            "type": "array",
            "description": "Paste public TikTok photo-post links, short-share links, legacy mobile links or numeric post IDs. For per-post campaign labels, use Labeled posts. Videos are detected and skipped.",
            "items": {
              "type": "string"
            }
          },
          "maxSlideshows": {
            "title": "Max slideshows",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Process up to this many distinct posts, from 1 to 500; default 10. Duplicate IDs are processed once. Provider budgets, photo limits and the run deadline may stop a larger job early; check the run summary.",
            "default": 10
          },
          "maxPhotos": {
            "title": "Max photos per slideshow",
            "minimum": 1,
            "maximum": 35,
            "type": "integer",
            "description": "Maximum photos returned per post. Defaults to 35; range 1–35. Later slides are omitted. Each delivered row is one photo event; totalPhotoCount records source slides before this cap.",
            "default": 35
          },
          "saveFiles": {
            "title": "Save image files",
            "type": "boolean",
            "description": "When true, store each slide in the key-value store and return downloadUrl. Defaults to true. When false, return the source CDN URL only. CDN links expire, so leave this on for a durable file.",
            "default": true
          },
          "maxItems": {
            "title": "Total photo limit",
            "minimum": 1,
            "maximum": 17500,
            "type": "integer",
            "description": "Stop after this many photos across all posts, from 1 to 17500. Omit to use the per-post and post-count limits. Reaching this configured selection limit completes the selected job without looking up later posts."
          },
          "fileNamePattern": {
            "title": "Image filename pattern",
            "maxLength": 160,
            "type": "string",
            "description": "Name saved images using {postId}, {photoIndex} and {extension}. Paths are not allowed. A unique post and slide suffix is added when needed; characters outside letters, numbers, dot, underscore and hyphen become underscores.",
            "default": "{postId}-photo-{photoIndex}.{extension}"
          },
          "postRequests": {
            "title": "Labeled posts",
            "maxItems": 500,
            "type": "array",
            "description": "Optionally attach a small campaign or archive label object to each post. Each delivered photo includes that userData and its original input position. Duplicate references keep the first labels. Can be used instead of the plain URL list.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "Post link or ID",
                  "type": "string",
                  "editor": "textfield",
                  "description": "Enter a public TikTok photo-post URL or numeric post ID."
                },
                "userData": {
                  "title": "Labels",
                  "type": "object",
                  "editor": "json",
                  "description": "Optional JSON labels, up to 4096 bytes per post."
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "connectionMode": {
            "title": "Connection mode",
            "enum": [
              "automatic",
              "extra-recovery"
            ],
            "type": "string",
            "description": "Use automatic for direct public-page access with connection recovery. Extra recovery starts with metered proxy access and can cost more.",
            "default": "automatic"
          },
          "maxLookupCostUsd": {
            "title": "Recovery budget (USD)",
            "minimum": 0.001,
            "maximum": 0.12,
            "type": "number",
            "description": "Limit the reserved cost of paid connection recovery. Compute, file transfer and storage are additional. Lower budgets can stop recovery before all posts finish.",
            "default": 0.12
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}