Skip to content

Changelog

Changelog

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.

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.

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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

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 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.
  • 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 and Python SDK 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.
  • 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.
  • 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.
  • 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. /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 explains how to move an integration to the Clipia queue.

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

  • Seedance 2.5. seedance-2-5-t2v and seedance-2-5-i2v by ByteDance were added to the catalog — see the model page.
  • Frame preview in MCP. generate_video returns an inline frame preview so the agent can see the result.

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.
  • 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 page.
  • Ready-made MCP prompts. The server exposes the product_shot, blog_covers, campaign_storyboard and animate_photo prompts — see Ready-made 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.

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.