What changes, and when
Two ids move within nine days. xAI's grok-imagine-image-quality is served by a different model from 2 November, which is today. OpenRouter's page for Seedance 1.5 Pro carries a "Going away November 11, 2026" label 1. The earlier October media shutdown article lists the xAI change in one table row; this brief covers what to move for both.
| Id | Where | Date | What happens | Move to |
|---|---|---|---|---|
grok-imagine-image-quality | xAI API | 2 Nov 2026 | Served by grok-imagine-image-2.0 at quality low, same request and response shape, lower per-image price 2 | grok-imagine-image-2.0, named explicitly |
bytedance/seedance-1-5-pro | OpenRouter | 11 Nov 2026 | Marked "Going away" 1 | A Seedance 2.x model (no successor named on the page) |
The xAI row comes from INFRO's earlier article, which quotes xAI's release notes. I did not open those notes, so confirm the wording in your xAI console before relying on it.
Image: grok-imagine-image-quality to Image 2.0
Quality Mode launched on 6 May 2026 under the id grok-imagine-image-quality, for enterprise developers and teams 3. Image 2.0 became generally available on 7 August and is in the API as grok-imagine-image-2.0 4. Nothing fails after 2 November, so a test that checks only for a 200 will pass while the output comes from a different model at low quality.
What to do:
- Replace the slug in code and config with
grok-imagine-image-2.0. Then the model and quality are your choice, not a redirect's. - Set quality explicitly if you need the old look. I did not confirm which quality values Image 2.0 accepts, so read xAI's image docs before you pick one.
- Check what you gain. Image 2.0 edits with up to 5 input images in one generation, exports a subject with a transparent background, and resizes to ratios from 1:2 to 2:1 4.
- If you restrict API keys to specific models, add the new id. The console lets you restrict a key to named models 5, and a key limited to the old slug may refuse the new one.
- Re-baseline unit cost from usage on real requests. The console's usage page exports CSV and labels image resolution in pricing 5.
If you reach xAI image models through OpenRouter, read the endpoint record rather than assuming. OpenRouter publishes per-endpoint supported_parameters and pricing, and an absent key means the parameter is unsupported 6. I did not confirm that OpenRouter lists this slug.
Video: Seedance 1.5 Pro to Seedance 2.x
Seedance 1.5 Pro makes 4–12 second clips at up to 1080p, takes text and images, can use a first and last frame, and generates audio in the same pass 1. The candidates, from OpenRouter's pages:
| Model | Clip length | Inputs | Listed rate "from" |
|---|---|---|---|
| Seedance 1.5 Pro | 4–12 s | text, images | $0.02306/s |
| Seedance 2.0 | 4–15 s | text, images, video, audio | $0.06726/s |
| Seedance 2.0 Fast | not read | text, first/last frame, references | $0.04035/s |
| Seedance 2.0 Mini | 4–15 s, 480p and 720p only | text, first/last frame, references | $0.03363/s |
| Seedance 2.5 | not read | up to 50 reference assets, editing, extension | $0.1028/s |
The rate step is real. The page's token formula is height × width × duration × 24 / 1024 1. At 720p that is 21,600 tokens per second, which matches the listed $0.05184/s with audio for 1.5 Pro and $0.1512/s for 2.0 1 7.
Two more things to weigh. Both pages show a single hosting provider and the note that OpenRouter forwards every request to it 1 7. When read, Seedance 2.0 showed 79.18% availability over three days against 99.32% for 1.5 Pro, so plan retries. Neither is available through EU in-region routing 7.
Validate parameters against the model, not your old request. OpenRouter returns a 400 listing the supported values when duration, resolution or aspect ratio is wrong 8.
import requests
models = requests.get("https://openrouter.ai/api/v1/videos/models").json()["data"]
for m in models:
if m["id"].startswith("bytedance/seedance"):
print(m["id"], m["supported_durations"], m["supported_resolutions"],
m["supported_aspect_ratios"], m["pricing_skus"])Async-job cutover checklist
OpenRouter video is asynchronous: POST to /api/v1/videos returns a job id and polling URL, you poll GET /api/v1/videos/{jobId} until completed, then download from the content URL 8. It also supports webhooks with signature verification 8. The cutover has to respect that lifecycle.
- Inventory every caller that sends
seedance-1-5-pro, including scheduled and batch jobs. - Pick the replacement per workload: Fast or Mini for drafts, 2.0 or 2.5 where you need video or audio references.
- Run the parameter check above and fix durations, resolutions and aspect ratios.
- Re-estimate cost per clip from list rates and your own rates.
- Stop new 1.5 Pro submissions a few days before 11 November, then drain open jobs by polling or webhook.
- Download and store finished files yourself; I did not confirm how long OpenRouter keeps job content.
- Key idempotency on your own request id plus model, so a retry on the new model is not billed twice.
- Re-point image calls to
grok-imagine-image-2.0and compare a fixed prompt set against old output. - Watch OpenRouter's models page, which labels models with a "Going away" date 9.
INFRO can help with the mechanics. It records vendor shutdown dates and refuses a retired model before any provider call, naming the replacement. Video runs as async jobs with signed webhooks, outputs can be re-hosted, and an estimate shows cost before a request. All of it runs on your own provider accounts.
