---
title: "Build a thing in the 3D builder from steps, and link it"
method: POST
path: "/api/build"
---

# Build a thing in the 3D builder from steps, and link it

`POST /api/build`

## Request

- Base URL: `https://jabbertoon.com`
- URL: `https://jabbertoon.com/api/build`
- Auth: none required

Builds anything (a character, an animal, a car, a house) in Jabbertoon's 3D builder from steps, as its buttons do: spine, grow, bone (a skeleton, a bone at a time), add a ready part (leg, arm, head, wing, wheel, hat ...), set, copy, remove, look. Checks every step, says what was made (its parts and size) and gives a jabbertoon.com/editor/ link that opens it in the Studio, to change and use in a cartoon, world or game. Over MCP the answer also shows a picture of it from four sides. Steps that start {"op": "new", "kind": "move"} make a move from keys, {"op": "new", "kind": "world"} a world (a level is played to check it), and kind "game" a game seen from the side, from above or in space, or "trench", "space", "surface" or "sky" a game with depth to fly, "walk" a place to walk at real size (played on foot: told what cannot be reached). A refused step says where, why and how to fix it. export_link opens Export, free: STL/3MF to 3D print, glTF (Blender, Unity, Godot), SVG, Minecraft .schem. The steps: get_guide {"topic": "build"}, a game's {"topic": "game"}.

## Request body

- object
  - `steps` unknown[]: The steps, in order: {op: spine | grow | bone | add | set | copy | remove | look, on (a part, or a name an earlier step gave with as), ...}.
    - unknown
  - `build` object: A build to change (the build an answer gave); without it the steps start from a new spine.

## Response `200`

What build answers. ok is false when what you sent has problems; they are listed with where, says and fix.

- object
  - `ok` boolean, required
  - `url` string, required: The jabbertoon.com page the link opens, or the page that explains a refusal.
  - `link` string: The link to give the person: it opens the build in the Studio.
  - `code` string: The share code after #build= (a "1." code: docs/links/).
  - `length` integer: The link's length in characters.
  - `made` object: What was built: name, parts, drawn (a pair twice), roles (the parts as drawn, by role), legs, blocks {length, height, width}.
  - `names` object: Each name a step gave (as), and the part it names.
  - `build` object: The build the steps made (or as far as they went): send it back with more steps to change it.
  - `errors` Problem[]: The refused step or the build's problems, in order.
    - `code` string, required
    - `where` string, nullable, required
    - `says` string, required
    - `fix` string, nullable, required
    - `url` string: The code's entry on https://jabbertoon.com/docs/errors/.
    - `did_you_mean` string[]
    - `patch` object[]: RFC 6902 operations on what you sent that make the fix, given only when the fix is certain.
  - `error_count` integer: How many errors the checks found.
  - `warnings` Problem[]
    - `code` string, required
    - `where` string, nullable, required
    - `says` string, required
    - `fix` string, nullable, required
    - `url` string: The code's entry on https://jabbertoon.com/docs/errors/.
    - `did_you_mean` string[]
    - `patch` object[]: RFC 6902 operations on what you sent that make the fix, given only when the fix is certain.
  - `warning_count` integer: How many warnings the checks found.
  - `engine` Engine
    - `version` string: The block language's version.
    - `git` string: The git tree id of the engine that answered (the same on every door).
  - `notes` string[]
  - `error` Problem
    - `code` string, required
    - `where` string, nullable, required
    - `says` string, required
    - `fix` string, nullable, required
    - `url` string: The code's entry on https://jabbertoon.com/docs/errors/.
    - `did_you_mean` string[]
    - `patch` object[]: RFC 6902 operations on what you sent that make the fix, given only when the fix is certain.

## Other responses

- `4XX`: A request the server cannot use (400 bad_arguments, 404 not_found, 405, 413 too_large, 415, 503 busy or timeout: try again after Retry-After).
- `5XX`: A request the server cannot use (400 bad_arguments, 404 not_found, 405, 413 too_large, 415, 503 busy or timeout: try again after Retry-After).

---

[API](https://skmtc.dev/jabbertoon/apis/jabbertoon-tools-for-ai-assistants-and-developers.md) · [All operations](https://skmtc.dev/jabbertoon/apis/jabbertoon-tools-for-ai-assistants-and-developers/llms.txt) · [OpenAPI document](https://skmtc.dev/jabbertoon/apis/jabbertoon-tools-for-ai-assistants-and-developers/revisions/004970e97459?raw)
