Developer docs

Generate aperiodic monotile geometry from one JSON request.

The API accepts canonical geometry masks and returns job artifacts: compact SVG for design tools, CSV/JSON for instancing, and mesh formats for 3D workflows.

Endpoint

POST /v1/patch

Create a deterministic patch job from a mask and output formats. The backend assumes an infinite aperiodic monotile tiling, clips it to your requested shape, and chooses the atlas/core depth automatically.

curl -X POST https://api.aperiodicgenerator.com/v1/patch \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: demo-001" \
  -d '{
    "mask": {"type": "circle", "radius": 50},
    "formats": ["svg", "png"],
    "png_width_px": 1200,
    "png_height_px": 1200
  }'

Supported masks

Shape-first requests for practical design work.

Shape sizes are in canonical units. Masks are centered automatically, so the request only needs the shape type and dimensions.

Circle

{"type":"circle","radius":50}

Rectangle

{"type":"rectangle","width":90,"height":40}

Triangle

{"type":"triangle","side_length":50}

Square

{"type":"square","half_side":6.25}

Hexagon

{"type":"regular_hexagon","circumradius":50}

Rounded rectangle

{"type":"rounded_rect","width":90,"height":40,"corner_radius":5}

Boundary behavior

Default to a fully tiled clipped panel.

The default launch behavior is clip: every tile that reaches the mask boundary is trimmed exactly to the requested outline, so the output reads as a crop from a fully tiled infinite plane.

Clipped edge tiles

Trims edge tiles to the mask so the exported outline lands exactly where you asked.

Whole-tile modes

Whole-tile modes can remain internal or advanced. Most users should not need to think about them.

Future polygons

Arbitrary polygons and monotile-shaped masks are feasible, but they should ship with validation and simple examples.

Color and labels

White tiles and black strokes by default. Labels when you want control.

Each emitted tile already carries a label such as Gamma or Psi. That makes label-driven palettes possible: color one tile class, hide another, or make only one class opaque.

Default

White fill, black stroke, fully opaque. Good for CAD import, surface studies, and clean previews.

Deterministic palette

Current option: stable per-tile colors generated from tile IDs. Useful for debugging and visual variety.

Palette by label

Planned option: assign fill, stroke, and opacity by tile label, with * as the default fallback.

{
  "style": {
    "fill": "#ffffff",
    "stroke": "#000000",
    "palette_by_label": {
      "Gamma": {"fill": "#ff6600", "opacity": 1},
      "Psi": {"fill": "#3366ff", "opacity": 0.25},
      "*": {"fill": "#ffffff", "opacity": 1}
    }
  }
}

Outputs

Choose preview images, vectors, data, or 3D scene files.

JPG / PNG

Hosted raster previews. Render includes CairoSVG and Pillow, so users can request image files directly from the API.

SVG / CSV / JSON

SVG for design tools; CSV/JSON when your own pipeline needs tile IDs, labels, and transforms.

GLB

Interactive 3D patch: one named tile node per tile, with fill and stroke geometry. Best for Blender, game engines, Three.js, and realtime scenes where tiles need to move, change color, or respond independently.

STL

Physical mesh output. Best when the tiling is treated as one locked panel or printable surface.

STL_ZIP / OBJ_ZIP

Independent-tile exports: one movable object/file per tile, clearly separate from whole-panel mesh output.

instance_json

Lightweight transform manifest for custom importers, USD/Houdini workflows, and scripts that instantiate tiles themselves.

Capabilities

What paid access unlocks today.

Use this section to quickly compare free previews, Solo, and Commercial access.

Free previews

Small preview patches with raster outputs only: JPG, JPEG, or PNG.

Solo

$10/month or $79 lifetime for one-person access to production exporters: SVG, PNG, JPG, CSV, JSON, STL, GLB, STL_ZIP, OBJ_ZIP, and instance_json.

Commercial

$39/month or $399 lifetime for commercial client and business use, with production jobs up to 500,000 retained tiles.

Queue and downloads

Jobs return queue status, position, and estimated wait. Completed artifacts use fixed server-side signed download URLs.

Developers can also call GET /v1/capabilities.

Job lifecycle

Poll once, then fetch signed URLs.

The patch endpoint returns a `job_id`. Poll `GET /v1/jobs/{job_id}` until the job is complete, then call `/v1/jobs/{job_id}/urls` to get signed download URLs for the generated artifacts.

GET /v1/jobs/{job_id}
GET /v1/jobs/{job_id}/urls
GET /v1/downloads/{job_id}/{filename}?exp=...&sig=...

Outputs & ownership

You own your pipeline; tiling facts stay facts.

Plain geometry snapshots — uncolored coordinates, repeatable substitution outputs, CSV rows of affine transforms — are closer to encyclopedic mathematics than expressive authorship on their own, much like plotting a Cartesian grid or hex lattice.

Company stance: we do not assert ownership or exclusive licensed rights simply because you exported a patch via the API. Your protectable creativity begins wherever you add substantive design choices: art direction, materials, shading, composites, narrative, branding, UI, tools, games, textiles, apparel, signage, motion, typography, palettes — integration work that goes beyond raw coordinates.

Access model

Solo · Commercial · Free previews.

Free keys stay constrained to small preview patches and JPG/PNG raster previews. Paid checkout grants Solo or Commercial keys for production exporters.

Report a bug

If you saw an error, this form auto-attaches the last request_id we returned. Add anything that would help us reproduce it.