---
title: "Render one orthographic head view (PAID)"
method: POST
path: "/api/funko/view"
tags: ["funko", "browser-session"]
---

# Render one orthographic head view (PAID)

`POST /api/funko/view`

## Request

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

Clerk-session only and runId-gated. Spends real generation credits, so it does not run at all without a live runId issued to this caller. Later views are conditioned on the approved front image so the turnaround stays the same person. The photo is a data URI and the body ceiling is 4 MB - base64 is ~1.37x the raw bytes, so the client must downscale before posting.

## Request body

- FunkoViewRequest
  - `runId` string, required: Must be live and owned by the caller.
  - `photo` string, required: A data: URI. Base64 is ~1.37x the raw bytes and the body ceiling is 4 MB, so downscale first.
  - `view` 'front' | 'side' | 'back' | 'bottom', required
  - `frontUrl` string: The approved front render. Conditions side/back/bottom so the turnaround stays the same person.
  - `traits` object: Normalized identity traits, locked into the prompt.
  - `retryDefects` string[]: Defect ids from a prior inspect pass, to steer the retry.

## Response `200`

The upstream 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`: Bad view name, bad data URI, or missing runId.
- `401`: Not signed in.
- `403`: runId not live or not the caller's.
- `413`: Body over the 4 MB ceiling.
- `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)
