Skip to content
MCPBytes

One photo.A whole object.

Turn a single photo, render or sketch into a textured 3D object you can view from every side.

From 30 credits300 free credits to start

Available
  • API
  • MCP
MCP tool: create_3d_model_from_image
Interactive 3D model of an armored samurai figure, reconstructed from one picture at max quality
A3Create a 3D model from an imagea samurai figure, from one picturemax

A reconstruction your agent can hand to a viewer, an engine or the splitter.

Send one image of an object and get back a self-contained glTF binary with PBR textures, pictures of the finished model from six sides, plus a generation.json that records the exact image digest, model revision, seeds, settings and validation counts. Economy uses a roughly 120,000-face paint budget and 1K textures; high offers a configurable face target and 2K textures; max takes longer to refine high's shape for finer surface detail. Start the job, keep its id and poll. Geometry is unitless: no physical size, rigging, watertightness or print readiness is inferred from a picture.

The same picture at each quality, all real jobs. Pick an example, drag a divider to compare, and drag the model to turn it.

EconomyHighMax
One picture of a toy RC tank at economy, high and max.
Formats
.png .jpg .jpeg, up to 25 megapixels
Outputs
model.glb, model.web.glb, model_preview.png, six single views, model_views.json and generation.json
Quality
economy: about 120,000 faces, 1024 × 1024 PBR textures · high: 2048 × 2048 textures, about one million faces after decimation · max: high plus an extra geometry refinement pass for finer surface detail; takes longer
Background
Transparent PNGs are used as-is; opaque images are segmented first
Duration
Asynchronous; one-hour deadline including queueing and execution

Start with a picture.

A product photo, a render, a sketch. The background is removed for you, or left alone if it is already transparent.

Light or detailed.

Economy keeps the model light. High adds finer shape and sharper textures, at the detail you choose. Max refines the shape further for finer surface detail, and takes longer.

Keep going.

Optimize it for phones in one more step, then split it into parts.

Download the example.

Inspect the files before running your own job. No sign-in required.

  • RC tank, economy model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 1.8 MB

  • RC tank, high model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 15.8 MB

  • RC tank, max model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 15.7 MB

  • Music box, economy model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 1.8 MB

  • Music box, high model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 15.8 MB

  • Music box, max model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 16.7 MB

  • Drummer, economy model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 1.9 MB

  • Drummer, high model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 14.6 MB

  • Drummer, max model

    A file the slider shows: the job's own web copy, with every face and the full texture resolution.

    GLB · 14.9 MB

Pay by the job.

From 30 credits. A job that fails costs nothing.

Pricing details

Start free

Available now

300free credits when you sign up

  • Every MCPBytes tool, one credit balance
  • Sign in with GitHub or email, no card required
  • Each tool states its price before you run it
  • Failed API jobs cost nothing

Price per job

Create a 3D model from an image

Economy · 1024 px textures
30 credits
High · 2048 px textures
100 credits
Max · 2048 px textures
150 credits

Limits

Largest input
20 MB
Image
Up to 25 megapixels

Limits by account

Jobs at once
Free3 jobs
Pay as you go5 jobs
Monthly bundle8 jobs
Results kept
Free1 day
Pay as you go7 days
Monthly bundle30 days
Largest upload
Free50 MB
Pay as you go100 MB
Monthly bundle100 MB

Free until your first purchase; any credit pack moves you to Pay as you go; a monthly bundle while it lasts. GPU tools like this one run up to 5 of your jobs at a time; the rest wait their turn. Compare accounts

Your agent or your code.

Connect your agent and it can use this tool right away, or call it from your own code. One key works for both.

Start a job

Send a file body, or JSON containing an upload ID or public URL. Options such as quality go in the JSON options object, or the query string for a file body.

Requestreconstruct.sh
# idempotency_key is required: repeating the same request returns the same job
curl https://api.mcpbytes.com/v1/tools/create_3d_model_from_image/jobs \
  -H "Authorization: Bearer $MCPBYTES_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://mcpbytes.com/showcase/rc-tank.png",
    "options": {"quality": "high", "seed": 7},
    "idempotency_key": "image-example-001"
  }'
