Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
배경 제거 API 가격: 사용 가능한 이미지당 비용
2026/09/03

배경 제거 API 가격: 사용 가능한 이미지당 비용

라이브 88 크레딧 기준으로 배경 제거 API 요금을 계산하고, 거부된 결과물, 재시도, 저장소, 검수를 포함한 사용 가능한 이미지의 실제 비용을 구하는 방법을 설명합니다.

2026년 9월 3일에 확인한 mj-v7-remove-bg의 현재 배경 제거 API 가격은 88 크레딧, 즉 요청당 $0.088입니다. 이는 요청 예산의 올바른 시작점입니다. 사용 가능한 컷아웃 한 장의 비용이 자동으로 이 가격이 되지는 않습니다.

완성된 이미지도 헤일로 현상이 있을 수 있고, 핸들 구멍을 잃을 수 있고, 그림자가 평평해질 수 있으며, 다음 서비스가 받아들일 수 없는 형식으로 도착할 수 있습니다. 이 가이드는 경로를 호출하는 방법, 안전하게 폴링하는 방법, 해결된 요금을 검사하는 방법, 실제로 검수를 통과하는 이미지의 비용을 계산하는 방법을 보여줍니다.

TL;DR

  • 라이브 예상가가 2026년 9월 3일 mj-v7-remove-bg의 완성 요청당 88 크레딧($0.088) 을 반환했습니다. 1 크레딧은 $0.001입니다.[1]
  • 요청은 정확히 하나의 공개 HTTP(S) URL을 사용합니다. 프롬프트, 해상도, 속도, 상위 작업 ID는 필요 없습니다.[2]
  • 작업은 비동기식입니다: 한 번 제출하고, 반환된 작업 ID를 저장하고, 작업 엔드포인트를 폴링합니다. 폴링은 크레딧을 소비하지 않습니다.[3]
  • 제출한 파일 수가 아니라 총 청구된 비용 / 승인된 결과물로 예산을 책정하세요. 80% 승인률에서 $0.088 요청은 사용 가능한 이미지당 $0.11이 됩니다.
  • usage.credits: 0인 실패한 작업은 환불되었습니다. 팀이 형태 품질이 나쁘다고 거부한 완성된 결과물도 여전히 완료된 작업이므로 승인된 이미지 계산에 포함하세요.[3]
  • 대량 처리를 약속하기 전에 자신의 카탈로그에서 추출한 작은 테스트 세트를 실행하세요. 한 장의 깔끔한 상품 사진은 머리카락, 유리, 낮은 명도 대비, 또는 구멍이 있는 물체에 대해 거의 말해주지 않습니다.

인용된 가격이 유용한 숫자가 되는 경우가 드문 이유

앱이 업로드된 이미지 수천 장의 배경을 제거한다면 가격, 가장자리 품질, 응답 시간, 해상도, 파일 전달 방식이 모두 결과에 영향을 줍니다. 이런 서비스를 표시 가격만으로 비교할 수는 없습니다. 실제로 필요한 계산은 더 구체적입니다:

사용 가능한 이미지당 비용 = 총 청구된 API 비용 / 검수를 통과한 이미지

그 분모가 결정을 바꿉니다. 세밀한 형태를 손상시키는 저가 엔드포인트는 재실행과 수동 정리를 포함하면 더 높은 가격의 엔드포인트보다 비용이 더 들 수 있습니다.

현재 배경 제거 API 가격이 제공하는 것

라이브 Midjourney V7 모델 페이지는 Remove BG를 경량 편집으로 나열합니다. 현재 요청 예상가는 전체 크레딧으로 해결되며, 필수 페이로드의 라이브 예상가는 88 크레딧입니다.[1] 1 크레딧이 $0.001이므로 예산에 $0.088을 사용하세요.

요청88 크레딧 기준 API 소계숫자가 가정하는 것
1$0.088한 번의 완성된 제거 요청
10$0.88열 번의 완성된 요청, 승인 검토 전
100$8.80완성된 결과물 거부 없음
1,000$88.00저장소, 검수, 변환 비용 없음
10,000$880.00동일 요율과 100% 승인된 결과물 비율

이 작업을 상세 가격 라벨에서 $0.0873로 표시된 것으로 볼 수도 있습니다. 크레딧 잔액을 조정하기 위해 그 소수 자리 숫자를 사용하지 마세요. 공개 가격 표와 예상가는 청구 가능한 단위를 88 전체 크레딧, 즉 $0.088로 표시합니다. 대규모 실행을 하기 전에 라이브 모델 페이지를 다시 확인하세요. 가격이 변할 수 있습니다.

