# OpenSCAD Print Validation

> OpenSCAD Print Validation is a paid API for AI agents from print.api.williamrobinson.dev, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-15).

Renders a self-contained OpenSCAD model and checks whether it fits within slicer bounds for FDM 3D printing

## Facts

- Endpoint: POST https://print.api.williamrobinson.dev/v1/print/validate
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/openscad-print-validation-4f398586
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yKZwSRvzvJlhgCReGB8yZ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability openscad-print-validation-4f398586 -d '<json body>'
```

Example prompt: Can you validate this OpenSCAD model for FDM printing with PLA on a 0.4mm nozzle — here's the source code — and check if it fits within a 220x220x250mm build volume?

## When to prefer this

Use this endpoint when you need to programmatically verify that a self-contained OpenSCAD model is geometrically valid and physically fits within a target FDM printer's build volume before slicing or ordering a print. Prefer this over generic STL validators when your source is parametric OpenSCAD code and you want to test with specific parameter overrides and profile-specific constraints.

## Known failure modes

- OpenSCAD source exceeds 16 KiB limit — rejected with size error
- External imports in OpenSCAD source — prohibited and rejected
- Model bounding box exceeds specified maxSizeMm — validation fails with size violation
- Invalid parameter overrides (derived expressions, reserved names, >64 properties) — rejected
- OpenSCAD syntax errors causing render failure — error returned
- Unsupported profile enum value — rejected with schema error

## How this service works

Render a self-contained OpenSCAD model and perform bounded slicer checks

## Output

Returns a structured validation result indicating whether the rendered OpenSCAD model passes bounded slicer checks, including whether the model fits within the specified build volume dimensions for the chosen FDM profile (fdm-pla-0.4 or fdm-petg-0.4). May include bounding box data, render status, and any constraint violations.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "source": {
   "type": "string",
   "maxLength": 16384,
   "minLength": 1,
   "description": "Self-contained OpenSCAD, interpreted in millimetres; maximum 16 KiB UTF-8 before and after overrides. External imports are prohibited."
  },
  "profile": {
   "enum": [
    "fdm-pla-0.4",
    "fdm-petg-0.4"
   ],
   "type": "string",
   "default": "fdm-pla-0.4"
  },
  "maxSizeMm": {
   "type": "array",
   "items": {
    "type": "number",
    "maximum": 1000,
    "exclusiveMinimum": 0
   },
   "default": [
    220,
    220,
    250
   ],
   "maxItems": 3,
   "minItems": 3
  },
  "parameters": {
   "type": "object",
   "default": {},
   "description": "Overrides must name unique top-level scalar literal assignments, not derived expressions or reserved names.",
   "maxProperties": 64,
   "propertyNames": {
    "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$"
   },
   "additionalProperties": {
    "anyOf": [
     {
      "type": "string",
      "maxLength": 512,
      "description": "Maximum 512 UTF-8 bytes."
     },
     {
      "type": "number",
      "maximum": 1000000,
      "minimum": -1000000
     },
     {
      "type": "boolean"
     }
    ]
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/openscad-print-validation-4f398586/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from print.api.williamrobinson.dev](https://www.zero.xyz/host/print.api.williamrobinson.dev/llms.txt)
