model, listed under 3D in the files library, and a GLB opens in a 3D viewer in the chat.
A generated mesh is never a spec: its size is whatever the model guessed. Anything that must fit, print or mate with another part is built.
Generate a model
generate_3d_model takes prompt or images (1–4 fil_ ids or https URLs), and optionally model, texture (default true) and rig (default false, a description only). Like generate_video, it does not block: the agent gets the job’s handle in the same turn and is woken with the GLB’s fil_ when it finishes. It asks before it runs by default, because it spends.
Build a model
build_3d runs a script in a clean Python process on the agent’s computer, then checks the result and renders it. The toolchain installs on first use (about 20 seconds and 1.9 GB of disk; an agent’s computer has room for it).
cad— the script assignsresult, a build123d shape, in millimetres. The tool reports whether it is a valid solid, whether it is watertight, its bounding box, volume and triangle count. STEP, STL and 3MF are published only when it is a valid, watertight solid, so a broken part never ships.blender— the script builds the scene withbpy, in metres, Z up. Use it for scenes, materials and renders, or to clean up a generated GLB. An open mesh still publishes as GLB, blend or OBJ, but never as STL or 3MF.
ok, the published files, the previews (which the agent also sees as images, so it can look at what it built), the checks, and compute_seconds. A script that raises answers ok: false with error: { message, line } — not a tool error — so the agent reads it and fixes the line. The full fields are in the API reference.
For video
Combine the two withgenerate_video: get the object with either tool, render one keyframe per shot with build_3d (engine: "blender", render.views), and animate each keyframe by passing it as image_urls. Every shot shows the same object because it is the same model. A plain turntable is cheaper rendered straight from Blender.
Pricing
A generated model is one charge for the finished file, taken when the job completes. Render time, file size and polygon count leave that figure unchanged. A failed job is free.
GET /v1/media/models?kind=mesh lists each option as prices[].micro_usd. See Pricing.