{
  "openapi": "3.0.1",
  "info": {
    "title": "Crossword & Word Search Maker (from your word list)",
    "description": "Word search, crossword (your clues) or word fill-in from your own word lists. Each grid is checked: every word once, no stray words. JSON, SVG, printable PDF or a 6x9 / 8.5x11 paperback book interior, with answer keys.",
    "version": "0.1",
    "x-build-id": "Qg7MXyZplMQRZxCWO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ars-technis~crossword-word-search-maker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ars-technis-crossword-word-search-maker",
        "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/ars-technis~crossword-word-search-maker/runs": {
      "post": {
        "operationId": "runs-sync-ars-technis-crossword-word-search-maker",
        "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/ars-technis~crossword-word-search-maker/run-sync": {
      "post": {
        "operationId": "run-sync-ars-technis-crossword-word-search-maker",
        "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": {
          "puzzleType": {
            "title": "Puzzle type",
            "enum": [
              "word-search",
              "crossword",
              "fill-in"
            ],
            "type": "string",
            "description": "word-search = find the listed words in a letter grid. crossword = a numbered crossword built from your words, with your clues. fill-in = a crossword grid with no clues: the solver fits the listed words (grouped by length) into it.",
            "default": "word-search"
          },
          "words": {
            "title": "Words",
            "type": "array",
            "description": "One word or phrase per line (at least 2; up to 60 for word search, 40 for crossword and fill-in; each word 2-30 letters, 3+ for word search; no word twice). Spaces, hyphens, apostrophes and periods are dropped in the grid. Letters: Latin only, accented and extended ones included (é, ü, ł, ř, ş, ğ, œ; ß is written SS in the grid, as in German crosswords); digits, other scripts and emoji are refused. A word inside another listed word (Kansas in Arkansas) is allowed: it gets its own place and also shows inside the longer word. For a crossword, write each line as 'word: clue' (clue up to 150 characters; Latin, Greek or Cyrillic text).",
            "items": {
              "type": "string"
            }
          },
          "title": {
            "title": "Title",
            "type": "string",
            "description": "Printed above the puzzle, e.g. 'The Solar System'. Latin, Greek or Cyrillic text, up to 80 characters."
          },
          "wordLists": {
            "title": "More word lists (batch)",
            "type": "array",
            "description": "Optional. Several lists in one run, one puzzle each: [{\"title\": \"Fruit\", \"words\": [\"apple\", \"pear\"]}, ...]. Used in addition to 'Words'; the same word rules apply. A list that breaks a rule or cannot be built is skipped, named in OUTPUT.problems and not charged; the other lists are still made."
          },
          "versions": {
            "title": "Versions per list",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many different puzzles to make from each list (for example one per student). You are charged per delivered puzzle.",
            "default": 1
          },
          "difficulty": {
            "title": "Word search difficulty",
            "enum": [
              "easy",
              "medium",
              "hard"
            ],
            "type": "string",
            "description": "easy = words run right or down only. medium = also diagonally down-right and up-right. hard = all 8 directions, including backwards.",
            "default": "medium"
          },
          "gridSize": {
            "title": "Grid size",
            "minimum": 5,
            "maximum": 30,
            "type": "integer",
            "description": "Word search: the width and height of the grid (5 to 30). Crossword and fill-in: the largest allowed width or height (at most 22 with the 6x9 book page size, so clue numbers stay at 6 pt or more). Leave empty to size automatically."
          },
          "includeSolution": {
            "title": "Include answer keys",
            "type": "boolean",
            "description": "Add word positions (word search) or the filled grid and answers (crossword), and answer pages in the PDF.",
            "default": true
          },
          "svg": {
            "title": "SVG images",
            "type": "boolean",
            "description": "Add a ready-to-embed SVG of each puzzle (and of its answer key).",
            "default": true
          },
          "pdf": {
            "title": "Printable PDF",
            "type": "boolean",
            "description": "Build one PDF with every puzzle on its own page (grid plus word list or clues) and the answer keys at the back. Saved to the run's key-value store as puzzles.pdf.",
            "default": true
          },
          "pageSize": {
            "title": "PDF page size or book interior",
            "enum": [
              "letter",
              "a4",
              "book-8.5x11",
              "book-6x9"
            ],
            "type": "string",
            "description": "Paper size of the PDF, or a paperback book interior with no bleed at 6x9 in or 8.5x11 in: a title page, one puzzle per page (long clue lists flow on), answer keys at the back, page numbers, embedded fonts, an even page count, and an inside margin set from the page count by KDP's paperback table. KDP paperbacks need at least 24 pages. You add your own cover.",
            "default": "letter"
          },
          "bookTitle": {
            "title": "Book title",
            "type": "string",
            "description": "Book interiors only: the title on the title page. Default: 'Word Search Puzzles', 'Crossword Puzzles' or 'Word Fill-In Puzzles'."
          },
          "seed": {
            "title": "Random seed",
            "type": "integer",
            "description": "Optional. The same seed and input give the same puzzles again. Leave empty for fresh layouts every run."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}