API 소계는 호출 주변의 작업을 제외합니다:

  • 서비스가 가져올 수 있는 URL에서 소스를 호스팅;
  • 결과를 다운로드하고 저장;
  • 투명도, 차원 및 파일 호환성 검증;
  • 인간 검토 또는 자동화된 품질 검사;
  • 승인 규칙이 실패한 완성된 결과물;
  • 크기 조정, 색상 수정, 그림자 재구성 또는 이후 합성.

프로토타입의 경우 이러한 비용이 무시할 수 있습니다. 카탈로그 규모에서는 API 항목과 같은 스프레드시트에 포함되어야 합니다.

하나의 소스 URL, 프롬프트 없음, 상위 작업 없음

mj-v7-remove-bg는 다른 Midjourney V7 편집 작업보다 간단합니다. 이전 생성에서 체인되지 않습니다. 이미 가지고 있는 이미지를 image_urls에서 보냅니다.[2]

필드필수허용되는 값
modelmj-v7-remove-bg
image_urls정확히 하나의 공개 HTTP(S) 이미지 URL을 포함하는 배열
prompt허용되지 않음보내지 마세요
model_params허용되지 않음속도, 작업 ID, 편집 옵션 없음
size / resolution허용되지 않음경로는 출력 크기 제어를 노출하지 않습니다

스키마가 엄격합니다. 다른 이미지 모델에서 복사한 필드를 추가하는 것은 무해한 작동 오류가 아닙니다. 요청을 무효화합니다. Base64 문자열, data: URL, 로컬 경로, 인증된 브라우저 전용 링크도 잘못된 입력입니다. 소스를 제어하는 저장소에 업로드하고 쿠키나 로그인 없이 로드되는지 확인합니다.

다음은 완전한 cURL 요청입니다:

curl https://reapi.ai/api/v1/images/generations \
  -H "Authorization: Bearer $REAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mj-v7-remove-bg",
    "image_urls": [
      "https://your-cdn.example/catalog/source-product.png"
    ]
  }'

유효한 제출은 processing 상태의 작업 기록을 반환합니다. 해당 id를 저장합니다. 최종 이미지는 POST 응답에 도착하지 않습니다.

한 번 제출한 후 기한이 있는 폴링

가장 안전한 초보자 구현에는 두 가지 별도의 작업이 있습니다: 작업을 생성하는 하나의 POST와 그 상태를 읽는 제한된 GET 요청입니다. POST를 폴링 루프 안에 넣지 마세요.

이 Node.js 예제는 2.5초마다 폴링하고 15분 로컬 기한을 사용합니다. 작업 참조는 2~3초 케이던스를 권장하고 비행 중인 작업 읽기가 캐시되므로 더 빠른 폴링은 이미지가 더 빨리 완료되게 하지 않고 요청 압력만 추가한다고 설명합니다.[3]

const API_BASE = 'https://reapi.ai/api/v1';
const API_KEY = process.env.REAPI_API_KEY;
const sourceUrl = process.argv[2];

if (!API_KEY) throw new Error('Set REAPI_API_KEY');
if (!sourceUrl) throw new Error('Pass one public source image URL');

const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json',
};

