Grok Imagine 2.0 Ext
Grok Imagine 2.0 Ext 레이어 및 영역 편집
segment로 객체 레이어와 정밀 마스크를 가져오고 region_edit로 다각형, 사각형 또는 감지된 객체를 편집합니다.
POST
segment와 region_edit는 기존 비동기 이미지 엔드포인트를 사용합니다. 반환된 task_id를 저장한 뒤 작업 상태 조회를 폴링하세요. 생성 요청은 최종 레이어나 이미지를 직접 반환하지 않습니다.작업 개요
source_task_id와 image_id는 서로 바꿀 수 없습니다. segment는 원본 작업 ID를, region_edit는 이미지 자산 ID를 사용합니다. 편집된 이미지를 다시 분할하려면 완료된 region_edit 작업 ID를 다음 source_task_id로 사용하세요.요청 헤더
Authorization: Bearer <APIMART_API_KEY>, Content-Type: application/json, Accept: application/json을 사용합니다.
Idempotency-Key는 선택 사항이지만 유료 region_edit 요청에는 강력히 권장합니다. 표시 가능한 ASCII 문자 1~191자를 지원하며 UUID를 권장합니다. 새 논리 작업마다 새 Key를 사용하고 같은 요청의 네트워크 재시도에는 원래 Key와 동일한 body를 재사용하세요. 결과가 불확실하면 새 Key로 자동 재시도하지 마세요.
비동기 작업 흐름
생성 성공 시 HTTP200과 data[0].task_id가 반환됩니다. GET /v1/tasks/{task_id}?language=ko를 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로 hit를 판단하지 마세요.
완료 응답
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개 이상, 0이 아닌 면적, 자기 교차 없음 조건을 충족해야 합니다. 레이어당 최대 16개 영역, 링당 최대 400개 점을 유지합니다.
원본 이미지나 mask_url 픽셀을 읽으려면 CORS가 필요합니다. src보다 먼저 crossOrigin = "anonymous"를 설정하거나 Blob을 가져오세요. mask_rle 직접 디코딩은 이 제약을 피합니다.
영역 편집: region_edit
요청 매개변수
selection_regions, boxes, object_indices 중 하나 이상이 비어 있지 않아야 합니다. API는 조합을 허용하지만 프런트엔드는 요청당 한 방식만 사용하는 것이 좋습니다.
선택 방식
- 정밀 다각형
- 정규화 박스
- 픽셀 박스
- 객체 인덱스
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를 함께 갱신하고 이전 레이어와 폴링 상태를 지우세요.- 다시 분할: 이번
region_edit작업 ID를source_task_id로 사용 - 다시 편집: 새로 반환된
image_id사용 image_id를segment에 전달하지 말고 이전 이미지 ID를 계속 편집하지 마세요.
오류 처리
과금
segment는 무료이며cost=0,credits_cost=0으로 완료되지만 인증과 유효한 원본 작업이 필요합니다.region_edit는 유료입니다. 완료 작업의cost와credits_cost를 사용하고 프런트엔드에 가격을 고정하지 마세요.- 내부 필드
billing_model_name은 보내지 마세요.
프런트엔드 체크리스트
- API Key는 백엔드 또는 BFF에만 보관합니다.
segment에는source_task_id만 보내고image_id나image_index는 보내지 않습니다.region_edit에는 segment의image_id와 하나 이상의 선택 방식을 사용합니다.- 정밀 편집은
selection_regions를 사용하고object_indices는 박스 근사로만 사용합니다. mask_size를 항상[height,width]로 해석하고 표시 배율과 여백을 보정합니다.- 같은 네트워크 재시도에는 원래 멱등 Key를 재사용하고 URL과 새
image_id를 모두 검증합니다.