> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# API

> API reference for Suzanne: every `suzanne.api.*` operation with input and output types.

Every `suzanne.api.*` operation is listed below with parameter shapes and return types from the plugin Zod schemas.

> [!NOTE]
>
> **New to Corsair?** See [API access](/concepts/api), [authentication](/concepts/auth), and [error handling](/concepts/error-handling).

## Generations

### photoTo3d

`generations.photoTo3d`

Submit one to four photos and queue a 3D mesh job

**Risk:** `write`

```ts theme={null}
await corsair.suzanne.api.generations.photoTo3d({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `model` | `sculptor \| atelier \| capture` | Yes | — |
| `images_upload_ids` | `object` | No | — |
| `images_inline` | `object` | No | — |
| `params` | `object` | No | — |
| `outputs` | `glb \| obj \| stl \| fbx[]` | No | — |
| `idempotencyKey` | `string` | No | — |

> **images\_upload\_ids full type**
>
> ```ts theme={null}
> {
>   front: string,
>   back?: string,
>   left?: string,
>   right?: string
> }
> ```

> **images\_inline full type**
>
> ```ts theme={null}
> {
>   front: string
> }
> ```

> **params full type**
>
> ```ts theme={null}
> {
>   faces?: 200000 | 500000 | 1000000 | 2000000,
>   pbr?: boolean,
>   quad?: boolean,
>   texture_quality?: standard | detailed
> }
> ```

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |
| `status` | `string` | Yes | — |
| `created_at` | `string` | Yes | — |
| `billable_amount_cents` | `number` | Yes | — |

***

### textTo3d

`generations.textTo3d`

Submit a text prompt and queue a 3D mesh job

**Risk:** `write`

```ts theme={null}
await corsair.suzanne.api.generations.textTo3d({ model: 'sculptor', prompt: 'a low-poly fox', idempotencyKey: '3f1d6c5e-2b7a-4f0e-9c2d-8a1b6e4f0c11' });
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `model` | `sculptor \| atelier` | Yes | — |
| `prompt` | `string` | Yes | — |
| `params` | `object` | No | — |
| `outputs` | `glb \| obj \| stl \| fbx[]` | No | — |
| `idempotencyKey` | `string` | No | — |

> **params full type**
>
> ```ts theme={null}
> {
>   faces?: 200000 | 500000 | 1000000 | 2000000,
>   pbr?: boolean,
>   quad?: boolean,
>   texture_quality?: standard | detailed
> }
> ```

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |
| `status` | `string` | Yes | — |
| `created_at` | `string` | Yes | — |
| `billable_amount_cents` | `number` | Yes | — |

***

## Jobs

### cancel

`jobs.cancel`

Cancel a queued or running generation job

**Risk:** `destructive`

```ts theme={null}
await corsair.suzanne.api.jobs.cancel({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |
| `status` | `string` | Yes | — |
| `already_terminal` | `boolean` | Yes | — |

***

### get

`jobs.get`

Read a generation job and its download URLs

**Risk:** `read`

```ts theme={null}
await corsair.suzanne.api.jobs.get({ job_id: 'job_01H' });
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |
| `status` | `string` | Yes | — |
| `model` | `string` | No | — |
| `created_at` | `string` | Yes | — |
| `updated_at` | `string` | No | — |
| `completed_at` | `string` | No | — |
| `outputs` | `object[]` | No | — |
| `error` | `object` | No | — |

> **outputs full type**
>
> ```ts theme={null}
> {
>   format: string,
>   download_url: string
> }[]
> ```

> **error full type**
>
> ```ts theme={null}
> {
>   code: string,
>   message: string
> }
> ```

***

## Models

### download

`models.download`

Mint a fresh download URL for a finished mesh

**Risk:** `read`

```ts theme={null}
await corsair.suzanne.api.models.download({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `job_id` | `string` | Yes | — |
| `format` | `glb \| obj \| stl \| fbx` | Yes | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `url` | `string` | Yes | — |

***

## Uploads

### create

`uploads.create`

Create a presigned URL for a JPEG or PNG upload

**Risk:** `write`

```ts theme={null}
await corsair.suzanne.api.uploads.create({});
```

**Input:** *empty object*

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `upload_id` | `string` | Yes | — |
| `upload_url` | `string` | Yes | — |
| `expires_at` | `string` | Yes | — |

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.