СТАТТЯ

EOL grok-imagine-image-quality (2 Nov) і 1-год signed URLs: міграція xAI bulk-маршруту в Bubble через BIAIG до deadline

До 2 листопада 2026 xAI виводить grok-imagine-image-quality; у Batch API signed URL живе ~1 год, а job може йти до ~24 год. Таблиця cutover для BIAIG: явний model id, quality, ingest у Bubble File/Image до expiry — без «мертвих» scheduled runs.

Навіщо це зараз

У мене в Bubble каталог тягне асети через внутрішній pipeline BIAIG (назва з редакційного плану; у публічних xAI/Bubble docs не з’являється). Поки я розбирався з bulk image, наклалися дві речі з однією датою. Про це окремо: 29.10.2026: вимкнення Nano Banana 2.

Публічна документація xAI фіксує retirement grok-imagine-image-quality з 2 листопada 2026 (60-денне попередження від 2 вересня 2026). Окремо від загальної економіки batch — у Batch API для bulk image/video у відповідях є signed URL з TTL близько 1 години; сам batch має інше expires_at і може оброблятися до ~24 годин (best effort). Deprecated model id і протерміновані URL у полях каталогу — один deadline, два ризики.

Ця стаття — не про OpenAI/xAI batch pricing; лише про конкретну модель + дату EOL і ingest до expiry у Bubble.


Що змінює xAI після 2 Nov

Було (slug) Після EOL Поведінка API Рекомендація
grok-imagine-image-quality на /v1/images/generations, /v1/images/edits Redirect на grok-imagine-image-2.0 з quality: "low" Форма request/response та сама; slug ще резолвиться Явно виставити model: grok-imagine-image-2.0 і quality (low, medium, auto) — інакше redirect задасть low і ви втратите контроль над якістю/білінгом
grok-imagine-image-pro (вже redirect на quality з May 15 guide) Той сам Nov 2 шлях → 2.0 @ low Ланцюг legacy slug Перевірити JSONL/SDK на будь-які pro/quality alias
grok-imagine-image (1.0) Не зачіпається цим EOL — Не плутати з quality retirement

Batch API (важливо для bulk): на model page grok-imagine-image-quality — Batch API: Not supported; grok-imagine-image-2.0 — Batch API supported. Приклади image batch у docs xAI використовують grok-imagine-image-2.0. Якщо BIAIG досі сабмітить batch з quality slug — міграція це не лише «календар», а зміна model id на підтримуваний batch-маршрут. Поруч із цим: gpt-image-1 вимикається 23.10.2026: міграція bulk-каталогів.

Джерела: Imagine Image Quality Retirement (Nov 2), May 15 retirement (pro → quality), model pages quality / 2.0.


Два різні «expiry» — не змішувати

Тут я сам собі плутав терміни, поки не розклав у таблицю.

Поняття Що означає Наслідок для Bubble ingest
Signed URL на медіа в batch result (~1 год) xAI просить швидко скачати image/video з .url Scheduled workflow «після завершення всього batch» може отримати мертвий link, якщо між появою result і ingest пройшло >1 год
expires_at batch job Retention вікна batch (окремо від URL TTL) Job ще «живий», але URL у старому result уже ні
Час обробки batch До ~24 год best effort Довга черга + рідкий poll = типовий сценарій ризику для 1-год URL

У відповідях batch також є image_response.base64 / video аналог поруч з .url — альтернатива, якщо pipeline вміє ingest без залежності від signed URL (перевірити в BIAIG, не припускати).

Джерело: Batch API (release notes — batch image/video і 1-год URL; деталі в Batch API doc).


Bubble: ingest у File/Image, не «текст з URL»

Я тримався публічного патерну (forum + backend workflows):

  1. У API workflow URL з xAI має бути типу file/image, не plain text.
  2. Для збереження в каталозі — :saved to Bubble storage на кроці, що тягне remote asset.
  3. Scheduled API workflows фіксують версію workflow на момент schedule — після зміни model id або ingest кроків уже заплановані runs не підхоплять нову логіку, поки їх не скасують/перепланують.

Джерела: Scheduling API workflows, forum: upload public image in backend workflow.


Cutover-таблиця BIAIG (редакційний checklist)

Ось що я проходжу до 2 Nov 2026 — один checklist, не три окремі «потім».

# Шар Дія до 2 Nov 2026 Перевірка «готово»
1 Batch submit (JSONL/SDK) Замінити model на grok-imagine-image-2.0; прибрати grok-imagine-image-quality, -latest, grok-imagine-image-pro Diff конфігів/staging job; у payload немає quality slug
2 quality Явно задати low / medium / auto (не покладатися на post-EOL redirect @ low) Документований default для catalog assets — відкрите рішення (cost vs fidelity)
3 Result handling Ingest на кожен completed result (incremental retrieval з docs), не один bulk download «в кінці доби» Метрика lag: час від url у result до :saved — внутрішня, не з публічних docs
4 Fallback Якщо URL expired — гілка на base64 (якщо підтримується) або re-fetch policy; не писати raw signed URL у data type text field Поля каталогу = Bubble file/image URLs
5 Scheduler hygiene Скасувати/перепланувати queued scheduled workflows на старому маршруті Немає runs зі snapshot старого API connector + старим model
6 Post-cutover smoke Sync + один малий batch на 2.0 з обраним quality Asset у Bubble storage відкривається без xAI host

Cutover-таблиця BIAIG (редакційний checklist)


Чого docs не кажуть (чесно)

  • Точний час і timezone cutover 2 Nov (на відміну від May 15 retirement з 12:00 PM PT) — у migration guide лише календарна дата.
  • Чи BIAIG уже на 2.0 — перевірити в private repo, не вигадувати.
  • Типовий lag poll → schedule → ingest у вашому prod — локальна observability.

Не змішувати: Imagine storage_options / Files public URL TTL (1h–30d) — інша поверхня API, не batch signed URL (outputs doc — поза scope, якщо batch-only).


Підсумок

До 2 листопада 2026 я явно переводжу bulk image-маршрут на grok-imagine-image-2.0, фіксую quality, і змушую pipeline зберігати медіа в Bubble до годинного TTL signed URL. Без цього redirect після EOL сяде на low, а довгі batch jobs залишать каталог з битими посиланнями. Cutover для BIAIG — model + ingest timing + scheduler reset в одній таблиці. Поруч із цим: xAI Batch API: image, edit,.

← Усі статті