# Changelog

## P2 series model (2026-08)

`POST /v3/generation/text-to-model`, `image-to-model`, and `multiview-to-model` now accept `model=P2-20260801` (an upgrade of P1).

- **P2-only parameters**: `quad` (quad mesh). Sending `quad=true` with P1 returns `400`; switch to P2 or remove the field.
- **`face_limit`**: triangle 48–50,000; with `quad=true`, 48–25,000. Omitted = adaptive.
- **Credits**: 100 without texture; `standard` / `detailed` / `extreme` = 110 / 120 / 130 (same texture add-ons as P1).
- **P1** (`P1-20260311`) remains available; P1 does not support `quad`, `smart_low_poly`, `generate_parts`, or `geometry_quality`.

## Documentation correction (2026-08)

`credits_consumed`, `balance`, and `frozen` are JSON **numbers** with up to two decimal places (e.g. `48.00`, `41465.00`). Parse them as floating-point or decimal values — **do not** use integer parsing (`int`, `parseInt`, etc.), which will fail or truncate fractional credits (e.g. VIP discounts).

## v3.0 (2026-04)

### New API Architecture

- **Dedicated endpoints replace the universal POST endpoint**: Capability-specific endpoints, such as `POST /v3/generation/text-to-model`, replace the previous universal `POST /v2/openapi/task` endpoint with a `type` field
- **Unified `{input}-to-{output}` naming convention**: All generation endpoints use intuitive names such as `text-to-model`, `image-to-multiview`, and `multiview-to-model`
- **Unified `input` field**: Supports automatic input source inference from `task_id`, `file_token`, or URL, without requiring you to manually specify the input type
- **Removed the redundant `/openapi` path**: The Base URL is simplified from `/v2/openapi/` to `/v3/`
- **Text-to-image and image-to-image are separated into dedicated endpoints**: `text-to-image` and `image-to-image` are no longer combined in a single API

### Endpoint Changes

| v2 Endpoint | v3 Endpoint |
| :-: | :-: |
| `POST /v2/openapi/task` type=text_to_model | `POST /v3/generation/text-to-model` |
| `POST /v2/openapi/task` type=image_to_model | `POST /v3/generation/image-to-model` |
| `POST /v2/openapi/task` type=multiview_to_model | `POST /v3/generation/multiview-to-model` |
| `POST /v2/openapi/task` type=text_to_image | `POST /v3/generation/text-to-image` |
| `POST /v2/openapi/task` type=generate_image | `POST /v3/generation/image-to-image` |
| `POST /v2/openapi/task` type=generate_multiview_image | `POST /v3/generation/image-to-multiview` |
| `POST /v2/openapi/task` type=edit_multiview_image | `POST /v3/generation/edit-multiview` |
| `POST /v2/openapi/task` type=refine_model | `POST /v3/models/refine` |
| `POST /v2/openapi/task` type=convert_model | `POST /v3/models/convert` |
| `POST /v2/openapi/task` type=import_model | `POST /v3/models/import` |
| `POST /v2/openapi/task` type=stylize_model | `POST /v3/models/stylize` |
| `POST /v2/openapi/task` type=texture_model | `POST /v3/models/texture` |
| `POST /v2/openapi/task` type=animate_prerigcheck | `POST /v3/animations/rig-check` |
| `POST /v2/openapi/task` type=animate_rig | `POST /v3/animations/rig` |
| `POST /v2/openapi/task` type=animate_retarget | `POST /v3/animations/retarget` |
| `POST /v2/openapi/task` type=mesh_segmentation | `POST /v3/mesh/segment` |
| `POST /v2/openapi/task` type=mesh_completion | `POST /v3/mesh/complete` |
| `POST /v2/openapi/task` type=highpoly_to_lowpoly | `POST /v3/mesh/decimate` |
| `GET /v2/openapi/task/{task_id}` | `GET /v3/tasks/{task_id}` |

### Field Changes

| v2 Field | v3 Field |
| :-: | :-: |
| `create_time` | `created_at` |
| `consumed_credit` | `credits_consumed` |
| `file` / `file_token` / `url` / `object` | Unified as `input` |

### New Capabilities

- `POST /v3/tasks/list` - Query tasks in batch
- `POST /v3/files/upload-credentials` - Get direct file upload credentials
- `GET /v3/account/usage` - Query usage details
