---
title: Changelog
description: Change history for the Clipia public API v1, the MCP server, LLM Gateway and the SDKs — launch, new tools and models, contract and documentation updates.
icon: History
---

Change history for the Clipia public API (`/v1/*`), the remote MCP server `https://mcp.clipia.ai/mcp`, LLM Gateway and the official SDKs. Newest entries first. The `/v1/*` contract is stable; breaking changes are called out explicitly. Entries from July to September 2026 are grouped by month.

## 2026-11-12

- **MCP: ChatGPT plugin instructions.** For the ChatGPT plugin connection, the server instructions now ask the assistant to confirm the estimated credits before a video or several images, to wait for the finished result, and to decline requests to add credits or change the account. The same instructions now answer requests for more credits or account changes, and nude images, briefly and without a tool call, and ask for a public image link when a chat attachment cannot be read. A finished result in the plugin also tells the assistant that the Clipia viewer already shows it, so the reply is a short summary with the original-quality link. Before any video and before several image variants, the plugin now confirms the estimated credits on the server: the first call starts nothing and returns the model, the estimate and a confirmation token, and the generation starts when the call is repeated with that token after the user agrees. Other connections are unchanged. Server metadata version 1.0.24.

## 2026-11-09

- **MCP: the default voice is ElevenLabs v4 Turbo.** `generate_audio` without `model` now speaks with `eleven-v4-turbo` instead of `gemini-3-1-flash-tts`. The price is unchanged: 4 credits per 1,000 characters. The default model accepts 10–10,000 characters per call. Cyrillic text without `voice` is read by a native Russian speaker. A Gemini voice (for example, `Kore`) without an explicit `model` is now rejected: pass `model: "gemini-3-1-flash-tts"` or a voice from `get_model`. Server metadata version 1.0.20. See [Tools](/en/docs/mcp/tools).

## 2026-11-05

- **Breaking: no active subscription means `subscription_required`.** Generation with a live key and no active subscription returns `402 subscription_required`; it used to return `402 insufficient_credits`. Buying a credit pack doesn't open access; a test key works without payment. See [Authentication](/en/docs/getting-started/authentication).
- **Breaking: chat checks parameters before charging.** `temperature` outside 0–2, `top_p` outside 0–1, `n` other than 1, `tools` over 256 KB and `max_tokens` above 200,000 return `400`. A `max_tokens` value above the model ceiling is allowed, and the reserve follows the requested amount. A model rejecting the parameters is now a `400`, a temporary failure a `502`. See [Chat Completions](/en/docs/llm-gateway/chat-completions).
- **Breaking: a cap on source file links.** Generation submits and MCP accept at most 30 links in one list and 60 distinct links in a request; above that, `400` before credits are reserved. See [Submit a generation](/en/docs/api-reference/submit).
- **Breaking: MCP no longer returns another generation for a reused key.** The same `idempotency_key` with different input, including a different `num_images`, returns `idempotency_key_reuse`. An argument of the wrong type returns `invalid_request`; a number may be sent as a string (`"5"`), a loose form like `"5s"` is not accepted. A JSON-RPC batch with non-protocol messages returns `400`. See [MCP tools](/en/docs/mcp/tools).
- **Key expiry, budget and rotation.** The owner sets a key's expiry and credit budget in the console, and a rotation issues a new key and leaves the old one 24 hours. A budget covers the last day, 7 or 30 days, or the whole lifetime; a request over it gets `402 insufficient_quota`, while reading a result or the catalog stays available. Emails go out about a key created or revoked and about a new OAuth connection. See [Managing keys](/en/docs/api-reference/keys).
- **`Idempotency-Key` in chat.** Regular responses of `POST /v1/chat/completions` and `POST /v1/completions` accept the header and charge nothing for a retry. A replayed response, here and on generation submits, carries the `Idempotent-Replayed: true` header. In MCP, `generate_scenario` accepts a key too. See [Idempotency](/en/docs/api-reference/idempotency).
- **Paying for a dropped chat.** In a stream, once the first chunk has gone out, you pay for what was delivered; before the first chunk and in a regular response the reserve is returned.
- **Webhooks retry for longer.** Up to 15 attempts over about 24 hours 15 minutes instead of 6 attempts. A test key gets at most one delivery per minute and at most three attempts. See [Webhooks](/en/docs/api-reference/webhooks).
- **Generation error text.** `error.message` on `FAILED` is a ready-made phrase about the reason when the server recognizes it, otherwise neutral text for the code. The console log stores the error code, not its text.
- **One error format before the handler.** `400`, `404`, `413` and `415` responses under `/v1/` come in the `error` envelope and don't expose internal paths. See [Errors](/en/docs/api-reference/errors).
- **MCP limits.** Protocol methods are counted separately: 600 units per minute per key or OAuth connection. OAuth consent stays valid for 180 days, then the client asks to confirm access again. Server metadata version 1.0.19. See [Rate limits](/en/docs/api-reference/rate-limits).
- **Per-IP limit, arriving separately.** 30 requests per second from one IP, bursts up to 60: a `429` in the usual error format with a `Retry-After` header. It takes effect with a separate infrastructure update.
- **`queue_position` is deprecated.** The field is always `0`; rely on `status` and `progress`. See [Versioning and compatibility](/en/docs/api-reference/versioning).

