{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reel Transcript — AI Video to Text & SRT",
    "description": "Get an Instagram Reel transcript with AI speech-to-text, even without captions. Paste reel or post links; get timestamped text, SRT/VTT subtitles for vertical video, speaker labels and RAG-ready JSONL. No login or API key. $0.010 per 1-minute reel + $0.005 per run.",
    "version": "0.1",
    "x-build-id": "DOnNSfTP7rjGD8LCh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/andronixmd~instagram-reel-transcript/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-andronixmd-instagram-reel-transcript",
        "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/andronixmd~instagram-reel-transcript/runs": {
      "post": {
        "operationId": "runs-sync-andronixmd-instagram-reel-transcript",
        "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/andronixmd~instagram-reel-transcript/run-sync": {
      "post": {
        "operationId": "run-sync-andronixmd-instagram-reel-transcript",
        "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": {
          "urls": {
            "title": "Instagram Reel URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Public Instagram Reel links, one transcript per URL. Accepted forms: instagram.com/reel/<code>, /<user>/reel/<code>, /reels/<code>, /p/<code> and /tv/<code>. Profile, story, tag and location URLs are rejected. Photo-only posts have no audio and fail without a download charge. Submit up to 1,000 URLs, or leave this list empty and fill in Dataset ID below.",
            "items": {
              "type": "string",
              "pattern": "^[Hh][Tt][Tt][Pp][Ss]://(?=[\\s\\S]{0,8184}\\s*$)(?:[A-Za-z0-9_-]+\\.)*[iI][nN][sS][tT][aA][gG][rR][aA][mM]\\.[cC][oO][mM](?::443)?/(?:(?:reels?|p|tv)|(?!share/)[A-Za-z0-9._]{1,30}/reel)/[A-Za-z0-9_-]+/?(?:[?#]\\S*)?\\s*$"
            }
          },
          "language": {
            "title": "Language hint",
            "pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
            "minLength": 2,
            "type": "string",
            "description": "Optional BCP-47 language code, for example en, ru or pt-BR, that guides recognition. Omit it for automatic language detection; an empty string is invalid. Detection and language support depend on the speech engine."
          },
          "timestamps": {
            "title": "Timestamp granularity",
            "enum": [
              "none",
              "segment",
              "word"
            ],
            "type": "string",
            "description": "Choose no timestamps, segment timestamps (subtitle-style lines) or word timestamps. Segment and word output includes SRT and VTT when valid cues are available. Subtitle profiles and RAG passages need segment or word timing. Timed lines are in the segments array (word timing in words): read the whole field (fields=segments), because dotted paths such as segments.t0 return nothing.",
            "default": "segment"
          },
          "subtitleProfile": {
            "title": "Subtitle profile and QA",
            "enum": [
              "standard",
              "short"
            ],
            "type": "string",
            "description": "Caption layout and an advisory QA report. Short video (28 characters per line, 0.5–4 s cues) suits vertical clips and is the default whenever timestamps are on and this field is empty. Requires segment or word timestamps: clear it when you choose no timestamps. Cues over the line or duration limits are split inside their segment's time range; segments keep their original times, and warnings do not stop transcription."
          },
          "diarize": {
            "title": "Speaker labels",
            "type": "boolean",
            "description": "Identify speakers (S1, S2, …). Billed at the premium per-minute rate. Whole-video labels are S1/S2; independently processed chunks use C1_S1/C2_S1, so read speaker_scope in each result.",
            "default": false
          },
          "exportRag": {
            "title": "Export RAG passages (JSONL)",
            "type": "boolean",
            "description": "Return rag_chunks and transcript-NNN.rag.jsonl with passage text, original-video seconds, source URL and versioned document identity. Requires segment or word timestamps. Embeddings and indexing remain downstream steps.",
            "default": false
          },
          "datasetId": {
            "title": "Dataset ID",
            "pattern": "^\\s*(?:[A-Za-z0-9][A-Za-z0-9._-]{0,62}[~/])?[A-Za-z0-9-]{1,63}\\s*$",
            "type": "string",
            "description": "The example URL above is processed and charged too: remove it if you want only the dataset's items. Pick the dataset, or paste its ID, from an Instagram Reel Scraper run (for example apify/instagram-reel-scraper) to transcribe every Reel it found. The Actor reads the rows with your run's own token and processes each row's URL like a URL above, after the listed URLs. Rows without a usable URL become uncharged error items. A named dataset works as username~dataset-name."
          },
          "datasetUrlField": {
            "title": "Dataset URL field",
            "pattern": "^\\s*[\\w$#@-]+(?:\\.[\\w$#@-]+)*\\s*$",
            "maxLength": 200,
            "type": "string",
            "description": "Optional. The row field that holds the URL, for example webVideoUrl, or a dotted path such as video.url. Leave it empty to use the first accepted URL from webVideoUrl, url, postUrl, videoUrl, inputUrl, link or shortCode."
          },
          "maxItems": {
            "title": "Max dataset items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Read at most this many dataset rows, in dataset order. A run processes at most 1,000 URLs in total, counting the list above.",
            "default": 100
          },
          "skipPreviouslyProcessed": {
            "title": "Skip items processed by earlier runs",
            "type": "boolean",
            "description": "Remember every item that was delivered and charged, in a key-value store in your Apify account, and skip those items in later runs. Use it with a schedule to get only new videos or episodes. Items that failed are tried again next time. When every item was already processed, the run ends without any charge. If the store cannot be read, the run stops before any charge and the next run tries again.",
            "default": false
          },
          "memoryKey": {
            "title": "Memory name",
            "pattern": "^\\s*[A-Za-z0-9](?:[A-Za-z0-9-]{0,23}[A-Za-z0-9])?\\s*$",
            "type": "string",
            "description": "Optional. Keeps a separate memory for this schedule, for example my-weekly-podcasts. The store is named polyglot-processed-instagram--<name>, and other Actors never share it; without a name every run of this Actor shares polyglot-processed-instagram. Delete the store in Apify Console (Storage, Key-value stores) to start over. Used only with the option above."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}