Response202 Accepted · trimmed
{
  "tool": "create_3d_model_from_image",
  "status": "queued",
  "input_kind": "file",
  "options": {
    "quality": "high",
    "texture_resolution": 2048,
    "seed": 7
  },
  "workflow": {
    "stage": "Modeling",
    "deadline": "2026-10-31T08:08:51.779Z",
    "cancel_pending": false,
    "refund_pending": false
  },
  "capabilities": {
    "can_cancel": true
  },
  "result": null
}

Get the result

Poll until the status is final. Download files only after success.

Requestread.sh
# JOB_ID is the id from the create response; poll until status is final
curl "https://api.mcpbytes.com/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $MCPBYTES_API_KEY"

# Once status is succeeded, download the model from result.files[].url
curl -fsSLo model.glb "$MODEL_URL"
Response200 OK · trimmed
{
  "tool": "create_3d_model_from_image",
  "status": "succeeded",
  "credits_charged": 100,
  "compute_ms": 294749,
  "result": {
    "files": [
      {
        "name": "model.glb",
        "bytes": 42265140,
        "content_type": "model/gltf-binary",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      },
      {
        "name": "generation.json",
        "bytes": 5973,
        "content_type": "application/json",
        "url": "https://api.mcpbytes.com/blob/dl/…"
      }
    ]
  }
}

MCP

Connect once. Your agent calls create_3d_model_from_image and gets the download URLs back. This endpoint has only this tool's family, which keeps your agent's tool list short; one endpoint has every tool.

Claude Code

The first form signs in through the browser when you run /mcp. In .mcp.json (project root), ${MCPBYTES_API_KEY} is read from the environment when Claude Code connects. Claude Code docs

claude mcp add --transport http mcpbytes \
  https://api.mcpbytes.com/mcp/3d
Codex (CLI, IDE extension, ChatGPT desktop)

Codex reads the key from the environment variable each time it connects. The same table can go in ~/.codex/config.toml by hand; codex mcp add has no --header flag. Codex docs

codex mcp add mcpbytes --url https://api.mcpbytes.com/mcp/3d \
  --bearer-token-env-var MCPBYTES_API_KEY
Cursor

~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Remote servers take no "type". Without the header, the client signs you in with GitHub or an email link (OAuth). Cursor docs

~/.cursor/mcp.json
{
  "mcpServers": {
    "mcpbytes": {
      "url": "https://api.mcpbytes.com/mcp/3d",
      "headers": {
        "Authorization": "Bearer ${env:MCPBYTES_API_KEY}"
      }
    }
  }
}
11 more clients in the docs →
MCP tools
create_3d_model_from_image
Reconstruct a textured model from a PNG or JPEG. Select an approved quality profile: economy, high or, when offered, max. Returns model.glb, model.web.glb (Draco + WebP, for browsers and engines), model_preview.png (the finished model rendered from six sides on one labeled sheet; get_job also returns it as an image), model_{front,back,left,right,top,bottom}.png (each view alone), model_views.json (each view's camera and the SHA-256 of model.glb) and generation.json; geometry has no inferred physical scale. quality: economy, texture_resolution: 1024: 30 credits. quality: high, texture_resolution: 2048: 100 credits. quality: max, texture_resolution: 2048: 150 credits. Requires idempotency_key; retain it when retrying the same request.
create_upload
Returns a one-hour URL to PUT a local file to; then call the tool with the upload_id.
get_job
Status and results of a job; waits up to wait_seconds for it to finish.
cancel_job
Cancel a queued job or a workflow whose can_cancel is true; repeated calls never delete results.
list_jobs
Your most recent jobs, newest first.
read_job_file
Reads a text output (.txt .json .md .csv) of a succeeded job in chunks.
Full reference: inputs, options, outputs, limits and errors

Prefer to run it yourself? Source on GitHub (AGPL-3.0)

Your first jobs are on us.

Start with 300 free credits. Sign in with GitHub or email and try a tool in your browser. No card required.