Skip to main content
POST
segmentregion_edit는 기존 비동기 이미지 엔드포인트를 사용합니다. 반환된 task_id를 저장한 뒤 작업 상태 조회를 폴링하세요. 생성 요청은 최종 레이어나 이미지를 직접 반환하지 않습니다.
API Key를 브라우저 번들, LocalStorage, URL 또는 프런트엔드 로그에 노출하지 마세요. 백엔드나 BFF를 통해 APIMart를 호출하세요.

작업 개요

source_task_idimage_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로 자동 재시도하지 마세요.

비동기 작업 흐름

생성 성공 시 HTTP 200data[0].task_id가 반환됩니다. GET /v1/tasks/{task_id}?language=ko를 2초 간격에서 최대 5초까지 백오프하며 최대 10분 동안 폴링합니다. 원본 이미지가 바뀌면 기존 폴링을 중지하세요.
작업 조회가 HTTP 200이어도 data.statusfailed일 수 있습니다. 항상 data.status로 성공 여부를 판단하고 data.error를 표시하세요.

segment

요청 매개변수

segment에는 prompt가 필요하지 않습니다. image_id, image_index, billing_model_name, n, size, response_format을 보내지 마세요. cache_only=truerefresh=true는 함께 사용할 수 없습니다.

요청 예시

캐시 miss도 성공 작업입니다. cache_status 또는 from_cache를 사용하고 cached로 hit를 판단하지 마세요.

완료 응답

segmentdata.result는 분할 결과 자체이며 images로 감싸지지 않습니다.
유효한 mask_rle 또는 mask_url이 없는 객체는 근사 박스 편집만 가능합니다.

mask_rle 디코딩

mask_rle.counts는 COCO 압축 카운트 문자열이며 Base64나 zlib이 아닙니다. 열 우선으로 펼쳐지며 첫 run은 배경, 이후 전경과 배경이 교대로 나타납니다. 다음 TypeScript는 브라우저용 행 우선 이진 마스크로 변환합니다.
큰 마스크는 Web Worker에서 디코딩하세요. 전체 mask_rle.counts를 로그, 분석, URL 또는 오류 보고에 보내지 마세요.

마스크를 정밀 선택 영역으로 변환

연결 요소와 구멍의 윤곽을 추출하고 단순화한 뒤 모든 점을 0–1로 정규화합니다. 각 링은 서로 다른 점 3개 이상, 0이 아닌 면적, 자기 교차 없음 조건을 충족해야 합니다. 레이어당 최대 16개 영역, 링당 최대 400개 점을 유지합니다.
mask_size[height,width]이며 CSS 표시 좌표가 아닌 원본 마스크 좌표입니다. object-fit: contain에서는 여백을 빼고 실제 그리기 영역으로 변환한 뒤 0–1로 제한하세요.
원본 이미지나 mask_url 픽셀을 읽으려면 CORS가 필요합니다. src보다 먼저 crossOrigin = "anonymous"를 설정하거나 Blob을 가져오세요. mask_rle 직접 디코딩은 이 제약을 피합니다.

영역 편집: region_edit

요청 매개변수

selection_regions, boxes, object_indices 중 하나 이상이 비어 있지 않아야 합니다. API는 조합을 허용하지만 프런트엔드는 요청당 한 방식만 사용하는 것이 좋습니다.
billing_model_name, size, aspect_ratio, source_aspect_ratio, source_size, image_urls를 보내지 마세요. n은 생략 또는 1, claim_asset은 생략 또는 false, response_format은 생략 또는 url만 허용됩니다. Base64와 stream=true는 지원하지 않습니다.

선택 방식

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_idsegment에 전달하지 말고 이전 이미지 ID를 계속 편집하지 마세요.

오류 처리

과금

  • segment는 무료이며 cost=0, credits_cost=0으로 완료되지만 인증과 유효한 원본 작업이 필요합니다.
  • region_edit는 유료입니다. 완료 작업의 costcredits_cost를 사용하고 프런트엔드에 가격을 고정하지 마세요.
  • 내부 필드 billing_model_name은 보내지 마세요.

프런트엔드 체크리스트

  • API Key는 백엔드 또는 BFF에만 보관합니다.
  • segment에는 source_task_id만 보내고 image_idimage_index는 보내지 않습니다.
  • region_edit에는 segment의 image_id와 하나 이상의 선택 방식을 사용합니다.
  • 정밀 편집은 selection_regions를 사용하고 object_indices는 박스 근사로만 사용합니다.
  • mask_size를 항상 [height,width]로 해석하고 표시 배율과 여백을 보정합니다.
  • 같은 네트워크 재시도에는 원래 멱등 Key를 재사용하고 URL과 새 image_id를 모두 검증합니다.