async function readJson(response) {
  const body = await response.json();
  if (!response.ok) {
    const code = body.error?.code ?? response.status;
    const message = body.error?.message ?? 'Request failed';
    throw new Error(`${code}: ${message}`);
  }
  return body;
}

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function getTask(taskId) {
  for (let attempt = 0; attempt < 4; attempt += 1) {
    let response;
    try {
      response = await fetch(`${API_BASE}/tasks/${taskId}`, {
        headers: { Authorization: `Bearer ${API_KEY}` },
        signal: AbortSignal.timeout(15_000),
      });
    } catch (error) {
      if (attempt === 3) throw error;
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    if (response.status === 429) {
      const seconds = Number(response.headers.get('retry-after'));
      await response.body?.cancel();
      await sleep(Number.isFinite(seconds) ? seconds * 1000 : 5000);
      continue;
    }

    if ([502, 503, 504].includes(response.status)) {
      await response.body?.cancel();
      await sleep(1000 * 2 ** attempt);
      continue;
    }

    return readJson(response);
  }

  throw new Error(`Task ${taskId} could not be read after transient errors`);
}

async function removeBackground(imageUrl) {
  const submitted = await readJson(
    await fetch(`${API_BASE}/images/generations`, {
      method: 'POST',
      headers,
      body: JSON.stringify({
        model: 'mj-v7-remove-bg',
        image_urls: [imageUrl],
      }),
      signal: AbortSignal.timeout(30_000),
    })
  );

  const deadline = Date.now() + 15 * 60 * 1000;

  while (Date.now() < deadline) {
    await sleep(2500);
    const task = await getTask(submitted.id);

    if (task.status === 'completed') {
      const urls = task.output?.image_urls ?? [];
      if (urls.length === 0) {
        throw new Error('Task completed without an image URL');
      }
      return {
        taskId: task.id,
        imageUrls: urls,
        credits: task.usage?.credits,
      };
    }

    if (task.status === 'failed') {
      const code = task.error?.code ?? 'UNKNOWN_TASK_ERROR';
      const message = task.error?.message ?? 'Background removal failed';
      const credits = task.usage?.credits ?? 'unknown';
      throw new Error(
        `${code}: ${message}; task=${task.id}; settled_credits=${credits}`
      );
    }
  }

  throw new Error(`Polling deadline reached for task ${submitted.id}`);
}

removeBackground(sourceUrl)
  .then(console.log)
  .catch((error) => {
    console.error(error.message);
    process.exitCode = 1;
  });

다음을 사용하여 실행합니다:

REAPI_API_KEY=rk_live_xxx node remove-background.mjs \
  https://your-cdn.example/catalog/source-product.png

프로덕션에서는 작업 ID를 데이터베이스에 작성한 후 제출 핸들러에서 반환합니다. 워커는 프로세스를 다시 시작한 후 폴링을 재개할 수 있습니다. API 키를 서버에 보관하십시오. 브라우저 JavaScript나 모바일 앱 번들에 배치하지 마십시오.

하나의 실패한 라이브 요청의 실제 비용

2026년 9월 3일에 이 가이드를 확인하는 동안 하나의 mj-v7-remove-bg 요청을 제출했습니다. 소유한 머그 사진을 사용했습니다. API는 엄격한 페이로드를 작업 task_01a065b32dbe771eb5babd28de9b38d9로 수락했지만, 나중에 failed 상태로 끝났고 오류 코드는 80003이고 메시지는 Service authentication failed입니다. 결과물을 반환하지 않았으며 usage.credits: 0이므로 청구된 비용은 $0.088이 아니라 $0입니다.

성공적인 예를 만들기 위해 변경되지 않은 요청을 재제출하지 않았습니다. 이 단일 실행은 작업 및 환불 경로를 확인합니다. 컷아웃 품질, 파일 타입, 차원, 알파 지원 또는 일반적인 완성 시간에 대해서는 아무것도 말하지 않습니다. 위의 88 크레딧 수치는 완료되는 요청에 대한 라이브 예상가로 남아있습니다. 항상 제출 수에 광고된 요율을 곱하는 대신 최종 작업을 읽으십시오.[3]

요청 가격을 사용 가능한 이미지당 비용으로 전환

수락 규칙부터 시작합니다. 달성하고자 하는 백분율이 아닙니다. 그런 다음 배송할 작업 부하에서 추출한 샘플에 대한 백분율을 측정합니다.

배경 제거 API 비용 보조금: 제출된 요청에서 컷아웃 검토를 통해 승인된 이미지까지

각 완성된 요청이 하나의 후보를 생산하면 계획 방정식은:

사용 가능한 이미지 비용 = $0.088 / 승인률

아래 테이블에는 시나리오가 포함되어 있습니다. 측정된 모델 품질이 아닙니다:

가정된 승인률1,000개 승인된 이미지의 요청API 소계사용 가능한 이미지당 비용
100%1,000$88.000$0.0880
95%1,053$92.664$0.0927
90%1,112$97.856$0.0979
80%1,250$110.000$0.1100
50%2,000$176.000$0.1760

분자에 해결된 작업 데이터를 사용합니다. 작업 응답은 모든 상태에서 usage.credits를 노출합니다. processing에 0을 더한 것은 청구가 아직 해결되지 않았다는 의미입니다. completed는 청구된 크레딧을 보여줍니다. failed에 0을 더한 것은 예약이 환불되었다는 의미입니다. 양수 값은 기록된 청구가 보유되었음을 의미합니다.[3]

이 구분은 두 가지 회계 오류를 방지합니다. 환불된 공급자 장애를 지불된 결과물로 세지 말고, 완성되었지만 못생긴 컷아웃을 지출에서 지우지 마십시오. 여전히 지불된 요청을 소비했습니다.

테스트 전에 "사용 가능"이 무엇을 의미하는지 결정

시각적 흘낏보기는 반복 가능한 벤치마크에 너무 모호합니다. 샘플을 제출하기 전에 짧은 루브릭을 작성하고 모든 결과에 동일한 검사를 적용합니다.

투명도 및 모서리 무결성

체커보드를 표시하는 도구에서 다운로드된 파일을 엽니다. 흰색 배경은 투명도가 아닙니다. 100% 및 400% 확대에서 전체 실루엣을 검사하여 흰색 또는 어두운 헤일로, 누락된 픽셀, 오래된 배경의 청크를 확인합니다.

구멍, 세밀한 세부 사항, 어려운 재료

핸들 구멍, 끈, 스포크, 느슨한 머리, 털, 잎이 있는 예제를 포함합니다. 카탈로그에 나타나는 경우 유리, 반투명 포장, 윤이나는 금속, 낮은 명도 대비 피사체 모서리를 추가합니다. 어두운 머그잔에서 흰색으로 통과하는 모델도 여전히 맑은 병이나 베이지색에 창백한 물체에서 실패할 수 있습니다.

제품 세부 사항 및 그림자

라벨, 인쇄된 텍스트, 얇은 부착물 및 제품 윤곽이 변경되지 않았는지 확인합니다. 접촉 그림자를 유지, 부드럽게 또는 제거해야 하는지 결정합니다. 다른 대상은 다른 답을 필요로 하므로 "그림자 제거됨"이 자동으로 통과하지 않습니다.

파일 계약

MIME 유형, 확장명, 너비, 높이, 바이트 크기, 알파 존재 여부, 반환된 URL 수를 기록합니다. 공개 계약은 output.image_urls를 반환하지만 이 작업에 특정 확장명이나 픽셀 크기를 약속하지 않습니다. 파이프라인의 다음 API, 설계 도구 또는 마켓플레이스 수입기에 대해 실제 파일을 테스트합니다.

유용한 파일럿은 쉬운 경우만큼 어려운 경우를 대표하기에 충분히 큽니다. 10~30개의 소유한 이미지는 명백한 비호환성을 노출할 수 있습니다. 최종 조달 벤치마크는 실제 카탈로그의 분포를 따라야 합니다.

비용 루프를 만들지 않고 실패 재시도

재시도 규칙은 좌절감이 아니라 오류를 사용해야 합니다. 공개 오류 참조는 잘못된 입력, 인증, 잔액 부족, 속도 제한, 용량 장애 및 터미널 워크플로우 장애를 구분합니다.[4]

결과해야 할 일
HTTP 400, 401, 402 또는 404요청, 자격 증명, 잔액 또는 작업 ID를 수정하십시오. 변경되지 않은 상태로 반복하지 마십시오.
HTTP 429Retry-After를 기다린 후 동일한 읽기 또는 안전한 작업을 재시도합니다.
HTTP 502, 503 또는 504지수적으로 백오프하고 시도를 제한하십시오.
작업 failed재제출 여부를 결정하기 전에 error.codeusage.credits를 읽으십시오.
작업 completed, QA 실패소스를 변경하거나 이미지를 수동 정리로 라우팅하십시오. 지불된 재실행을 제한하십시오.

자동 폴링 재시도 외부에 제출 작업을 유지합니다. POST가 작업 ID를 반환하면 모든 이후 검사는 해당 작업에 대한 GET이어야 합니다. 루브릭이 실패한 완성된 이미지의 경우 동일한 요청을 두 번 할 수 있습니다 같은 모서리 문제를 재현합니다. 입력 자르기, 명도 대비 또는 전처리를 변경하는 것이 제한 없는 재실행보다 더 유용합니다.

작업이 완료되는 즉시 승인된 파일을 자신의 저장소에 다운로드합니다. 작업 설명서는 출력 URL이 CDN에 재호스팅되지만 장기 보유를 보장하지 않는다고 말합니다.[3]

호스팅된 경로와 공식 Midjourney API

mj-v7-remove-bg는 reAPI를 통해 노출된 호스팅된 경로입니다. Midjourney의 공식 공개 API로 설명되어서는 안 됩니다. Midjourney의 현재 커뮤니티 가이드라인에 따르면 일반적으로 API를 제공하지 않으며 드물게 명시적으로 부여된 경우를 제외하고 무단 자동화를 금지합니다.[5]

그 구분은 조달 중에 중요합니다. 모델 라벨이 공식 공급자 관계를 만든다고 가정하는 대신 호스팅된 서비스 자체의 계약 및 허용 가능한 사용 조건을 검토합니다. 별도 가이드 Midjourney에 API가 있습니까?는 그 질문을 자세히 다룹니다. 이 문서는 호출 가능한 경로와 해당 비용에 초점을 맞춥니다.

FAQ

mj-v7-remove-bg는 이전 Midjourney 작업이 필요합니까?

아니요. 직접 이미지 편집입니다. image_urls에 하나의 공개 이미지 URL을 전달합니다. task_id 또는 model_params를 보내지 마십시오.[2]

base64 이미지를 보낼 수 있습니까?

아니요. 요청 스키마는 하나의 공개 HTTP(S) URL을 허용합니다. 먼저 파일을 업로드한 다음 서비스가 브라우저 세션 없이 가져올 수 있는 URL을 보냅니다.

현재 가격은 $0.0873 또는 $0.088입니까?

청구 예상가에는 $0.088을 사용합니다. 작업은 상세 표시에서 $0.0873으로 나타날 수 있지만 라이브 예상가는 88 전체 크레딧을 반환하고 1 크레딧은 $0.001입니다.[1]

하나의 요청이 4개의 배경 제거 이미지를 반환합니까?

그런 가정으로 예산을 잡지 마십시오. 4개 이미지당 요청은 기본 Midjourney V7 생성을 설명합니다. 직접 Remove BG 계약은 하나의 소스 이미지를 가져오고 이미지 URL 배열을 반환하지만 4개 컷아웃을 약속하지 않습니다. 파일럿의 최종 작업 배열 길이를 검사합니다.[2]

API는 항상 투명한 PNG를 반환합니까?

현재 공개 계약은 특정 확장명, MIME 유형 또는 알파 채널 보증이 아닌 이미지 URL을 약속합니다. 실제 결과를 다운로드하고 PNG 전용 다운스트림 워크플로우를 구축하기 전에 알파를 확인하십시오.

폴링은 크레딧을 소비합니까?

아니요. 작업 폴링은 크레딧을 소비하지 않습니다. 2~3초마다 폴링하고 응용프로그램에 맞는 기한에서 중지합니다.[3]

실패한 배경 제거 작업이 청구됩니까?

최종 작업에서 usage.credits를 읽으십시오. 0 크레딧이 있는 실패한 작업은 완전히 환불되었습니다. 일반 작업 계약은 일부 모델별 생성 후 안전 사례에서 양수 보유 청구를 허용하므로 상태만으로 청구서를 추론하지 마십시오.[3]

1,000개의 사용 가능한 이미지 비용은 얼마입니까?

100% 승인률에서 1,000개 요청은 현재 요율에서 $88입니다. 80% 승인에서 1,000개 사용 가능한 파일에 도달하려면 1,250개 요청이 필요하고 저장소 및 검수 전에 $110 비용이 듭니다. 가정한 요율을 측정된 파일럿으로 바꾸십시오.

정가가 아니라 승인된 비용으로 선택

현재 배경 제거 API 가격은 요청 단위로 보면 88 credits, 즉 $0.088로 단순합니다. 하지만 운영 환경에서의 판단은 그다음부터입니다. 애플리케이션에 필요한 가장자리 품질과 파일 규격을 실제 이미지로 시험하고, 각 작업의 확정 사용량을 읽은 뒤, 총비용을 고정된 기준을 통과한 출력 수로 나누세요.

먼저 Midjourney V7 API 참조를 확인하고, 직접 소유한 이미지로 소규모 파일럿을 실행하며, 구현할 때는 작업 폴링 참조를 함께 확인하세요. 그러면 검증되지 않은 표시 가격이 아니라 근거 있는 사용 가능 이미지당 비용을 얻을 수 있습니다.

References

  1. reAPI. Midjourney V7 model page and live pricing. Retrieved September 3, 2026 from reapi.ai/models/midjourney-v7
  2. reAPI. Midjourney V7 API reference. Retrieved September 3, 2026 from reapi.ai/docs/midjourney-v7
  3. reAPI. Tasks: polling, usage, output, and refund semantics. Retrieved September 3, 2026 from reapi.ai/docs/api/tasks
  4. reAPI. API error codes and retry guidance. Retrieved September 3, 2026 from reapi.ai/docs/api/errors
  5. Midjourney. Community Guidelines: unauthorized automation and third-party apps. Retrieved September 3, 2026 from docs.midjourney.com/hc/en-us/articles/32013696484109-Community-Guidelines