{
  "openapi": "3.0.1",
  "info": {
    "title": "Kick VOD Transcription",
    "description": "Transcribe Kick.com VODs (which have no captions). Returns VOD metadata plus a searchable transcript in TXT/SRT/VTT, by channel or VOD URL. Run on a schedule to transcribe new VODs automatically.",
    "version": "0.1",
    "x-build-id": "m9pWZd8J7ZzB5BO2K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~kick-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-kick-transcript-scraper",
        "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/scrapersdelight~kick-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-kick-transcript-scraper",
        "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/scrapersdelight~kick-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-kick-transcript-scraper",
        "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": {
          "channelSlugs": {
            "title": "Channel slugs",
            "type": "array",
            "description": "Kick channel names (from kick.com/<slug>), e.g. ['xqc','trainwreckstv']. The newest VODs per channel are transcribed.",
            "items": {
              "type": "string"
            }
          },
          "vodUrls": {
            "title": "VOD URLs / IDs",
            "type": "array",
            "description": "Specific VODs — full https://kick.com/<channel>/videos/<uuid> URLs or bare VOD UUIDs. Use instead of, or alongside, channel slugs.",
            "items": {
              "type": "string"
            }
          },
          "maxVods": {
            "title": "Max VODs per channel",
            "minimum": 1,
            "type": "integer",
            "description": "How many of the newest VODs to take from each channel. Each VOD can be hours long, so keep this small unless you bound the length below. Raise for bigger batches (give the run more timeout).",
            "default": 1
          },
          "sinceDate": {
            "title": "Only VODs since (date)",
            "type": "string",
            "description": "Optional ISO date (YYYY-MM-DD). Only transcribe VODs created on or after this date."
          },
          "maxMinutesPerVod": {
            "title": "Max minutes per VOD",
            "minimum": 0,
            "type": "integer",
            "description": "Cap how much audio is pulled & transcribed per VOD (cost + time guard — Kick streams run 10+ hours, and transcription is slow). 0 = the whole VOD. Prefilled to 1 for a fast demo run; raise for longer transcripts, but increase the run timeout to match (Whisper takes roughly real-time on CPU).",
            "default": 5
          },
          "model": {
            "title": "Transcription model",
            "enum": [
              "large-v3-turbo",
              "large-v3",
              "distil-large-v3"
            ],
            "type": "string",
            "description": "faster-whisper model. Turbo is the speed/accuracy meta; large-v3 for max accuracy; distil for cheapest/fastest. (Advanced: you can also paste a Hugging Face CT2 model id.)",
            "default": "large-v3-turbo"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Spoken language code (e.g. en, es, de) or 'auto' to detect. Defaults to auto-detect.",
            "default": "auto"
          },
          "translateToEnglish": {
            "title": "Translate to English",
            "type": "boolean",
            "description": "Output an English translation instead of a same-language transcript (Whisper translate task).",
            "default": false
          },
          "transcriptFormats": {
            "title": "Transcript formats",
            "type": "array",
            "description": "Which transcript representations to include on each record. Plain text is always included.",
            "items": {
              "type": "string",
              "enum": [
                "txt",
                "srt",
                "vtt",
                "segments"
              ],
              "enumTitles": [
                "Plain text",
                "SRT subtitles",
                "VTT subtitles",
                "Timestamped segments (array)"
              ]
            },
            "default": [
              "txt"
            ]
          },
          "includeMetadataOnly": {
            "title": "Metadata only (skip transcription)",
            "type": "boolean",
            "description": "Return just VOD metadata (title, category, duration, views, URL) without transcribing — fast and cheap. Turn off to get transcripts.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode (new-VOD watcher)",
            "type": "boolean",
            "description": "Recurring watcher: diff against the prior run's seen VODs (per channel set) and output/alert ONLY newly-published VODs. Pair with an Apify Schedule to auto-transcribe new streams.",
            "default": false
          },
          "alertOnNewVod": {
            "title": "Alert on new VODs",
            "type": "boolean",
            "description": "In monitor mode, deliver an alert for each newly-published VOD via the channels below.",
            "default": true
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POST endpoint for new-VOD alert payloads (Make / Zapier / n8n / custom)."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL for formatted new-VOD cards."
          },
          "emailRecipients": {
            "title": "Email recipients",
            "type": "array",
            "description": "Email addresses for the new-VOD digest (sent via apify/send-mail).",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings for the Kick API + segment downloads. Datacenter rotation is usually enough.",
            "default": {
              "useApifyProxy": true
            }
          },
          "diagnose": {
            "title": "Diagnostic mode (dev)",
            "type": "boolean",
            "description": "Dev only. Resolves the channel's newest VOD and the HLS variants/segments without downloading audio or transcribing, then exits.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}