Car Image API

활용 사례 · 리스

리스 견적 및 상품용 차량 이미지

모든 리스 상품을 해당 모델 연식과 hex 코드로 지정한 정확한 색상으로 렌더링하고, 서명된 URL로 견적 PDF에 넣고, 컨피규레이터에 3D 모델을 임베드하세요.

API의 문서화된 동작을 바탕으로 작성된 구축 가이드이며, 특정 고객을 언급하지 않습니다. 게시.

문제: 상품 조건은 정확하지만 이미지는 그렇지 않습니다

리스 상품은 구체적입니다. 하나의 모델 연식, 납입금 산정 기준이 되는 트림, 제조사의 현행 색상 라인업 중 한 가지 도장 색상, 특정 날짜까지 유효한 월 납입금이 정해져 있습니다. 그런데 옆에 놓인 이미지는 그렇지 않은 경우가 많습니다. 작년 보도용 사진, 더 이상 제공되지 않는 색상, 다른 차체 형태 등입니다. 납입금은 정확한데 이미지가 대략적이면 고객이 의문을 품는 것은 이미지 쪽입니다.

그다음 같은 오퍼가 여러 곳으로 이어집니다. 모델 페이지, 견적 PDF, 이메일, 그리고 고객이 차를 돌려 볼 수 있는 컨피규레이터까지요. 이 모든 곳에 같은 색상의 같은 차량이 필요합니다.

연동 구조 한눈에 보기

  • 모델 연식별 상품 하나, 해당 연식의 카탈로그 차량 id를 키로 사용합니다.
  • 제조사 도장 색상을 hex 값으로 상품의 모든 사진에 적용합니다.
  • 견적 PDF와 이메일에 동일한 이미지를 서명된 URL로 제공하므로 어떤 문서나 렌더러에도 키가 담기지 않습니다.
  • 도장 색상별 3D 모델: 컨피규레이터용이며, 두 줄짜리 임베드 코드로 게시합니다.

1단계: 각 리스 상품을 해당 연식의 차량 ID에 연결하기

GET /api/v1/vehicles?make=&model=은 무료로 공개되어 있으며, 모델의 모든 연식을 각각의 고정 차량 ID와 함께 나열합니다. 리스 상품에 해당하는 모델 연식의 ID를 상품과 함께 저장하세요.

한 모델의 모든 연식
curl -s "https://carimage.dev/api/v1/vehicles?make=honda&model=cr-v"
200 OK (일부 생략)
{
  "data": {
    "make": {
      "id": 474,
      "name": "HONDA",
      "slug": "honda"
    },
    "model": {
      "name": "CR-V",
      "slug": "cr-v",
      "vehicle_type": "Passenger Car"
    },
    "vehicles": [
      "…",
      {
        "year": 2025,
        "id": "veh_exjyt8r21gmhe"
      },
      {
        "year": 2026,
        "id": "veh_b6kgpb03d73r9"
      },
      {
        "year": 2027,
        "id": "veh_8nr7res56a6jq"
      }
    ]
  }
}

2027년형 상품이 출시되면 2027년 ID를 사용하고, 2026년형 상품은 기존 ID를 유지합니다. ID는 절대 바뀌지 않으므로, 이를 기반으로 만든 페이지나 견적은 모델 연식이 바뀐 후에도 계속 작동합니다. 카탈로그는 제조사, 모델, 연식을 키로 사용하므로, 월 납입금 산정 기준이 되는 트림(EX-L, Sport Touring 등)은 상품에 텍스트로 표시하며, 이미지가 이를 나타낸다고 내세워서는 안 됩니다.

2단계: 제조사 도장 색상을 hex로 지정하기

15가지 프리셋은 일반적인 색상을 다루지만, 리스 상품에는 차량이 실제로 제공되는 도색이 필요합니다. 제조사 컬러 칩에서 hex 값을 가져와 URL에서는 그대로(color=1f3a5f), JSON에서는 #을 붙여("color": "#1f3a5f") 전송하세요. 모든 도색은 준비된 하나의 뷰를 다시 색칠한 것이므로 hex도 프리셋과 같이 차량 이미지 1개로 집계되며, 프리셋 견본과 같은 hex는 해당 프리셋으로 처리되어 한 번만 캐시됩니다.

상품 이미지
# the 2026 offer's hero: its model year, in the paint it is offered in, cropped to a 16:9 slot
curl --fail-with-body -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
  "https://carimage.dev/api/v1/images/car?vehicle=veh_b6kgpb03d73r9&view=front-3-4&color=1f3a5f&w=1024&h=576&fit=contain&trim=1&padding=4&format=webp" \
  -o cr-v-2026-offer.webp

3단계: 서명된 URL로 견적 PDF와 오퍼 이메일에 넣기

