Grok Imagine 2.0 Ext
Capas y edición de regiones de Grok Imagine 2.0 Ext
Usa segment para obtener capas de objetos y máscaras precisas, y edita polígonos, cuadros u objetos detectados con region_edit.
POST
segment y region_edit usan el endpoint asíncrono de imágenes existente. Guarda el task_id devuelto y consulta Obtener estado de la tarea; la solicitud de creación no devuelve las capas ni imágenes finales.Resumen de operaciones
source_task_id e image_id no son intercambiables. segment recibe el ID de la tarea de origen y region_edit el ID del recurso de imagen. Para segmentar una imagen editada, usa el ID de la tarea region_edit completada como nuevo source_task_id.Encabezados de solicitud
UsaAuthorization: Bearer <APIMART_API_KEY>, Content-Type: application/json y Accept: application/json.
Idempotency-Key es opcional y se recomienda especialmente para solicitudes region_edit de pago. Admite entre 1 y 191 caracteres ASCII visibles; se recomienda un UUID. Usa una clave nueva por operación lógica. Un reintento de red de la misma solicitud debe reutilizar la clave original y el mismo cuerpo. Si el resultado es indeterminado, no reintentes automáticamente con otra clave.
Flujo de tarea asíncrona
Una creación correcta devuelve HTTP200 y data[0].task_id. Consulta GET /v1/tasks/{task_id}?language=es cada 2 segundos, aumenta hasta un máximo de 5 segundos y limita el total a 10 minutos. Detén el sondeo anterior al cambiar la imagen de origen.
segment
Parámetros de solicitud
segment no necesita prompt. No envíes image_id, image_index, billing_model_name, n, size ni response_format. cache_only=true y refresh=true son incompatibles.
Ejemplos de solicitud
- Obtener capas
- Consultar caché
cache_status (hit o miss) o from_cache; no deduzcas el acierto mediante cached.
Respuesta completada
Ensegment, data.result contiene directamente la segmentación y no está dentro de images.
Un objeto sin
mask_rle ni mask_url válido solo admite edición aproximada por cuadro.
Decodificar mask_rle
mask_rle.counts es una cadena de conteos comprimidos COCO, no Base64 ni zlib. Se expande por columnas; el primer tramo es fondo y luego alterna primer plano y fondo.
El siguiente TypeScript lo convierte en una máscara binaria por filas adecuada para el navegador:
mask_rle.counts a registros, analítica, URLs ni informes de errores.
Convertir máscaras en selecciones precisas
0–1. Cada anillo requiere al menos 3 puntos distintos, área no nula y no debe autointersecarse. Conserva como máximo las 16 regiones mayores por capa y 400 puntos por anillo.
Leer píxeles de la imagen o de mask_url requiere CORS. Define crossOrigin = "anonymous" antes de src o recupera un Blob. Decodificar mask_rle directamente evita esta dependencia.
Editar una región: region_edit
Parámetros de solicitud
Al menos uno de
selection_regions, boxes u object_indices debe contener datos. La API permite combinarlos, pero el frontend debería usar un solo método por solicitud.
Métodos de selección
- Polígono preciso
- Cuadro normalizado
- Cuadro en píxeles
- Índice de objeto
points puede ser plano o pares anidados. Cada valor debe ser finito y estar entre 0–1; cada anillo necesita al menos 3 pares.Respuesta completada
result.images[0].items[0]. En respuestas antiguas, empareja url[0] con image_ids[0] solo si ambas matrices tienen la misma longitud. Continúa únicamente tras obtener una URL HTTP(S) y un image_id nuevo.
Usa expires_at como referencia de caducidad; no fijes un número de horas. Descarga o guarda los recursos necesarios a largo plazo.
Edición continua
Al completar una edición, actualiza a la vez la URL visible, el ID del recurso y el ID de la tarea de origen, y limpia las capas y el sondeo anteriores.- Volver a segmentar: usa el ID de esta tarea
region_editcomosource_task_id - Volver a editar: usa el nuevo
image_iddevuelto - Nunca envíes
image_idasegmentni sigas editando el ID de la imagen anterior.
Gestión de errores
Facturación
segmentes gratuito y termina concost=0ycredits_cost=0, pero requiere autenticación y una tarea de origen válida.region_edites de pago. Usacostycredits_costde la tarea completada; no fijes precios en el frontend.- Nunca envíes el campo interno
billing_model_name.
Lista de comprobación del frontend
- Mantener la API Key solo en el backend o BFF.
- Enviar solo
source_task_idasegment; no enviarimage_idniimage_index. - Usar el
image_idde segment pararegion_edity aportar al menos un método de selección. - Usar
selection_regionspara edición precisa;object_indicessolo aproxima un cuadro. - Interpretar siempre
mask_sizecomo[height,width]y compensar escala y márgenes. - Reutilizar la clave idempotente original en el mismo reintento y validar tanto la URL como el nuevo
image_id.