{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Video Downloader - Short Links & Multi-Cloud Storage",
    "description": "$3 per 1,000 TikTok videos, or $0.003 each. Downloads from post URLs, photo posts, and short links, for content teams, compliance teams, and ML pipelines. Re-hosts to Apify, AWS S3, Google Cloud, DigitalOcean, or Azure storage.",
    "version": "0.0",
    "x-build-id": "FPNpdHcfoqNC0kupz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epctex~tiktok-video-downloader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epctex-tiktok-video-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/epctex~tiktok-video-downloader/runs": {
      "post": {
        "operationId": "runs-sync-epctex-tiktok-video-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/epctex~tiktok-video-downloader/run-sync": {
      "post": {
        "operationId": "run-sync-epctex-tiktok-video-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",
        "required": [
          "startUrls",
          "storageType"
        ],
        "properties": {
          "startUrls": {
            "title": "TikTok video URLs",
            "type": "array",
            "description": "List of TikTok video URLs to download. Both canonical URLs (https://www.tiktok.com/@user/video/{id}) and short links (https://vt.tiktok.com/..., https://vm.tiktok.com/...) are accepted — they are resolved for you, so there is no need to expand them yourself.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Optional two-letter country code (for example US or DE). Selects which TikTok CDN edge the video is fetched from, which can help with geo-restricted videos."
          },
          "customMapFunction": {
            "title": "Custom map function",
            "type": "string",
            "description": "Function that takes each of the objects as argument and returns data that will be mapped by the function itself. This function is not intended for filtering, please don't use it for filtering purposes or you will get banned automatically. Must be a single function, e.g. (object) => { return {...object} }. Leave empty if you do not need to transform the output - an unusable function is ignored and the original items are saved instead."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of items to output. Leave empty for no limit."
          },
          "storageType": {
            "title": "Storage type",
            "enum": [
              "apify",
              "gcp",
              "aws",
              "digitalocean",
              "azure"
            ],
            "type": "string",
            "description": "Target storage provider. Fill the matching configuration section below.",
            "default": "apify"
          },
          "s3AccessKeyId": {
            "title": "S3 Access Key ID",
            "type": "string",
            "description": "Fill in the following fields if you want to upload the video to an S3 bucket"
          },
          "s3SecretAccessKey": {
            "title": "S3 Secret Access Key",
            "type": "string",
            "description": "Fill in the following fields if you want to upload the video to an S3 bucket"
          },
          "s3Bucket": {
            "title": "S3 Bucket",
            "type": "string",
            "description": "Fill in the following fields if you want to upload the video to an S3 bucket"
          },
          "s3Region": {
            "title": "S3 Region",
            "type": "string",
            "description": "Fill in the following fields if you want to upload the video to an S3 bucket"
          },
          "s3Path": {
            "title": "S3 Path (optional)",
            "type": "string",
            "description": "Optional folder path in the S3 bucket."
          },
          "googleCloudProjectId": {
            "title": "Google Cloud Project ID",
            "type": "string",
            "description": "GCP project ID."
          },
          "googleCloudServiceKeyJson": {
            "title": "Google Cloud Service Key JSON",
            "type": "object",
            "description": "Service account credentials JSON."
          },
          "googleCloudBucketName": {
            "title": "Google Cloud Bucket Name",
            "type": "string",
            "description": "Target Google Cloud Storage bucket name."
          },
          "googleCloudPath": {
            "title": "Google Cloud Path (optional)",
            "type": "string",
            "description": "Optional folder path in the GCS bucket."
          },
          "digitalOceanAccessKeyId": {
            "title": "DigitalOcean Access Key ID",
            "type": "string",
            "description": "DigitalOcean Spaces access key ID."
          },
          "digitalOceanSecretAccessKey": {
            "title": "DigitalOcean Secret Access Key",
            "type": "string",
            "description": "DigitalOcean Spaces secret access key."
          },
          "digitalOceanRegion": {
            "title": "DigitalOcean Region",
            "type": "string",
            "description": "DigitalOcean Spaces region (e.g. nyc3)."
          },
          "digitalOceanBucketName": {
            "title": "DigitalOcean Bucket Name",
            "type": "string",
            "description": "DigitalOcean Spaces bucket name."
          },
          "digitalOceanEndpoint": {
            "title": "DigitalOcean Endpoint (optional)",
            "type": "string",
            "description": "Optional Spaces endpoint URL."
          },
          "digitalOceanAcl": {
            "title": "DigitalOcean ACL (optional)",
            "type": "string",
            "description": "Optional ACL value (defaults to private)."
          },
          "digitalOceanPath": {
            "title": "DigitalOcean Path (optional)",
            "type": "string",
            "description": "Optional folder path in the Spaces bucket."
          },
          "azureAccountName": {
            "title": "Azure Account Name",
            "type": "string",
            "description": "Azure storage account name."
          },
          "azureAccountKey": {
            "title": "Azure Account Key",
            "type": "string",
            "description": "Azure storage account key."
          },
          "azureContainerName": {
            "title": "Azure Container Name",
            "type": "string",
            "description": "Azure container name."
          },
          "azurePath": {
            "title": "Azure Path (optional)",
            "type": "string",
            "description": "Optional folder path in the Azure container."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}