---
title: "Reconstruct the head from the rendered views (PAID, the expensive one)"
method: POST
path: "/api/funko/mesh"
tags: ["funko", "browser-session"]
---

# Reconstruct the head from the rendered views (PAID, the expensive one)

`POST /api/funko/mesh`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/api/funko/mesh`
- Auth: API key in cookie `__session`

Clerk-session only and runId-gated. The sculpt is 10 of the run's 13 weight units - this is the call that turns four cheap images into most of the bill, which is why the capability check matters more here than anywhere else. `urls` are 1-4 rendered views, front first, and every one must be on the generation CDN.

## Request body

- FunkoMeshRequest
  - `runId` string, required
  - `urls` string[], required: 1-4 rendered views, FRONT FIRST, all on the generation CDN.
  - `model` string: Sculpt model override. Defaults to the current model.

## Response `200`

The sculpt task id to poll with GET /api/funko/task.

- FunkoTaskCreatedResponse
  - `ok` boolean, required
  - `taskId` string, required: Poll with GET /api/funko/task.

## Other responses

- `400`: No urls, too many, or a host outside the allowlist.
- `401`: Not signed in.
- `403`: runId not live or not the caller's.
- `502`: Upstream generation service failed.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
