{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Analytics: Hook & Creative Analyzer",
    "description": "Turn your TikTok video performance export (CSV/JSON) into hook and format analysis, top and weak videos versus your baseline, creative briefs and a two-week test plan. Rule-based, no AI API, no scraping. Display API token optional. Free demo mode.",
    "version": "0.1",
    "x-build-id": "Ha8243jKcbEruBGEG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/privatex~tiktok-creative-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-privatex-tiktok-creative-intelligence",
        "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/privatex~tiktok-creative-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-privatex-tiktok-creative-intelligence",
        "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/privatex~tiktok-creative-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-privatex-tiktok-creative-intelligence",
        "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": {
          "demoMode": {
            "title": "Demo mode (synthetic data)",
            "type": "boolean",
            "description": "Pre-ticked so the Actor works on first click with FABRICATED example data (every output row is labelled SYNTHETIC DEMO and is never charged). It is ignored as soon as you provide your own data or token, so you can leave it ticked."
          },
          "dataCsv": {
            "title": "Performance export (CSV text)",
            "type": "string",
            "description": "Paste the CSV from TikTok Studio analytics (or any table) with columns like Video title, Post time, Total views, Total likes, Total comments, Total shares, Duration. Column names are matched flexibly."
          },
          "dataUrl": {
            "title": "Performance export URL",
            "type": "string",
            "description": "URL of a CSV or JSON file with your post performance (e.g. from your own storage)."
          },
          "dataRows": {
            "title": "Performance rows (JSON)",
            "type": "array",
            "description": "Alternative to CSV: array of row objects with the same columns.",
            "default": []
          },
          "accessToken": {
            "title": "TikTok Display API access token (optional)",
            "type": "string",
            "description": "Optional. A user access token with the video.list scope, obtained through TikTok Login Kit by the account owner. Returns only that user's own videos. Used only for requests to open.tiktokapis.com, stored encrypted, never written to output. NOT VERIFIED WITH LIVE CREDENTIALS: this mode has only been tested with synthetic API-shaped responses, never with a real OAuth token. The export (CSV/JSON) path is the tested one."
          },
          "accountName": {
            "title": "Account label",
            "type": "string",
            "description": "Name shown in the report."
          },
          "additionalAccounts": {
            "title": "Additional accounts (your own data)",
            "type": "array",
            "description": "Each item: {\"name\": \"Brand B\", \"csv\": \"<csv text>\"} or {\"name\": \"...\", \"url\": \"<csv/json url>\"}. Analysed and compared using only the data you give here.",
            "default": []
          },
          "maxPosts": {
            "title": "Max posts (API mode)",
            "minimum": 10,
            "maximum": 500,
            "type": "integer",
            "description": "Most recent posts fetched through the official API.",
            "default": 100
          },
          "timezoneOffsetMinutes": {
            "title": "Timezone offset (minutes from UTC)",
            "minimum": -840,
            "maximum": 840,
            "type": "integer",
            "description": "For weekday and hour patterns. UTC+3 = 180.",
            "default": 0
          },
          "asOf": {
            "title": "Analyse as of (ISO date-time)",
            "type": "string",
            "description": "Reference time. Empty = now. Set when analysing an older export."
          },
          "minAgeDays": {
            "title": "Ignore posts younger than (days)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Fresh posts are still collecting views and are not scored. Platform insight data can lag up to 48h.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}