Průvodce implementací vycházející ze zdokumentovaného chování API; nejmenuje žádného zákazníka. Publikováno .
Problém: záznam uvádí auto, které nikdo nevidí
Formulář nabídky, záznam pojistky i první oznámení škody označují vozidlo stejně: jeho VIN, které zadal zákazník nebo opsal z technického průkazu. Vše, co pak člověk o voze vidí, je text: rok, značka, model a případně výbava. Otázka „Je to vaše vozidlo?“ vedle řádku textu svádí k odpovědi ano na cokoli.
Obrázek modelu, na který se VIN dekóduje, umožní zákazníkovi i likvidátorovi na první pohled ověřit, že záznam uvádí správný druh auta. Nemůže ukázat, o které konkrétní auto jde: render je studiová ilustrace značky, modelu a roku z katalogu a nezobrazuje žádné konkrétní fyzické vozidlo. Tato jediná skutečnost určuje celou integraci popsanou níže.
Jak integrace vypadá
- Dekódujte při příjmu. Proces kalkulace nebo systém pojistných smluv dekóduje VIN jednou, zdarma, a uloží ID vozidla z katalogu ke smlouvě. Pojistné události otevřené k této smlouvě ho převezmou.
- Jeden pohled všude.
front-3-4, hlavní úhel, v jednom rámečku na obrazovce kalkulace, v pracovním prostředí likvidace pojistných událostí, v PDF nabídky i na portálu pojistných smluv, takže každá obrazovka zobrazuje model stejně. - Podepsané URL, nikdy klíč. Prohlížeče a generátory PDF načítají URL bez klíče, které generuje váš server.
- Slova pro to, co obrázek neřekne. Výbava, příplatková výbava, evidovaná barva, poškození a nájezd zůstávají v textu a na fotkách a u obrázku je uvedeno, že je ilustrační.
Krok 1: dekódujte VIN, zdarma
GET /api/v1/vin/{vin} je zdarma a vyžaduje klíč s oprávněním images:read. Vrací dekódovaná pole z dat vPIC od NHTSA (rok, značka, model, výbava, série, typ karoserie, motor a všechny další atributy, které vPIC zná) a, pokud je vozidlo v katalogu, objekt vehicle s jeho stálým id a připravenou hodnotou image_path.
curl --fail-with-body \
-H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
"https://carimage.dev/api/v1/vin/WP0AA2A96RS201834"{
"data": {
"vin": "WP0AA2A96RS201834",
"valid": true,
"errors": [],
"suggested_vin": null,
"year": 2024,
"make": "Porsche",
"model": "911",
"trim": "Carrera, Carrera T, Carrera 4",
"series": "Type 992",
"body_class": "Coupe",
"vehicle": {
"id": "veh_78qtwrgh37bkr",
"make": "Porsche",
"model": "911",
"year": 2024,
"image_path": "/api/v1/images/car?vehicle=veh_78qtwrgh37bkr"
},
"source": "vpic-db"
}
}Přečtěte si trim: „Carrera, Carrera T, Carrera 4“. Vzor tohoto VIN pokrývá tři výbavy, takže ani dekódování neurčí, kterou z nich smlouva pojišťuje, a render modelu 911 z roku 2024 už vůbec ne. Požádejte zákazníka o potvrzení výbavy, uložte ji spolu se series a body_class jako text a obrázek nechte zobrazovat model.
- VIN se špatnou kontrolní číslicí se přesto dekóduje, s
valid: falsea popisem problému verrors;suggested_vinpomocí!označí znak, který vPIC považuje za chybný, a právě to ukažte uživateli, který VIN zadává. - Formulář, který má jen první znaky, může odeslat částečný VIN: alespoň pět znaků, s
*za každou neznámou pozici a volitelnýmyear. 404znamená, že vPIC tento vzor nezná. vPIC pokrývá vozidla vyrobená pro americký trh, takže u ostatních trhů začněte od značky a modelu pomocíPOST /api/v1/images/resolve, což je také zdarma.
Krok 2: uložte ID vozidla k pojistce i k pojistné události
Uložte data.vehicle.id k pojistce jako prostý řetězec a zkopírujte jej ke každé škodní události, která je k ní otevřena. Id je deterministické a trvalé: stejné vozidlo má stejné id při každém nasazení i po každém vydání katalogu, takže je bezpečné jako cizí klíč, a každý další požadavek uvádí vehicle=veh_78qtwrgh37bkr, místo aby vypisoval značku a model.
Když je data.vehicle null, dekódovaná značka a model v katalogu nejsou, jako u přívěsů a některých užitkových podvozků. Dekódovaná pole můžete i tak zobrazit. Zobrazte je bez obrázku a nikdy místo nich nedávejte podobné auto.
Krok 3: jeden pohled ve spisu pojistné události a v PDF nabídky
Obrazovka s nabídkou, pracoviště pro likvidaci pojistných událostí a portál pojistek jsou aplikace v prohlížeči, takže váš server generuje podepsané URL pomocí POST /api/v1/image-urls: každá URL započítá svůj obrázek jako obrázek vozidla daného měsíce v okamžiku vygenerování, až 50 na jedno volání, a až do vypršení platnosti se načítá zdarma. Obrázek jednou nakomponujte a tento tvar používejte opakovaně: front-3-4 v rámečku 640×400 s fit: "contain" a trim s trochou padding, aby kupé i pickup vyplnily rámeček stejně. Jak dlouho má každá URL platit, záleží na tom, kde se zobrazuje:
- Pracoviště pro likvidaci škod. URL vygenerujte při vykreslení obrazovky. Výchozí platnost v délce 1 hodiny pokryje pracovní relaci a škodní událost znovu otevřená zítra dostane nové URL.
- PDF nabídky. Když se PDF generuje z HTML, renderer obrázek jednou načte a vloží, takže výchozí doba platnosti bohatě stačí a služba pro PDF nikdy nemá váš klíč.
format: "jpg"obrázek zploští na bílé pozadí, což je pro dokument přesně to pravé. - Portál pojistek a e-mail o obnovení. Ty musí fungovat déle, než vydrží jakákoli platnost, takže URL vytvářejte s
renew: trueattl_seconds: 604800(7 dní). URL zůstává funkční, obnovení započítá obrázek jednou v měsíci, ve kterém proběhne, a nic dalšího, pokud už byl v daném měsíci započítán, arenew_days: 365, nejdelší povolená hodnota, pokryje roční pojistné období.
Klíči, který generuje URL, nastavte na ovládacím panelu seznam povolených originů: URL načtená z jiného webu odpoví 403 s origin_not_allowed, zatímco e-mailoví klienti a prohlížeče PDF, které neposílají Referer, ji stále načtou. Zrušením klíče přestanou fungovat všechny URL, které vygeneroval.
import { CarImageClient, type ImageParams } from "@meterapp/car-image-sdk";
const client = new CarImageClient({ apiKey: process.env.CAR_IMAGE_API_KEY });
// Quote or policy intake: the VIN in, the vehicle id and the decoded words on the record. Free.
const { data: decoded } = await client.decodeVin(policy.vin);
policy.vehicleId = decoded.vehicle?.id ?? null; // null: show the decoded text and no picture
policy.trimText = decoded.trim; // "Carrera, Carrera T, Carrera 4": words, never the picture
if (policy.vehicleId) {
// One view, framed once, for every screen and document that shows this policy's car.
const view: ImageParams = {
vehicle: policy.vehicleId, view: "front-3-4", color: policy.paintHex ?? "silver",
width: 640, height: 400, fit: "contain", trim: true, padding: 6,
};
// The claims workbench: a URL for this session, minted when the screen draws.
const { data: [workbench] } = await client.createImageUrls({ ...view, format: "auto" });
// The quote PDF: the HTML-to-PDF renderer loads the URL once and embeds the picture.
const { data: [pdf] } = await client.createImageUrls({ ...view, format: "jpg" });
// The policy portal and the renewal email: one URL that keeps working for the term.
const { data: [portal] } = await client.createImageUrls(
{ ...view, format: "auto" },
{ ttlSeconds: 604800, renew: true, renewDays: 365, idempotencyKey: `policy:${policy.id}:image` }
);
}Krok 4: označte ho jako model, nikdy jako pojištěné auto
Popisek umístěte tam, kde je obrázek, nejen do poznámky pod čarou: do alt textu a do titulku pod obrázkem. Render zobrazuje značku, model a rok v barvě, kterou zvolíte, a color může odpovídat barvě uvedené v pojistce (název předvolby nebo libovolný hex). Stále jde ale o model v této barvě, ne o vůz zákazníka.
<figure>
<img src="https://carimage.dev/api/v1/delivery/eyJhbGciOi…" width="640" height="400"
alt="Representative image of a 2024 Porsche 911, not a photo of the insured vehicle">
<figcaption>
2024 Porsche 911 · Coupe · Type 992 · trim on the VIN: Carrera, Carrera T or Carrera 4
<small>Representative image of the model. Not a photo of the insured vehicle.</small>
</figcaption>
</figure>Kolik to stojí a který tarif se hodí
- Zdarma: dekódování VIN, resolve, vyhledávání v katalogu a každé načtení podepsané URL během její platnosti.
- Jeden obrázek vozidla: každé vozidlo v každém laku a pohledu, započítané jednou měsíčně bez ohledu na to, jak často je doručeno, vygenerováno nebo obnoveno, v libovolné velikosti a formátu.
- Obrázky vozidel za měsíc: proces tvorby nabídek pracuje s mnoha různými vozidly a každý tarif jich měsíčně zahrnuje určitý počet: Free 100, Pro 2 500 a Business 10 000; Enterprise je podle dohody. Obrázek již v tomto měsíci započítaný se zobrazí vždy a požadavek nad rámec limitu vrátí 402 dřív, než se cokoli započítá, proto tarif zvolte podle počtu vozidel, pro která připravujete nabídky.
U placeného tarifu licence pokrývá render v rámci toho, co váš produkt vytváří pro své uživatele, včetně nabídky nebo zprávy, a to po celou dobu, kdy je tarif aktivní; podrobnosti najdete v licenci.
CLI, SDK a MCP
# decode for free and keep the id
npx @meterapp/car-image vin WP0AA2A96RS201834 --json | jq -r .data.vehicle.id
# one renewing URL for the policy's documents, minted once however often intake retries
npx @meterapp/car-image url --vehicle veh_78qtwrgh37bkr --view front-3-4 --width 640 --height 400 \
--fit contain --trim --padding 6 --format auto --ttl 604800 --renew --renew-days 365 \
--idempotency-key policy-88213-image- SDK:
client.decodeVin(vin, { year? })aclient.createImageUrls(…)jako výše;client.resolve(query)pro vozidlo bez VIN. - MCP:
decode_vinacreate_car_image_urlsjsou součástí základní sady nástrojů, takže asistent, který má pojistnou událost v kontextu, dokáže na pokyn „ukaž mi pojištěný model“ odpovědět podle VIN uloženého ve spisu. Nastavení najdete na stránce MCP.
Často kladené otázky
- Může obrázek nahradit fotografie pojištěného vozidla?
- Ne. Jde o studiový render značky, modelu a roku z katalogu, nikoli o fotografii, a nezobrazuje žádné konkrétní vozidlo. Pomáhá zákazníkovi nebo likvidátorovi ověřit, že záznam uvádí správný typ vozu. Stav, poškození, výbava, doplňky a úpravy se zjišťují z fotografií, prohlídek a dekódovaného textu a u obrázku by mělo být uvedeno, že je ilustrační.
- Kolik stojí obrázek u každé nabídky?
- Dekódování VIN je zdarma. Obrázek se započítá jako jeden obrázek vozidla daného měsíce ve chvíli, kdy se vygeneruje jeho podepsaná URL nebo se jeho data doručí na váš server, a poté se zobrazuje tak často, jak je potřeba; načtení podepsané URL je až do jejího vypršení zdarma. Obnovovaná URL započítá obrázek jednou v každém dalším měsíci, ve kterém je otevřena, a v měsících, kdy se na ni nikdo nepodívá, nic.
- VIN se dekóduje, ale vehicle je null. Co teď?
- Dekodér vozidlo rozpoznal, ale katalog pro danou značku, model a rok nemá žádný záznam, což se stává u přívěsů a některých užitkových podvozků. Zobrazte dekódované údaje bez obrázku a nikdy je nenahrazujte podobným autem. Prohledejte katalog pro případ, že se liší pravopis, a pokud záznam opravdu chybí, požádejte o něj na veřejné nástěnce požadavků.
- Funguje dekódování VIN i u vozidel mimo americký trh?
- Dekodér pracuje s daty vPIC od NHTSA, která pokrývají vozidla vyrobená pro americký trh, takže správně zadaný VIN z jiného trhu může vrátit 404 nebo se dekódovat bez modelu. Takový vůz místo toho najděte podle značky, modelu a roku pomocí bezplatného endpointu resolve; samotný katalog pokrývá i modely z jiných trhů.
- Jak dlouho smí spis škodní události obrázek uchovávat?
- Po dobu, kdy je váš tarif aktivní. V placeném tarifu licence pokrývá render uvnitř výstupu vašeho produktu, včetně nabídky nebo zprávy; do 30 dnů po skončení tarifu se uložené kopie smažou. Chcete-li obrázky v záznamech uchovat natrvalo, kupte je jako Image Pack. Rendery se také mohou časem vylepšovat, takže záznam, který musí zachovat přesně to, co zákazník viděl, by měl ukládat soubor, nikoli URL.