{
  "openapi": "3.0.1",
  "info": {
    "title": "Manual Remake: Confusing Manual to Clear Printable PDF",
    "description": "Upload a confusing manual (PDF or photos) and get a clear English print PDF: plain steps, parts list, warnings, flagged gaps, a checklist, and cleaned pictures numbered to match. Try the free sample with no key and no charge. Your own remake uses your LLM key.",
    "version": "0.1",
    "x-build-id": "Gap2fY2N6FOHaZKmB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pandadad0214~manual-remake/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pandadad0214-manual-remake",
        "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/pandadad0214~manual-remake/runs": {
      "post": {
        "operationId": "runs-sync-pandadad0214-manual-remake",
        "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/pandadad0214~manual-remake/run-sync": {
      "post": {
        "operationId": "run-sync-pandadad0214-manual-remake",
        "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": {
          "sampleMode": {
            "title": "Free sample (no upload, no key, no charge)",
            "type": "boolean",
            "description": "Turn on to get a free sample PDF made from a short fictional demo manual that ships with the Actor (no model key needed, nothing charged). Your own files are not processed while this is on. The sample also runs automatically when no files or links are given.",
            "default": false
          },
          "files": {
            "title": "Manual files",
            "type": "array",
            "description": "Upload the manual: one PDF, several PDFs, or photos of the pages (JPEG, PNG, WebP). Up to 15 pages or photos per run in total (PDF pages + extra photos). Over 15, the run stops with a message and nothing is charged. Leave empty (and links empty) for the free sample."
          },
          "fileUrls": {
            "title": "Manual links",
            "type": "array",
            "description": "Or paste direct public links (or share links) to the PDF or photos. Google Drive and Dropbox share links are converted to direct downloads. Up to 50 MB per file. Private Apify storage links do not work (the Actor runs with limited permissions): use the upload box instead.",
            "items": {
              "type": "string"
            }
          },
          "includeImages": {
            "title": "Reuse and clean pictures (Standard edition)",
            "type": "boolean",
            "description": "On (default): pictures from your upload are straightened, cropped and cleaned, and get red numbered markers that match the rewritten steps (Standard edition). Off: text-only remake (Text-only edition). If no usable pictures are found, the run is automatically Text-only and priced as Text-only.",
            "default": true
          },
          "checklistMode": {
            "title": "Add a checklist page",
            "type": "boolean",
            "description": "Adds tick boxes to every step and a one-page checklist at the end. Default: on.",
            "default": true
          },
          "title": {
            "title": "Title override",
            "type": "string",
            "description": "Optional. Title for the remade manual. Leave empty to use the product name found in the source."
          },
          "paperSize": {
            "title": "Paper size",
            "enum": [
              "letter",
              "a4"
            ],
            "type": "string",
            "description": "Page size of the print PDF.",
            "default": "letter"
          },
          "llmApiKey": {
            "title": "LLM API key",
            "type": "string",
            "description": "Required to remake your own manual (not needed for the free sample). Your own OpenAI API key, or a key for another OpenAI-compatible provider with the base URL below. The rewrite runs on your key, so model usage is billed by your provider, not by this Actor. The key is stored encrypted by Apify and is never logged or saved in the output."
          },
          "llmModel": {
            "title": "LLM model",
            "type": "string",
            "description": "Model name. Must accept pictures when you upload photos or scans (gpt-4o-mini and gpt-4o do). Default: gpt-4o-mini.",
            "default": "gpt-4o-mini"
          },
          "llmBaseUrl": {
            "title": "LLM base URL",
            "type": "string",
            "description": "Optional. Leave empty for OpenAI (https://api.openai.com/v1). For another OpenAI-compatible provider, paste its https base URL ending in /v1."
          },
          "pdfPassword": {
            "title": "PDF password",
            "type": "string",
            "description": "Optional. Only for password-protected PDFs you are allowed to open."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}