견적서 PDF는 보통 PDF 서비스나 헤드리스 브라우저로 렌더링한 HTML입니다. 템플릿에는 키가 아니라 POST /api/v1/image-urls로 받은 서명된 URL을 넣으세요. 렌더러가 이미지를 한 번 불러와 삽입하므로 기본 유효 기간인 1시간이면 충분하며, format: "jpg"는 이미지를 흰색 배경으로 합쳐 문서에 잘 어울리게 합니다. URL의 이미지는 발급 시점에 해당 월의 차량 이미지로 집계됩니다.

견적 제안 이메일은 고객이 확인하는 시점에 열립니다. 이미지를 renew: true로, ttl_seconds는 최대값인 7일로 발급하고, renew_days는 제안의 남은 일수로 설정하세요. 갱신 시 이미지는 갱신된 달에 한 번 집계되고, 그달에 이미 집계되었다면 추가로 집계되지 않으며, 아무도 보지 않는 주에는 집계되지 않습니다. 제안이 종료되면 URL은 갱신을 멈추고 만료됩니다. 유료 요금제의 라이선스는 견적서를 포함해 귀사 제품이 고객을 위해 생성하는 결과물 안의 렌더링 이미지에 적용됩니다.

TypeScript SDK로 만드는 PDF와 이메일
import { CarImageClient, type ImageParams } from "@meterapp/car-image-sdk";

const client = new CarImageClient({ apiKey: process.env.CAR_IMAGE_API_KEY });

// The offer's picture: its model year, in the paint it is offered in.
const offerImage: ImageParams = {
  vehicle: offer.vehicleId, view: "front-3-4", color: offer.paintHex, // "#1f3a5f"
  width: 1024, height: 576, fit: "contain", trim: true, padding: 4,
};

// The quote PDF: rendered from HTML, the picture loaded once and embedded, on white.
const { data: [forPdf] } = await client.createImageUrls({ ...offerImage, format: "jpg" });
const pdf = await renderQuotePdf({ ...quote, vehicleImageUrl: forPdf.url });

// The offer email: loads for as long as the offer runs, then stops renewing.
const { data: [forEmail] } = await client.createImageUrls(
  { ...offerImage, width: 600, height: 338, format: "auto" },
  {
    ttlSeconds: 604800,
    renew: true,
    renewDays: Math.min(Math.max(daysUntil(offer.endsOn), 1), 365),
    idempotencyKey: `offer:${offer.id}:email`,
  }
);

4단계: 컨피규레이터용 3D 모델

POST /api/v1/3d에 리스 상품의 차량 id, 도색, publish: true를 전달하면 텍스처가 적용된 모델(GLB, USDZ, FBX 및 브라우저용 빌드)이 생성되고, 두 줄짜리 임베드 코드와 함께 키 없는 URL이 제공됩니다. 비용은 플랜에 포함된 크레딧에서 차량 및 색상당 100크레딧이 한 번만 차감되며, 계정에서 같은 차량을 같은 도색으로 다시 주문하면 무료입니다. 차량의 첫 모델 생성 소요 시간은 10–20 minutes이며, 이후 추가 도색은 메시를 재사용하므로 1–2 minutes 정도 걸립니다.

컨피규레이터의 색상 하나
curl --fail-with-body -X POST https://carimage.dev/api/v1/3d \
  -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: configurator-cr-v-2026-1f3a5f" \
  -d '{"vehicle": "veh_b6kgpb03d73r9", "color": "#1f3a5f", "publish": true}'
202 Accepted (일부 생략)
{
  "data": {
    "id": "5b0f3c2e-8a41-4d7e-9c10-2f6e1a3b4d58",
    "object": "3d_model",
    "status": "queued",
    "progress": 0,
    "vehicle": {
      "id": "veh_b6kgpb03d73r9",
      "make": "honda",
      "model": "cr-v",
      "year": 2026
    },
    "color": "#1f3a5f",
    "files": null,
    "public": {
      "id": "m3d_…",
      "url": "https://carimage.dev/api/v1/3d/public/m3d_…",
      "files": null,
      "embed": {
        "script": "https://carimage.dev/embed/3d.js",
        "html": "<script src=\"https://carimage.dev/embed/3d.js\" async></script>\n<car-3d model=\"m3d_…\"></car-3d>"
      }
    }
  },
  "billing": {
    "charged_on": "creation",
    "credits_charged": 100,
    "already_owned": false
  }
}

GET /api/v1/3d/{id}를 폴링하거나(10~15초 간격이면 충분합니다), webhook_url과 webhook_secret을 함께 전달해 모델이 준비되면 서명된 POST 요청을 한 번 받으세요. data.public.embed.html은 스크립트와 <car-3d> 요소로 구성되며, 상품 페이지에 붙여 넣으면 됩니다. 이 요소는 포스터를 즉시 표시하고, 모델이 처음 화면에 스크롤되어 들어올 때 뷰어를 불러옵니다. view, spin, backdrop, ar, alt는 각각 초기 각도, 턴테이블, 배경, 휴대폰의 AR 버튼(iOS에서는 USDZ를 통한 Quick Look), 대체 텍스트를 설정합니다. 게시와 모든 로드는 무료입니다.

