Skip to main content
POST
Generate a 3D model from text or an image
Produces a mesh from a text prompt, a reference image, or both, and returns it on the same request. At least one of prompt and image_url must be present. A prompt longer than 5000 characters is refused.

Authorizations

Authorization
string
header
required

API key in format: Bearer inf_***

Body

application/json
model
string
required

Slug of the 3D model to run, as listed by GET /v1/models. Must be an object_3d-modality model served by FAL; anything else is rejected with 400.

prompt
string

Text prompt for text-to-3D. Either prompt (non-blank) or image_url must be supplied; both may be. Rejected above 5000 characters.

Maximum string length: 5000
Example:

"A low-poly wooden chair"

image_url
string

Reference image for image-to-3D, as a URL. Forwarded onto the model's own image input field when it declares one, and dropped otherwise. Either prompt or image_url must be supplied.

Example:

"https://example.com/reference.png"

mesh_url
string

An existing mesh to transform, as a URL. This is what the 3D-to-3D models take — rigging, remesh, retexture, segment. Forwarded onto whichever field the model's own schema declares for it (mesh_url on hi3d and tripo, model_url on meshy). A model that transforms a mesh REQUIRES this and is refused without it; a model that generates one refuses it.

Example:

"https://storage.googleapis.com/…/chair.glb"

seed
number

Seed forwarded onto the model's own seed input field when it declares one, and dropped otherwise. Reproducibility therefore depends on the model exposing a seed.

Response

The generated mesh. data normally holds a single artifact.

created
integer
required

Unix timestamp, in seconds, of when the result was produced.

Example:

1713204900

data
object[]
required

One entry per produced mesh, in the order the provider returned them.

credits_used
number
required

Credits actually settled for this request (1 credit = $0.01). Settled against measured compute for per_second models, clamped to the amount reserved before the call, so it is never larger than the hold. May be fractional.

Example:

25