가격 비교 API
가격 비교 API
POST /v1/price-comparisons는 공개된 요금 규격 하나에 대해 BeatAPI 가격을 다른 플랫폼이 같은 규격에 공개한 가격과 비교합니다. API 키가 필요 없고 과금되지 않습니다.
이 비교는 중립적입니다. BeatAPI도 다른 모든 플랫폼과 같은 규칙으로 순위가 매겨지며, 다른 플랫폼이 더 저렴하면 응답이 그대로 알려 줍니다. 이때 beatapi_position은 not_lowest입니다.
빠른 시작
model만 보내면 해당 모델의 기본 구성을, 그 규격의 가격이 저장된 모든 플랫폼과 비교합니다. 다른 구성을 고르려면 spec을, 비교할 플랫폼을 고르려면 providers를 추가하세요.
요청
model과 spec은 각각 최대 200자입니다. model이 비어 있으면 spec으로 모델을 찾습니다.
기본 구성
spec이 없으면 어느 플랫폼이 이기는지가 아니라 규격의 형태로만 구성 하나를 고릅니다.
- 텍스트 모델: 입력 토큰.
- 영상 모델: 참조 영상이나 영상-영상 입력이 없는 첫 번째 720p 규격.
- 이미지 모델: 첫 번째 일반 이미지 규격(예:
nano-banana-pro-1k).
model 자체가 규격 ID이면 그 규격을 비교합니다.
규격 ID
규격 ID는 익명으로 읽을 수 있는 가격표에서 가져옵니다. GET https://api.beatapi.io/v1/pricing의 data.groups[].specs[] 각 항목에 id가 있습니다. 모든 비교 결과에도 해당 모델의 available_specs가 함께 반환됩니다.
플랫폼 ID
플랫폼 ID는 quotes[].provider에 반환되는 값과 같은 소문자입니다. beatapi는 BeatAPI입니다. providers를 보내면 나열한 플랫폼만 비교하므로, BeatAPI 순위를 매기려면 beatapi도 포함하세요. 나열한 플랫폼에 해당 규격의 가격이 없으면 pending_verification으로 반환됩니다. 비교 표에 없는 ID는 400으로 거부됩니다.
응답
호출에 성공하면 200과 함께 결과가 data에 담겨 반환되며, GET /v1/pricing과 같은 응답 형식입니다. 응답은 캐시되지 않습니다(Cache-Control: no-store).
아래 예시는 2026-11-11에 확인한 가격을 사용합니다. 가격, 날짜, data_version 값은 시간이 지나면 바뀌므로 최신 수치는 엔드포인트를 직접 호출해 확인하세요.
이 예시의 수치는 가격에서 다음과 같이 계산됩니다.
- 순위에 들어가는 가격은 0.05, 0.126, 0.1344, 0.15의 네 개입니다.
atlascloud의 추정가와higgsfield에서 제공하지 않는 구성은 목록에는 남지만 순위에는 들어가지 않습니다. - 최저가: 0.05(
beatapi). 2위: 0.126(wavespeed). (0.126 − 0.05) ÷ 0.126 = 60.32%. - 평균: (0.05 + 0.126 + 0.1344 + 0.15) ÷ 4 = 0.1151. (0.1151 − 0.05) ÷ 0.1151 = 56.56%.
최상위 필드
단위
모든 금액은 USD이며 10진수 문자열로 반환되므로 작은 가격이 0으로 반올림되지 않습니다. null은 신뢰할 수 있는 가격이 없다는 뜻이며, 무료는 "0"으로 나타냅니다.
가격
금액이 있고, 최근 30일 안에 확인했으며, 규격과 정확히 일치하고, 추정가가 아닌 가격만 순위에 들어갑니다. 그 밖의 가격도 exclusion_reason과 함께 quotes에 남으므로 누가 왜 빠졌는지 확인할 수 있습니다.
BeatAPI 가격은 GET /v1/pricing의 실시간 소매가이므로 BeatAPI 가격이 바뀌면 다음 비교에 바로 반영됩니다. 다른 플랫폼의 가격은 각 플랫폼의 공개 페이지와 대조해 수작업으로 확인합니다.
요약과 네 가지 지표
백분율은 소수점 둘째 자리까지의 문자열이며, 반올림하지 않은 금액으로 계산한 뒤 마지막에 반올림합니다. 순위에 든 플랫폼이 둘 미만이거나 분모가 0이면 해당 지표는 null이며, NaN이 되는 일은 없습니다. mean_amount는 소수점 8자리로 반올림합니다.
모델이 모호한 경우
이름이 여러 모델과 일치하면 200과 needs_clarification을 반환합니다.
후보 하나를 그대로 model로 보내세요. 이름, slug, 규격 ID의 정확한 일치가 부분 일치보다 항상 우선하므로 Nano Banana Pro는 모델 하나로 정해집니다. 어떤 모델과도 일치하지 않는 이름도 needs_clarification을 반환하지만 model_candidates는 포함되지 않습니다.
오류
오류는 표준 오류 객체로 반환됩니다. 수정해야 하는 요청은 문제를 알려 주는 메시지와 함께 400 bad_request를 반환합니다.
400은 그대로 다시 보내지 마세요. 500 internal_error는 비교를 계산하지 못했다는 뜻입니다. 한 번 재시도하고, 계속 실패하면 request_id를 첨부해 지원팀에 문의하세요.

