# GPT Image 2.6 GIF API: как сделать GIF-анимацию, 16 или 64 кадра

> GIF включает поле output_format: gif на /v1/images/generations. Напрямую в OpenAI — до 16 кадров и ~$0,06 за 512×512, web-маршрут LaoZhang — $0,03 за вызов.

- URL: https://blog.laozhang.ai/ru/posts/gpt-image-2-6-gif-api
- Published: 2026-11-05
- Updated: 2026-11-05
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ru/about)
- Topic: Руководства по API
- Tags: GPT Image 2.6, GIF, OpenAI API, Image API, LaoZhang API, Анимация

---
Анимированный GIF в GPT Image 2.6 получается обычным запросом на генерацию. К `POST /v1/images/generations` с моделью `gpt-image-2.6-flare` или `gpt-image-2.6-sunburst` добавьте `"output_format": "gif"`, число кадров `frame_count` и длительность одного кадра `frame_duration_ms`, затем декодируйте `data[0].b64_json` из base64 и запишите байты в файл `.gif`, который по умолчанию повторяется бесконечно. OpenAI открыла эту возможность в API 4 ноября 2026 года вместе с Images 2.6. Эндпоинт правок `/v1/images/edits` GIF по документации не возвращает: анимацию можно только сгенерировать.

Сколько кадров просить, зависит от того, куда уходит запрос. Руководство OpenAI разрешает от 2 до 64 кадров, а справочник API по состоянию на 5 ноября 2026 года — от 2 до 16, поэтому код, который ходит напрямую в OpenAI, держите в пределах 16 кадров. Там GIF оплачивается по токенам: 512×512, 9 кадров на `medium` обошлись примерно в $0,062. Модель `gpt-image-2.6-web` в LaoZhang API берёт фиксированные $0,03 за вызов и по своей документации принимает до 64 кадров, но кадр меньше 816×816 она отклоняет.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

5 ноября 2026 года через `gpt-image-2.6-web` было сгенерировано четыре GIF 1024×1024. Все вернулись ровно с тем числом и длительностью кадров, которые были запрошены, весили от 2,02 до 8,20 МБ и создавались 43–52 секунды. Просьба в промпте вернуться в исходную позу при этом не гарантировала плавный стык: у 9-кадрового варианта переход от последнего кадра к первому оказался резче обычного шага анимации. Поэтому готовый GIF перед публикацией стоит проверить коротким скриптом, он приведён ниже.

## Как получить GIF из GPT Image 2.6 API: запрос, base64 и файл .gif

GIF возвращается в том же поле `b64_json`, что и обычная картинка, поэтому весь путь укладывается в четыре действия: выбрать модель и размер кадра, отправить запрос с полями GIF, декодировать ответ и проверить файл. Пример ниже повторяет запрос из руководства OpenAI по промптам (обезьянка с фонарём, цикл 1,8 секунды), только на модели Flare и на `medium`.

1. Выберите модель: `gpt-image-2.6-flare` быстрее, `gpt-image-2.6-sunburst` прорисовывает больше деталей. Для LaoZhang API с оплатой за вызов модель одна — `gpt-image-2.6-web`.
2. Задайте `size` — это размер **одного кадра**, а не всей анимации. По руководству OpenAI стороны кратны 16, `auto` оставляет выбор API. Для `gpt-image-2.6-web` передавайте `size` всегда и не меньше `816x816`.
3. Добавьте `"output_format": "gif"`, `frame_count` и `frame_duration_ms`. Без них будет 9 кадров по 200 мс.
4. Декодируйте `data[0].b64_json` и сохраните как `.gif`, затем проверьте число кадров и стык скриптом из раздела о цикле.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

Запрос напрямую к OpenAI через curl. Ответ сначала пишется в `gif.json`: если запрос упадёт, там останутся `code` и `param` ошибки.

```bash
curl https://api.openai.com/v1/images/generations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.6-flare",
    "prompt": "A little monkey in an olive-green hooded coat stands in a snowy pine forest at dusk. A wooden cabin glows in the background. The monkey holds a glowing amber paper lantern at chest height, slowly lifts it, looks up and blinks, then lowers it back to its starting pose. Keep the lantern in its hands and the camera still. Make the motion loop smoothly.",
    "output_format": "gif",
    "size": "512x512",
    "quality": "medium",
    "frame_count": 9,
    "frame_duration_ms": 200
  }' -o gif.json

jq -r '.data[0].b64_json' gif.json | base64 --decode > anim.gif
```