## 2026-11-02

- **MCP: `edit_presentation` is no longer marked destructive.** The tool creates a new deck derived from the source; the source presentation is neither modified nor deleted, so `destructiveHint` is now `false` like every other tool. MCP directories stop showing a Destructive badge and clients stop asking for extra confirmation. Server metadata version 1.0.16.

## 2026-10-13

- **Ignored parameters are no longer dropped silently.** If `input` contains a key the model will not apply (a typo, a parameter of another model), `POST /v1/models/{model}` and `/estimate` accept the request as before but return the key in the [`warnings`](/en/docs/api-reference/submit#warnings) array. Requests that worked before keep working.
- **MCP rejects such a call before it starts.** `generate_image`, `generate_video`, `generate_audio` and `generate_music` answer with an `invalid_request` error that names the rejected parameters and lists the ones the model declares; no generation is created. This also covers top-level arguments — for example `seed` on a model that does not declare it. See [MCP tools](/en/docs/mcp/tools#unsupported-parameters).
- **SDK 1.5.0.** TypeScript `clipia-ai` and Python `clipia` 1.5.0 describe `warnings` in the submit and cost estimate responses — see the examples on the [TypeScript SDK](/en/docs/sdk/typescript#warnings) and [Python SDK](/en/docs/sdk/python#warnings) pages.
- **Seedance 2.x: audio is on when the parameter is omitted.** A request to Seedance 2, 2 Fast, 2 Mini or 2.5 without `generate_audio` now returns a video with audio, as the model's `input_schema` declares (`default: true`). Previously such a request sent through the API or MCP was rendered without audio. To get a silent video, pass `generate_audio: false`. If the audio track does not pass the safety rules, the video may arrive without audio. The cost of the request has not changed. See the [Seedance 2.5 page](/en/docs/api-reference/models/seedance-2-5).
- **Dropped audio is reported in the API and MCP.** If the audio track of a video does not pass the model's safety check, the server reruns the generation without sound. A `warnings` array with the code `audio_dropped` now reports it — in `GET /v1/requests/{id}` and `GET /v1/requests/{id}/status`, and over MCP in the `wait_generation` and `get_generation` responses. The cost of the request does not change. See [Generation result](/en/docs/api-reference/result).
- **The audio toggle of video models is read the same way everywhere.** `true`, `1`, `"yes"` and `"on"` turn audio on; `false`, `0`, `"no"` and `"off"` turn it off — identically for the cost and for the run. A string that cannot be read as a toggle counts as an omitted parameter, so the model default applies. Previously the strings `"1"`, `"yes"` and `"on"` turned audio off on some models.
- **Kling 3 Multi-Shot: audio with two or more scenes.** The model always renders such a video with audio. A request with `sound: false` is accepted as before, the cost is calculated with audio, and the response carries an `unsupported_parameter` warning.
- **Seedance 2.x reference videos: a limit on the number of clips.** Seedance 2, 2 Fast and 2 Mini accept up to 3 reference videos, Seedance 2.5 up to 10; the limit is declared in the model's `input_schema` (`maxItems`). A request above the limit is rejected with `400` before any credits are reserved. Previously the extra clips were dropped silently.
- **MCP `list_models` returns the catalog in pages.** The response carries `total`, `truncated` and `next_offset`; request the next page with `offset`. Previously a long catalog was cut off without notice. See [MCP tools](/en/docs/mcp/tools#core).
- **A pricing failure answers `503` instead of an inaccurate price.** If the server temporarily cannot read a model's pricing parameters, submit and `/estimate` answer `503`: retry shortly, no credits are reserved. In the catalog such a model may carry `pricing: { available: false }`.

## 2026-10-09

- **Docs: product, studios and models sections; new portal design.** The portal now covers the product itself, the studios and the models, and the API, MCP and SDK pages have been checked against how the service works today.
- **Slugs with a slash over REST.** Models such as `google/imagen4` can now be called through `POST /v1/models/{family}/{model}`, not only through MCP — see the [catalog](/en/docs/api-reference/models#mcp-only). `/v1/chat/completions` responses can be looked up with `GET /v1/generation?id=chatcmpl-…`; generation errors share one `error.code` dictionary; every `429` carries `Retry-After`.
- **New guide.** [Migrating from another generation API](/en/docs/guides/migration) explains how to move an integration to the Clipia queue.

## 2026-09 [#2026-09]

- **SDK 1.2.0.** TypeScript `clipia-ai` and Python `clipia` 1.2.0 describe the `text_limits` field on text-to-speech models — the minimum and maximum text length.
- **Speech text length is checked up front.** The REST API and MCP reject text outside `text_limits` with `400` before a generation is created, so no credits are reserved. The bounds are shown in `GET /v1/models/{model}` and `get_model`.

## 2026-08 [#2026-08]

- **Seedance 2.5.** `seedance-2-5-t2v` and `seedance-2-5-i2v` by ByteDance were added to the catalog — see the [model page](/en/docs/api-reference/models/seedance-2-5).
- **Frame preview in MCP.** `generate_video` returns an inline frame preview so the agent can see the result.

## 2026-07 [#2026-07]

- **LLM Gateway.** An OpenAI-compatible `POST /v1/chat/completions` with streaming, tool calling and structured outputs; text models joined the shared `GET /v1/models` catalog. See [LLM Gateway](/en/docs/llm-gateway).
- **SDK 1.1.0.** `models.list()` and `models.get()` in both SDKs handle text models in the catalog.
- **New MCP tools.** `generate_audio` (text to speech), `generate_music`, `chat`, `generate_scenario` and `compose_video` (assembling scenes into a final video), `generate_presentation` and `edit_presentation`. The list and parameters are on the [MCP tools](/en/docs/mcp/tools) page.
- **Ready-made MCP prompts.** The server exposes the `product_shot`, `blog_covers`, `campaign_storyboard` and `animate_photo` prompts — see [Ready-made prompts](/en/docs/mcp#prompts).
- **Media in chat.** In clients that support MCP Apps, results render as an interactive card.

## 2026-06-22

- **Canonical MCP address.** The remote MCP server moved to `https://mcp.clipia.ai/mcp`. The old `https://api.clipia.ai/mcp` address remains a legacy alias for compatibility, but new integrations should use the canonical endpoint.

## 2026-06-13

- **Image previews in MCP.** The `generate_image` tool returns its result in a single call with an inline preview: the agent sees the image and can iterate. In claude.ai generations render as an interactive card with live progress and an "Original" button.
- **MCP limits no longer throttle sessions.** Protocol JSON-RPC noise (initialize, tools/list, ping) is no longer counted toward the per-minute limit — only tool calls count.

## 2026-06-12

- **Public API and MCP launch.** The public Queue API `/v1/*` (submit → poll / webhook) is live, alongside official SDKs for TypeScript (`clipia-ai`) and Python (`clipia`) and a CLI.
- **Remote MCP server.** The original `https://api.clipia.ai/mcp` address (now a legacy alias) launched with 8 agent tools plus a separate app-only helper: generate images and video right from Claude Code, claude.ai, ChatGPT, Cursor and other MCP clients.
- **Sandbox.** Keys prefixed `clipia_test_` return canned results instantly with no credit charge.

<Callout type="warn" title="Cancel endpoint removed">
The cancel endpoint has been removed from the public API. Credits are reserved at `submit`, and most models cannot stop a generation once started — `cancel` would create a misleading "CANCELED" status while credits were already spent. The `CANCELED` status remains valid in responses: a job may be canceled outside the API and is then returned as terminal.
</Callout>
