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

작업 개요

segment 원본은 source_task_id 또는 image_urls 중 정확히 하나만 선택합니다. 이 필드들과 image_id는 서로 바꿀 수 없으며, region_edit는 계속 segment가 반환한 자산 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을 보내지 마세요. source_task_idimage_urls 중 정확히 하나만 보내세요. 이미지 URL 모드는 cache_only=true가 필요하며 cached_onlyrefresh를 지원하지 않습니다.

요청 예시

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

로컬 이미지 업로드

먼저 로컬 파일을 업로드하고 응답에서 공개 URL을 읽습니다.
반환된 urlimage_urls의 유일한 항목으로 전달하세요. 이후 폴링, 완료 응답 및 region_edit는 작업 ID 방식과 동일합니다. result.image_idobjects를 읽고 선택 영역 편집을 제출합니다. 업로드 URL은 임시이며 기본 보관 기간은 72시간입니다.
image_urls는 공개 접근 가능한 절대 HTTP(S) URL 정확히 1개만 허용합니다. 이미지 URL 모드는 cache_only=true만 지원하며 source_task_id, cached_only, refresh를 함께 보내지 마세요.

완료 응답

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 또는 공개 URL 1개가 든 image_urls. image_idimage_index는 보내지 않습니다.
  • image_urls 사용 시 cache_only=true를 설정하고 cached_onlyrefresh는 생략합니다.
  • region_edit에는 segment의 image_id와 하나 이상의 선택 방식을 사용합니다.
  • 정밀 편집은 selection_regions를 사용하고 object_indices는 박스 근사로만 사용합니다.
  • mask_size를 항상 [height,width]로 해석하고 표시 배율과 여백을 보정합니다.
  • 같은 네트워크 재시도에는 원래 멱등 Key를 재사용하고 URL과 새 image_id를 모두 검증합니다.