게시된 모델 기반 페인트 색상 선택기
<script src="https://carimage.dev/embed/3d.js" async></script>

<select id="paint" aria-label="Paint">
  <option value="1f3a5f">Blue</option>
  <option value="white">White</option>
</select>

<!-- One published model per paint. Only the visible one is loaded: the script
     fetches a viewer the first time a model scrolls into view. -->
<car-3d data-paint="1f3a5f" model="m3d_…" view="front-3-4" spin backdrop="studio" ar
        alt="2026 Honda CR-V in the offer's blue"></car-3d>
<car-3d data-paint="white" model="m3d_…" view="front-3-4" spin backdrop="studio" ar
        alt="2026 Honda CR-V in white" hidden></car-3d>

<script>
  document.querySelector("#paint").addEventListener("change", (event) => {
    for (const model of document.querySelectorAll("car-3d[data-paint]")) {
      model.hidden = model.dataset.paint !== event.target.value;
    }
  });
</script>

4가지 색상의 컨피규레이터는 모델 4개이며, 비용은 400크레딧을 한 번만 지불하면 됩니다. API를 사용하는 랩핑 및 틴팅 업체도 같은 방식으로 3D 모델을 주문합니다. 파일과 형식은 사례에서, webhook, 다운로드, 게시 취소는 3D 문서에서 확인하세요.

CLI, SDK 및 MCP

  • CLI: npx @meterapp/car-image 3d create --vehicle veh_b6kgpb03d73r9 --color "#1f3a5f" --publish --wait 명령은 페인트 색상을 주문하고 완료될 때까지 기다린 뒤 임베드 코드를 출력합니다.
  • SDK: client.vehicles({ make, model }), client.createImageUrls(…), client.create3dModel({ vehicle }, { color, publish: true }), client.wait3dModel(id).
  • MCP: ?toolset=all을 사용하면 어시스턴트가 create_3d_model, get_3d_model, publish_3d_model로 영업 담당자를 위해 색상을 주문하고 게시할 수 있습니다. 설정 방법은 MCP 페이지에 있습니다.

자주 묻는 질문

이미지에 표시된 차량이 월 납입금 견적의 기준이 되는 트림인가요?
아니요. 카탈로그는 제조사, 모델, 연식을 키로 사용하므로 한 연식의 모든 트림은 같은 차량으로 렌더링됩니다. 트림은 이미지 옆 상품 설명에 기재하고, 이미지를 해당 트림이나 재고 차량으로 설명하지 마세요.
제조사 순정 페인트 색상은 프리셋보다 비용이 더 드나요?
아니요. 모든 도색은 준비된 하나의 뷰를 다시 색칠한 것이므로, hex 색상도 15가지 프리셋과 마찬가지로 차량 이미지 1개로 집계되며, 프리셋 견본과 같은 hex는 해당 프리셋으로 처리됩니다. hex는 스튜디오 조명 아래에서 정확한 sRGB 값으로 적용되므로, 리스 상품을 게시하기 전에 렌더를 컬러 칩과 비교해 보세요.
4가지 도색의 컨피규레이터 비용은 얼마인가요?
400크레딧, 1회 결제: 차량의 도색별로 100크레딧이 차감됩니다. 계정에 이미 보유한 차량과 도색을 다시 주문하는 것은 무료이며(billing.already_owned가 true), 게시, 폴링, 다운로드 및 게시된 모델의 모든 로드도 무료입니다.
3D 모델은 얼마나 걸리며, 실패하면 어떻게 되나요?
차량의 첫 번째 3D 모델은 10–20 minutes 정도 걸리며, 같은 차량의 추가 도장 색상은 메시를 재사용하므로 1–2 minutes 정도 걸립니다. 생성에 실패한 모델은 전액 환불되며, 3D 생성이 일일 처리 한도에 도달하면 요금이 청구되기 전에 재시도 가능 시간과 함께 요청이 거부됩니다.
상품이 종료된 후에도 견적 PDF에 사진을 유지할 수 있나요?
네. 유료 플랜에서는 플랜이 활성 상태인 동안 견적서나 브로슈어를 포함해 제품이 고객을 위해 생성하는 결과물 안의 렌더링에 라이선스가 적용됩니다. 플랜 종료 후 30일 이내에 저장된 사본은 삭제됩니다. 저장된 견적서에 영구적으로 필요한 이미지는 Image Pack으로 한 번에 구매하실 수 있습니다.

계속 읽기

고객 사례 · 자동차 애프터마켓고객의 바로 그 차량에 랩핑, 틴팅, PPF를 미리 적용해 보는 방법고객은 다른 사람의 차가 아닌 자신의 차에 랩핑한 모습을 보고 싶어 합니다. 시공점은 정확한 연식의 차량을 흰색으로 렌더링하고, 그 위에 소재를 합성하고, 헥스 코드로 도장 색상을 맞추고, 턴테이블용 3D 모델을 주문합니다.