# Changelog
## 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
Changelog
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