{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/3dpack-ing/json-schema/3dpack-ing-pack-request-schema.json",
  "title": "PackRequest",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/3dpack-ing-openapi.json#/components/schemas/PackRequest",
  "type": "object",
  "required": [
    "prompt"
  ],
  "properties": {
    "prompt": {
      "type": "string",
      "maxLength": 4000,
      "description": "What you are shipping, in plain English. Include quantities, dimensions with units, and weights if known. Truncated at 4,000 characters."
    },
    "apiKey": {
      "type": "string",
      "description": "Your key, or the string \"test\" for the shared demo account, which answers everything except item coordinates. May also be sent as an X-API-Key header."
    },
    "username": {
      "type": "string",
      "description": "The account the key belongs to. Required whenever a key is sent — a key without a username is a 400."
    },
    "speed": {
      "type": "string",
      "enum": [
        "fast",
        "normal",
        "thorough"
      ],
      "description": "How hard the solver should look for a better arrangement. Omit to let it choose. Use `fast` for a feasibility check, `thorough` when packing quality matters."
    },
    "stability": {
      "type": "integer",
      "minimum": 75,
      "maximum": 100,
      "default": 75,
      "description": "How much of a box must rest on what is underneath it, as a percentage of its footprint. 75 is the standard rule and packs the most; 100 requires every stacked box to sit fully on the boxes below — steadier, but fewer pieces fit. Values outside 75-100 are ignored."
    }
  }
}