То же на Python с официальным SDK `openai`. Поля кадров переданы через `extra_body`, а тайм-аут поднят до 300 секунд, потому что GIF генерируется дольше обычной картинки:

```python
import base64
from openai import OpenAI

PROMPT = (
    "A little monkey in an olive-green hooded coat stands in a snowy pine forest at dusk. "
    "A wooden cabin glows in the background. The monkey holds a glowing amber paper lantern "
    "at chest height, slowly lifts it, looks up and blinks, then lowers it back to its "
    "starting pose. Keep the lantern in its hands and the camera still. "
    "Make the motion loop smoothly."
)

client = OpenAI()  # ключ из переменной OPENAI_API_KEY
# LaoZhang API: OpenAI(api_key="ВАШ_КЛЮЧ", base_url="https://api.laozhang.ai/v1")

result = client.images.generate(
    model="gpt-image-2.6-flare",  # web-маршрут LaoZhang: "gpt-image-2.6-web"
    prompt=PROMPT,
    size="512x512",               # для gpt-image-2.6-web не меньше "816x816"
    quality="medium",
    output_format="gif",
    extra_body={"frame_count": 9, "frame_duration_ms": 200},
    timeout=300,
)

for number, item in enumerate(result.data, start=1):
    raw = item.b64_json.split(",", 1)[-1]  # на случай префикса data:image/gif;base64,
    path = f"anim-{number}.gif"
    with open(path, "wb") as f:
        f.write(base64.b64decode(raw))
    print("Сохранено:", path)
```

Если старая версия Python SDK отказывается принимать `frame_count` или `frame_duration_ms` как именованные аргументы и падает с `TypeError` про неожиданный аргумент, обновлять код не обязательно. Поля, которых SDK ещё не знает, передаются через `extra_body`, как в примере выше: SDK добавит их в JSON запроса без проверки, а API примет их как обычные параметры. Для `gpt-image-2.6-web` в том же скрипте меняются три строки: `base_url` и ключ LaoZhang API, имя модели и `size` от `816x816`. Параметр `quality` в примере web-маршрута из документации LaoZhang API не передаётся.

## Лимиты кадров: 16 по справочнику OpenAI, 64 по руководству

