Grok Imagine 2.0 Ext
Слои и редактирование областей Grok Imagine 2.0 Ext
Получайте слои объектов и точные маски через segment, затем редактируйте полигоны, рамки или найденные объекты через region_edit.
POST
segment и region_edit используют существующий асинхронный endpoint изображений. Сохраните полученный task_id, затем опрашивайте Статус задачи; запрос создания не возвращает готовые слои или изображения.Обзор операций
source_task_id и image_id не взаимозаменяемы. segment принимает ID исходной задачи, а region_edit — ID изображения. Чтобы сегментировать отредактированное изображение, используйте ID завершённой задачи region_edit как новый source_task_id.Заголовки запроса
ИспользуйтеAuthorization: Bearer <APIMART_API_KEY>, Content-Type: application/json и Accept: application/json.
Idempotency-Key необязателен, но настоятельно рекомендуется для платных запросов region_edit. Поддерживается 1–191 видимый символ ASCII; рекомендуется UUID. Используйте новый ключ для каждой логической операции. При сетевом повторе того же запроса используйте исходный ключ и идентичный body. Если результат неопределён, не повторяйте автоматически с новым ключом.
Асинхронный процесс
Успешное создание возвращает HTTP200 и data[0].task_id. Опрашивайте GET /v1/tasks/{task_id}?language=ru с интервалом от 2 до 5 секунд и общим лимитом 10 минут. Останавливайте старый опрос при смене исходного изображения.
segment
Параметры запроса
Для
segment не нужен prompt. Не отправляйте image_id, image_index, billing_model_name, n, size или response_format. cache_only=true и refresh=true несовместимы.
Примеры запросов
- Получить слои
- Проверить кэш
cache_status или from_cache; не определяйте попадание по cached.
Завершённый ответ
Дляsegment поле data.result непосредственно содержит сегментацию и не оборачивается в images.
Объект без допустимого
mask_rle или mask_url можно редактировать только приблизительно по рамке.
Декодирование mask_rle
mask_rle.counts — строка сжатых счётчиков COCO, а не Base64 или zlib. Она разворачивается по столбцам; первый run — фон, затем чередуются объект и фон.
Следующий TypeScript преобразует её в удобную для браузера двоичную маску по строкам:
mask_rle.counts в логи, аналитику, URL или отчёты об ошибках.
Преобразование маски в точное выделение
0–1. В каждом кольце должно быть не менее 3 разных точек, ненулевая площадь и не должно быть самопересечений. Оставляйте до 16 крупнейших областей на слой и 400 точек на кольцо.
Для чтения пикселей исходного изображения или mask_url нужен CORS. Задайте crossOrigin = "anonymous" до src либо загрузите Blob. Прямое декодирование mask_rle не имеет этой зависимости.
Редактирование области: region_edit
Параметры запроса
Хотя бы одно из
selection_regions, boxes или object_indices должно быть непустым. API разрешает комбинации, но frontend должен использовать один способ на запрос.
Способы выделения
- Точный полигон
- Нормализованная рамка
- Пиксельная рамка
- Индекс объекта
points может быть плоским массивом или вложенными парами. Все значения должны быть конечными и находиться в 0–1; в каждом кольце нужно не менее 3 пар.Завершённый ответ
result.images[0].items[0]. Для старого ответа сопоставляйте url[0] и image_ids[0] только при равной длине массивов. Продолжайте лишь после получения HTTP(S) URL и нового image_id.
Срок URL определяйте по expires_at; не фиксируйте число часов. Нужные надолго файлы скачивайте или сохраняйте.
Последовательное редактирование
После завершения одновременно обновите отображаемый URL, текущий ID изображения и ID исходной задачи, затем очистите старые слои и состояние опроса.- Повторная сегментация: использовать ID этой задачи
region_editкакsource_task_id - Повторное редактирование: использовать новый
image_id - Не передавайте
image_idвsegmentи не продолжайте редактировать предыдущий ID изображения.
Обработка ошибок
Оплата
segmentбесплатен и завершается сcost=0иcredits_cost=0, но требует авторизации и допустимой исходной задачи.region_editплатный. Используйтеcostиcredits_costзавершённой задачи; не фиксируйте цены во frontend.- Не отправляйте внутреннее поле
billing_model_name.
Проверка frontend
- Хранить API Key только на backend или BFF.
- Отправлять в
segmentтолькоsource_task_id, безimage_idиimage_index. - Использовать
image_idиз segment дляregion_editи передавать хотя бы один способ выделения. - Для точного редактирования использовать
selection_regions;object_indices— лишь приближение рамкой. - Всегда читать
mask_sizeкак[height,width]и учитывать масштаб и поля. - Для того же сетевого повтора использовать исходный ключ идемпотентности и проверять URL вместе с новым
image_id.