{
  "openapi": "3.0.1",
  "info": {
    "title": "Office Documents to Markdown (DOCX, PPTX, XLSX)",
    "description": "Give it DOCX, PPTX, XLSX (and ODT, ODP, ODS) URLs, get clean Markdown, plain text, tables as JSON and metadata for each one, ready for LLM and RAG pipelines. Slides with speaker notes, one table per sheet. No OCR. You pay only for documents that were converted.",
    "version": "0.1",
    "x-build-id": "nTTlPK5DFl2mC4dzx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/far003~office-docs-markdown/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-far003-office-docs-markdown",
        "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/far003~office-docs-markdown/runs": {
      "post": {
        "operationId": "runs-sync-far003-office-docs-markdown",
        "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/far003~office-docs-markdown/run-sync": {
      "post": {
        "operationId": "run-sync-far003-office-docs-markdown",
        "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": "Document URLs",
            "minItems": 1,
            "type": "array",
            "description": "Addresses (http or https) of Word, PowerPoint or Excel files (DOCX, PPTX, XLSX) or OpenDocument files (ODT, ODP, ODS). One record per address. The type is recognised from the file itself, not from the extension. Addresses that are not usable web addresses, or that point to private/local networks, get an \"invalid\" record (free), not a run error. Credentials written inside a URL are removed and never used.",
            "items": {
              "type": "string"
            }
          },
          "outputFormats": {
            "title": "What to deliver",
            "type": "array",
            "description": "\"markdown\" and \"text\" are the document body; \"tables\" adds every table as JSON (rows and cells); \"slides\" adds one object per slide with its notes (PPTX/ODP). Choose fewer to keep the records small. All four by default.",
            "items": {
              "type": "string",
              "enum": [
                "markdown",
                "text",
                "tables",
                "slides"
              ],
              "enumTitles": [
                "Markdown",
                "Plain text",
                "Tables as JSON",
                "Slides as JSON"
              ]
            },
            "default": [
              "markdown",
              "text",
              "tables",
              "slides"
            ]
          },
          "maxRowsPerSheet": {
            "title": "Maximum rows per sheet",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Spreadsheets (XLSX, ODS): at most this many non-empty rows of each sheet are converted; the record says how many rows the sheet has and that it was cut (truncated, sheets[]). Empty rows and empty leading columns are dropped. Up to 500 columns are read. On a very big sheet the memory of the run can cut earlier; the record says so.",
            "default": 1000
          },
          "includeHiddenSheets": {
            "title": "Include hidden sheets",
            "type": "boolean",
            "description": "By default hidden sheets are skipped (and the warnings say so). Turn on to convert them too.",
            "default": false
          },
          "includeSpeakerNotes": {
            "title": "Include speaker notes",
            "type": "boolean",
            "description": "Presentations (PPTX, ODP): add the speaker notes of each slide to the Markdown, and to slides[].notes.",
            "default": true
          },
          "maxFileMegabytes": {
            "title": "Maximum file size (MB)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Larger files are not read (free, status too_large). The download is stopped as soon as the limit is passed. A document is also refused, for safety, when it unpacks to far more than it should (zip bombs).",
            "default": 50
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Check the robots.txt of the site every document (and every redirect) comes from. Documents it forbids are not downloaded (free, status blocked).",
            "default": true
          },
          "requestsPerSecond": {
            "title": "Requests per second, per host",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Politeness limit for each host. A Crawl-delay in robots.txt can only slow it down.",
            "default": 2
          },
          "maxConcurrency": {
            "title": "Documents processed at the same time",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Each document is held in memory while it is converted. With large files, lower this or raise the memory of the run.",
            "default": 3
          },
          "timeoutSecs": {
            "title": "Time limit per document (seconds)",
            "minimum": 5,
            "maximum": 600,
            "type": "integer",
            "description": "Download plus conversion. Also the longest silence allowed while a file arrives.",
            "default": 60
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}