Верхняя граница `frame_count` у OpenAI описана двумя способами, и по состоянию на 5 ноября 2026 года они расходятся. [Руководство OpenAI по генерации изображений](https://developers.openai.com/api/docs/guides/image-generation#generate-animated-gif-output) называет диапазон 2–64 кадра и 20–2000 мс на кадр, а [справочник OpenAI по методу images.generate](https://developers.openai.com/api/reference/resources/images/methods/generate) пишет «от 2 до 16» с `maximum: 16` и не ставит потолок 2000 мс для `frame_duration_ms`. Запросы больше чем на 9 кадров к API самой OpenAI в доступных замерах не проверялись, поэтому какой документ точнее, неизвестно. Если код обязан работать напрямую с OpenAI, 16 кадров — безопасный предел. На `gpt-image-2.6-web` действует документация LaoZhang API с диапазоном 2–64: запрос на 65 кадров 5 ноября 2026 года вернул 400, а 16 кадров прошли без ошибок.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

| Параметр | Руководство OpenAI | Справочник API OpenAI | `gpt-image-2.6-web` (LaoZhang API) |
| --- | --- | --- | --- |
| `frame_count` | 2–64, по умолчанию 9 | 2–16, по умолчанию 9 | 2–64, по умолчанию 9 |
| `frame_duration_ms` | 20–2000 мс, округление до 10 мс, по умолчанию 200 | от 20 мс, округление до 10 мс, по умолчанию 200 | 20–2000 мс, по умолчанию 200 |
| `size` | размер одного кадра, стороны кратны 16, или `auto` | должен укладываться в лимиты GIF модели | не меньше 655 360 пикселей, наименьший квадрат 816×816; передавать всегда |
| `n` | вместе с кадрами и размером кадра входит в общий бюджет пикселей | — | только 1 |
| Не работает с GIF | стриминг, промежуточные кадры, `output_compression`, `prompt_rewriter`, эндпоинт правок | стриминг, промежуточные кадры, маски, `output_compression` | стриминг (`stream: true` отдаёт GIF целиком), эндпоинт правок |

Справочник добавляет ещё одну оговорку: для GIF нужен «доступ к GIF preview для выбранной модели». Кому этот доступ открыт по умолчанию, OpenAI не пишет, поэтому при неожиданном отказе на ключе OpenAI проверьте и это условие.

Число кадров и размер кадра связаны через общий бюджет пикселей. Все кадры модель рисует на одном листе, поэтому в лимиты одновременно должны поместиться число кадров, размер кадра и число анимаций `n`. Если запрос не укладывается, руководство OpenAI советует уменьшить `frame_count`, размер кадра или `n`. У листа есть и нижний порог. В единичном замере команды документации LaoZhang API напрямую в OpenAI кадр 256×256 даже с двумя кадрами вернул ошибку `No supported sheet fits`, а 512×512 с 4–9 кадрами проходил без ошибок.

## Число кадров и размер: что показали четыре GIF от 5 ноября 2026 года

Длина цикла равна `frame_count × frame_duration_ms`, а вес файла растёт почти пропорционально числу кадров. Это видно по четырём GIF, сгенерированным 5 ноября 2026 года через `gpt-image-2.6-web` ключом группы `default` (по одному прогону на строку), и по образцу, который OpenAI опубликовала в своём руководстве:

| GIF | Кадры × мс | Длина цикла | Кадр | Вес | Время генерации |
| --- | --- | --- | --- | --- | --- |
| `gpt-image-2.6-web`, промпт OpenAI про цикл | 4 × 300 | 1,2 с | 1024×1024 | 2,02 МБ | 43,5 с |
| `gpt-image-2.6-web`, промпт OpenAI про цикл | 9 × 200 | 1,8 с | 1024×1024 | 4,53 МБ | 49,3 с |
| `gpt-image-2.6-web`, короткий промпт без слов о цикле | 9 × 200 | 1,8 с | 1024×1024 | 4,85 МБ | 52,1 с |
| `gpt-image-2.6-web`, промпт OpenAI про цикл | 16 × 120 | 1,92 с | 1024×1024 | 8,20 МБ | 49,3 с |
| Образец OpenAI, `gpt-image-2.6-sunburst` | 9 × 200 | 1,8 с | 512×512 | 1,28 МБ | не опубликовано |

Во всех пяти файлах флаг повтора равен 0, то есть анимация крутится бесконечно, а число и длительность кадров совпали с запрошенными до миллисекунды. В этой серии 16 кадров сгенерировались примерно за то же время, что и 9, но это по одному прогону на настройку, а время на web-маршруте меняется с нагрузкой. В документации LaoZhang API больше кадров означает дольше: для 1024×1024 там указаны 35–42 секунды на 4–9 кадров и около 100 секунд на 16. Там же приведены 64 кадра: около 2 минут, около 18 МБ и заметно более мягкие кадры, а 2048×2048 с 9 кадрами — около 54 секунд и около 11 МБ.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

Отсюда практичный выбор. Значения по умолчанию, 9 кадров по 200 мс, дают цикл 1,8 секунды при 5 кадрах в секунду, и для стикера или реакции это разумная отправная точка. Если движение должно быть плавнее, 16 кадров по 120 мс поднимают частоту примерно до 8 кадров в секунду, но файл 1024×1024 вырастает до 8 МБ. Индикатору загрузки или иконке в интерфейсе 1024×1024 не нужен вовсе: напрямую в OpenAI кадр 512×512 весит в несколько раз меньше, а на web-маршруте меньше 816×816 не получится, и GIF придётся уменьшать уже после генерации.

## Какой маршрут выбрать для GIF: OpenAI, переадресация LaoZhang, web или VIP

Выбор определяется двумя вещами: нужен ли кадр меньше 816×816 и как удобнее платить, за токены или за вызов. Маленькие GIF вроде 512×512 делаются только через модели `gpt-image-2.6-flare` и `gpt-image-2.6-sunburst` с оплатой по токенам, напрямую в OpenAI или через официальную переадресацию. Кадр от 816×816 и фиксированная цена за вызов — это `gpt-image-2.6-web`. Поштучные VIP-модели GIF не отдают совсем.

![Выбор маршрута для GIF в GPT Image 2.6: кадр меньше 816×816 — Flare или Sunburst по токенам, от 816×816 и больше 16 кадров — gpt-image-2.6-web, у моделей -vip GIF нет](https://blog.laozhang.ai/posts/ru/gpt-image-2-6-gif-api/img/gif-route-picker.webp)

| Маршрут | Модель | Наименьший кадр | Кадров | Оплата |
| --- | --- | --- | --- | --- |
| OpenAI напрямую | `gpt-image-2.6-flare`, `gpt-image-2.6-sunburst` | 512×512 проходит, 256×256 не прошёл | 2–16 по справочнику, 2–64 по руководству | токены по ценам OpenAI |
| LaoZhang API, официальная переадресация | те же ID, ключ группы `OpenAI Official` или `OpenAI Official Enterprise` | как у OpenAI, 512×512 работает | как у OpenAI | токены по ценам OpenAI, в Enterprise +20 % |
| LaoZhang API, web-маршрут | `gpt-image-2.6-web`, ключ группы `default`, Flare или Sunburst не выбираются | 816×816 (655 360 пикселей) | 2–64 по документации LaoZhang API | $0,03 за вызов |
| LaoZhang API, VIP | `gpt-image-2.6-flare-vip`, `gpt-image-2.6-sunburst-vip` | GIF нет | — | GIF-запрос возвращает 400 |

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

У LaoZhang API три маршрута для GPT Image 2.6 различаются группой ключа, а не только именем модели. Официальная переадресация принимает те же тела запросов, что OpenAI, и в коде меняются только адрес `https://api.laozhang.ai/v1` и ключ группы `OpenAI Official`. По документации этой группы через неё работают и маленькие GIF. Web-маршрут удобен, когда нужен GIF 1024×1024 и крупнее по одной цене при любом числе кадров. Ограничения у него такие: `n` только 1, стриминга нет, тайм-аут клиента нужен от 300 секунд, а правки GIF не возвращают. Векторный SVG он тоже не отдаёт: как получить SVG через API, разобрано в [статье о выводе SVG в GPT Image 2.6](https://blog.laozhang.ai/ru/posts/gpt-image-2-6-svg-output). Все условия маршрутов собраны в [документации LaoZhang API по GPT Image 2.5 и 2.6](https://docs.laozhang.ai/ru/api-capabilities/gpt-image-2-5).

## Сколько стоит один GIF: около 6 центов по токенам или 3 цента за вызов

Напрямую в OpenAI и через официальную переадресацию GIF оплачивается как картинка: по выходным токенам, $30 за 1 млн, плюс текст промпта по $5 за 1 млн, что на один запрос даёт меньше $0,001. 5 ноября 2026 года команда документации LaoZhang API замерила два GIF на `gpt-image-2.6-flare` напрямую в OpenAI, по одному прогону. Кадр 512×512, `medium`, 9 кадров занял 2 073 выходных токена: 2 073 × $30 / 1 000 000 ≈ $0,062, генерация длилась 11–12 секунд. Кадр 512×512, `low`, 4 кадра — 1 172 токена, то есть 1 172 × $30 / 1 000 000 ≈ $0,035. Для сравнения, одна статичная картинка 1024×1024 на `medium` в той же серии заняла 1 449 токенов, около $0,043.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

Цифры за GIF других размеров, другого качества и с другим числом кадров будут другими, потому что счёт идёт за фактические выходные токены. Замеры команды документации LaoZhang API охватывают только GIF 512×512. В группе `OpenAI Official Enterprise` тот же 9-кадровый GIF стоит на 20 % дороже, около $0,075. На `gpt-image-2.6-web` цена не зависит ни от числа кадров, ни от размера: 4 кадра и 16 кадров 1024×1024 стоили одинаково, а ответы с ошибкой, включая 429, по документации не списываются.

Получается простое правило: маленький GIF 512×512 делается только по токенам и стоит около 3,5–6 центов, а GIF от 816×816 с фиксированной ценой выгоднее брать на web-маршруте, если ваш бюджет считается в вызовах. Сколько стоят статичные картинки на каждом уровне качества и стоит ли вообще переходить с 2.5, разобрано в статье [«GPT Image 2.6: отличия от 2.5 — GIF, SVG и low в 4 раза дороже»](https://blog.laozhang.ai/ru/posts/gpt-image-2-6-vs-2-5).

## Ошибки GIF-запроса: 400, No supported sheet fits, 429 и тайм-аут

Почти все сбои GIF-запроса приходят как HTTP 400 с понятным полем `param` или `code`, и их не исправить повтором: нужно менять сам запрос. Повторять имеет смысл только 429 и тайм-аут. Первые три строки таблицы воспроизведены 5 ноября 2026 года отдельными вызовами LaoZhang API, каждый занял 1–2 секунды и не списывался. Остальные взяты из руководства OpenAI, документации LaoZhang API и замера её команды документации.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

| Что пришло | Где | Причина | Что сделать |
| --- | --- | --- | --- |
| 400, `code: "invalid_image_request"`, пустой `param`, текст только о том, что запрос не принят | `gpt-image-2.6-web` | `frame_count` или `frame_duration_ms` вне диапазона, например 65 кадров; тот же код получает GIF с эндпоинта правок | Вернуть значения в 2–64 кадра и 20–2000 мс, GIF запрашивать только через генерацию |
| 400, `param: "size"`, `code: "invalid_value"` | `gpt-image-2.6-web` | Кадр меньше 655 360 пикселей, например `512x512` | Поставить `816x816` или `1024x1024`, а для маленьких GIF перейти на Flare или Sunburst с оплатой по токенам |
| 400 `GIF and SVG output are not supported on this route; use gpt-image-2.6-flare / gpt-image-2.6-sunburst in the OpenAI Official group.` | `gpt-image-2.6-flare-vip`, `gpt-image-2.6-sunburst-vip` | VIP-модели не делают GIF | Сменить модель на `gpt-image-2.6-web` или на Flare и Sunburst в группе `OpenAI Official` |
| `No supported sheet fits…` | OpenAI, Flare и Sunburst | Кадр слишком мал для листа, на котором рисуются все кадры: так упал 256×256 даже с 2 кадрами | Увеличить кадр до 512×512 |
| Запрос не укладывается в лимиты модели | OpenAI | Число кадров, размер кадра и `n` вместе превышают бюджет пикселей | Уменьшить `frame_count`, размер кадра или `n` |
| 400, `param: "n"`, `code: "invalid_value"` | `gpt-image-2.6-web` | `n` больше 1 | Отправлять несколько запросов по одному GIF |
| 429 примерно через 2 минуты | `gpt-image-2.6-web` в часы пик | Нехватка мощности на крупных GIF и GIF с большим числом кадров; не списывается | Повторить позже либо уменьшить число кадров или размер |
| Тайм-аут на стороне клиента | Все маршруты | GIF 1024×1024 на 16 кадров по документации LaoZhang API идёт около 100 секунд, на 64 кадра — около 2 минут | Поставить тайм-аут клиента от 300 секунд |
| GIF вернулся маленьким и странного размера, например 439×390 | `gpt-image-2.6-web` | Запрос отправлен без `size` | Всегда передавать `size` |

Отказ SDK принять `frame_count` и `frame_duration_ms` в этот список не входит, потому что до API такой запрос не доходит. Он лечится передачей полей через `extra_body`, как в разделе с кодом.

## Как проверить, что GIF зацикливается без скачка

У «зацикленности» GIF два разных смысла, и проверять нужно оба. Первый — флаг повтора внутри файла: значение 0 означает бесконечное воспроизведение, и у всех GIF из GPT Image 2.6, проверенных 5 ноября 2026 года, он уже стоит. Второй — плавный стык: последний кадр должен переходить в первый так же мягко, как соседние кадры друг в друга. Его модель не гарантирует, и именно на нём заметен «прыжок» каждые 1–2 секунды.

OpenAI в своём руководстве по промптам советует для плавного цикла дать объекту исходную позу, в которую он вернётся, и прямо сказать, двигается ли камера. Проверка 5 ноября 2026 года показала, что этот совет не гарантирует результат. Скрипт ниже делит среднюю разницу пикселей между последним и первым кадром на среднюю разницу между соседними кадрами. У 9-кадрового GIF с промптом OpenAI получилось 1,38, и на стыке видно, как фонарь и поза обезьянки прыгают. Тот же запрос с коротким промптом без слов о цикле дал 1,08, вариант на 4 кадра — 0,72, на 16 кадров — 0,93. Опубликованный OpenAI образец Sunburst показал 0,72, GIF Flare из документации LaoZhang API — 0,68. На каждый промпт был один прогон, поэтому эти числа показывают только то, что просьба вернуться в исходную позу не страхует от скачка. Что короткие промпты замыкают цикл лучше, они не доказывают. Как формулировать движение и цикл в промпте, разобрано в [руководстве по промптам для GPT Image 2.6](https://blog.laozhang.ai/ru/posts/gpt-image-2-6-prompt-guide).

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

![Схема стыка цикла GIF: обычные шаги между соседними кадрами и переход с 9-го кадра на 1-й, ниже замеры от 0,68 до 1,38 с порогом 1](https://blog.laozhang.ai/posts/ru/gpt-image-2-6-gif-api/img/gif-loop-seam.webp)

Скрипту нужен только Pillow (`pip install pillow`). Сохраните его как `check_gif.py` и передайте один или несколько GIF:

```python
import sys
from PIL import Image, ImageChops, ImageStat


def diff(a, b):
    """Средняя разница пикселей двух кадров, % от полной шкалы."""
    d = ImageChops.difference(a, b)
    return sum(ImageStat.Stat(d).mean) / 3 / 255 * 100


for path in sys.argv[1:]:
    im = Image.open(path)
    loop = im.info.get("loop")
    frames, durations = [], []
    try:
        while True:
            frames.append(im.convert("RGB"))
            durations.append(im.info.get("duration"))
            im.seek(im.tell() + 1)
    except EOFError:
        pass

    steps = [diff(frames[i], frames[i + 1]) for i in range(len(frames) - 1)]
    step = sum(steps) / len(steps)
    seam = diff(frames[-1], frames[0])
    print(f"{path}: {im.size[0]}x{im.size[1]}, кадров {len(frames)}, "
          f"мс {sorted(set(durations))}, loop={loop}, стык {seam / step:.2f}")
```

```bash
python3 check_gif.py anim.gif
# anim.gif: 1024x1024, кадров 9, мс [200], loop=0, стык 1.38
```

Читать результат просто. Число кадров и миллисекунды должны совпасть с `frame_count` и `frame_duration_ms` из запроса, `loop=0` означает бесконечный повтор. Стык до 1 значит, что скачок с последнего кадра на первый не больше обычного шага анимации, и на глаз цикл выглядит цельным. Заметно больше 1, как 1,38 в примере, — сигнал посмотреть GIF глазами и при видимом рывке сгенерировать заново: та же генерация с тем же промптом даёт другой результат. Скрипт сравнивает только кадры между собой, поэтому для почти статичной анимации с крошечным шагом даже небольшой стык даст большое число. В таком случае решает просмотр.

## Можно ли сделать GIF из готовой картинки через /v1/images/edits

По документации нельзя. Руководство OpenAI прямо пишет, что GIF доступен только для генерации и эндпоинт правок его не возвращает. На `gpt-image-2.6-web` такой запрос получает 400 с кодом `invalid_image_request`. Единственное исключение замечено один раз: 5 ноября 2026 года команда документации LaoZhang API получила GIF в ответ на правку через официальную переадресацию. OpenAI это поведение не описывает, и оно может перестать работать в любой момент, поэтому строить на нём продукт рискованно. Надёжный путь по документации — сгенерировать анимацию заново и подробно описать в промпте объект с исходной картинки.

*Примечание: [laozhang.ai — наш собственный сервис](https://blog.laozhang.ai/ru/about#laozhang); его цены — наши тарифы, а не независимое сравнение.*

Правки по разметке — другая функция того же эндпоинта: вы обводите область на копии изображения и описываете изменение. Как она работает через API, разобрано в [статье о правках по разметке в GPT Image 2.6](https://blog.laozhang.ai/ru/posts/gpt-image-2-6-image-markup-api). Если анимация нужна без кода, её можно сделать прямо в чате, подробности в статье [«Как сделать GIF в ChatGPT: кадры, скорость и что перерисуется»](https://blog.laozhang.ai/ru/posts/how-to-make-a-gif-in-chatgpt).

## Источники

Внешние страницы, на которые ссылается это руководство, в порядке упоминания. Последнее обновление: 2026-11-05.

- [Руководство OpenAI по генерации изображений](https://developers.openai.com/api/docs/guides/image-generation) (developers.openai.com)
- [справочник OpenAI по методу images.generate](https://developers.openai.com/api/reference/resources/images/methods/generate) (developers.openai.com)
