Das Problem: Der Kunde möchte es an seinem eigenen Auto sehen
Ein Folierungsbetrieb, ein Tönungsstudio oder ein Anbieter von Lackschutzfolie verkauft etwas, das der Kunde erst sieht, wenn es fertig ist. Das Portfolio zeigt die Autos anderer Leute. Das Farbmuster des Herstellers zeigt das Material auf einer flachen Karte. Was den Abschluss bringt, ist der eigene M4 von 2021 des Kunden in genau dem Satingrau, bei dem er noch zögert – und davon gibt es kein Foto, weil der Auftrag noch nicht erledigt ist.
Dieselbe Lücke zeigt sich weiter hinten in der Kette. Ein Folienzuschnitt braucht eine saubere Kontur der vorderen Stoßstange für ein Modelljahr, das die Schnittmusterbibliothek noch nicht abdeckt. Ein Konfigurator braucht eine Drehansicht des Autos in einer Grundfarbe, die der Designer übermalen kann. Alle drei brauchen dasselbe: ein Studiobild einer bestimmten Marke, eines bestimmten Modells und Baujahrs, in einem Lack ihrer Wahl, ohne Hintergrund.
Drei Arten, wie Betriebe die Renderings nutzen
Die Integrationen für Folierung, Scheibentönung und Lackschutzfolie, die heute über die API laufen, erledigen drei Dinge, manchmal alle drei gleichzeitig:
- Eine weiße Basis, darüber das Material. Rendern Sie das Modelljahr des Kunden mit
color=whiteals transparentes PNG und legen Sie Folierung, Tönung oder gedrucktes Design im Browser darüber. Der Alphakanal des PNG bildet die Kontur des Autos. - Eine Lackfarbe per Hex. Für eine einfarbige Folierung oder eine Neulackierung können Sie das Compositing überspringen:
color=686c70liefert das Auto bereits in diesem Lack, Glas und Räder unverändert, für denselben einen Credit wie ein Preset. - Ein 3D-Modell für den Drehteller.
POST /api/v1/3derstellt ein texturiertes GLB, USDZ und FBX des Fahrzeugs in einer gewählten Farbe, einmal pro Fahrzeug und Farbe. Ein veröffentlichtes Modell enthält einen zweizeiligen Embed-Code für die Angebotsseite und eine USDZ-Datei, die der Kunde auf einem iPhone in AR öffnen kann.
Ein Betrieb lässt seine Batches über den ChatGPT-Connector statt über Code laufen – ein viertes Muster, dem unten ein eigener Abschnitt gewidmet ist.
Ein weißes Basis-Rendering und das Material darüber
Eine Folierung ersetzt den Lack, also starten Sie mit so wenig Lack wie möglich. color=white liefert die hellste neutrale Karosserie mit intakter Studio-Schattierung; die gerade side-Ansicht zeigt die größte Flanke und die geringste perspektivische Verkürzung – genau das, was eine Materialvorschau braucht. Fordern Sie png (oder webp) an, damit der Alphakanal erhalten bleibt, und die größte Größe, 1024, damit sich die Vorschau zoomen lässt.
# the customer's exact model year, in white: the base every material goes on top of
curl --fail-with-body -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
"https://carimage.dev/api/v1/images/car?vehicle=veh_0ta0ejj0qad2w&view=side&color=white&w=1024&format=png" \
-o m4-side-white.png
# a solid-color wrap or a factory paint, by hex: the API recolors the paint and leaves glass, trim and wheels alone
curl --fail-with-body -H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
"https://carimage.dev/api/v1/images/car?vehicle=veh_0ta0ejj0qad2w&view=side&color=686c70&w=1024&format=png" \
-o m4-side-nardo.pngBei einem texturierten Material sind für das Compositing nur ein paar Zeilen Canvas-Code nötig: Das Render wird einmal als Maske gezeichnet, das Material nur dort aufgetragen, wo das Auto ist, und das Render ein zweites Mal im Modus „Multiplizieren“ gezeichnet, damit Schattierung und Reflexionen durch das Material hindurch wieder sichtbar werden.
// A textured material (carbon, chrome, a printed design) goes on in the browser.
// The white render is the mask: paint the material only where the car is, then let
// the render's own shading through.
const car = await loadImage(whiteBaseUrl); // transparent PNG from the API
const ctx = canvas.getContext("2d");
canvas.width = car.width;
canvas.height = car.height;
ctx.drawImage(car, 0, 0);
ctx.globalCompositeOperation = "source-atop"; // keep the car's alpha
ctx.fillStyle = ctx.createPattern(materialSwatch, "repeat");
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.globalCompositeOperation = "multiply"; // shading, reflections and panel lines come back
ctx.drawImage(car, 0, 0);
// The whole silhouette is covered, glass and wheels included: the API ships the car's
// alpha, not per-panel masks. Good enough for a quote; a solid color should use color=<hex> instead.Lack- oder Folienfarbe per Hex-Wert abgleichen
Seit Lackfarben als Umfärbung eines neutralen Renders umgesetzt werden, akzeptiert color neben den 15 Preset-Namen jeden sechsstelligen Hex-Wert: color=686c70 ohne Präfix in einer URL, "color": "#686c70" in JSON. Schlagen Sie das Farbmuster des Herstellers oder den Werkslackcode des Kunden nach und übergeben Sie ihn. Die Umfärbung wirkt nur auf den Lack, sodass Glas, Leuchten, Zierteile und Räder unverändert bleiben – genau das ist der Unterschied zwischen einer Folierungsvorschau und einem eingefärbten Foto. Jeder Hex-Wert ist eine weitere gecachte Variante und ein Credit, sodass eine Palette von zwanzig Kandidaten für ein Auto zwanzig Credits kostet, einmalig.
Ein 3D-Modell für Drehteller und AR
Wenn sich das Fahrzeug auf der Angebotsseite drehen soll, bestellen Sie ein Modell. POST /api/v1/3d nimmt die Fahrzeug-ID und eine Farbe entgegen, berechnet 100 Credits und erstellt ein texturiertes GLB, eine Browser-Version davon, eine USDZ- und eine FBX-Datei sowie ein Vorschaubild. Das erste Modell eines Fahrzeugs dauert 10–20 minutes; jede weitere Farbe desselben Fahrzeugs texturiert dasselbe Mesh in 1–2 minutes neu. Die Bestellung eines Fahrzeugs in einer Farbe, die Sie bereits besitzen, ist kostenlos (billing.already_owned: true), sodass ein Betrieb seinen Konfigurator für jeden Auftrag auf derselben weißen Basis aufbauen kann.
curl -X POST https://carimage.dev/api/v1/3d \
-H "Authorization: Bearer $CAR_IMAGE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: wrap-quote-4471" \
-d '{"vehicle": "veh_0ta0ejj0qad2w", "color": "white", "publish": true}'{
"data": {
"id": "8c1d6b8e-2b4a-4f6e-9a2e-1f3c5d7e9b01",
"object": "3d_model",
"status": "queued",
"progress": 0,
"vehicle": {
"id": "veh_0ta0ejj0qad2w",
"make": "bmw",
"model": "m4",
"year": 2021
},
"color": "white",
"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,
"credits_remaining": 24900,
"already_owned": false
},
"request_id": "req_01j9y…"
}publish: true stellt das Modell unter schlüssellosen URLs in unserem CDN bereit und liefert ein Embed, noch bevor es fertig ist; das Element zeigt den Fortschritt an, bis die Dateien da sind. Setzen Sie view auf einen der acht Kamerawinkel für die erste Einstellung, spin für einen Drehteller, backdrop für den Studioboden und ar, um iPhones die USDZ- und Android-Geräten die GLB-Datei über den browsereigenen AR-Viewer anzubieten. Die FBX ist für den Designer: Öffnen Sie sie in Blender oder einem Wrap-Design-Tool, bringen Sie das Motiv auf die UVs auf, und der Kunde sieht sein eigenes Design auf seinem eigenen Auto.
<script src="https://carimage.dev/embed/3d.js" async></script>
<car-3d model="m3d_…" view="front-3-4" spin backdrop="studio" ar alt="2021 BMW M4 in white"></car-3d>Einen Batch aus ChatGPT oder Claude ausführen
Nicht jeder Betrieb hat einen Entwickler, und eine der meistgenutzten Integrationen der API ist ein Betreiber, der einen Assistenten nach Renders fragt. Fügen Sie https://carimage.dev/api/mcp als Connector hinzu (ChatGPT und Claude melden sich per OAuth an; der Mensch bestätigt die Berechtigungen auf dem Bildschirm), und der Assistent erhält dieselben Tools wie ein Programm: resolve_vehicle, um „2014 Audi S3 Cabriolet, grau, seitlich“ in exakte Parameter umzuwandeln, get_car_image für ein einzelnes Render, create_car_image_urls für bis zu fünfzig signierte URLs in einem Aufruf und create_3d_model für die Drehansicht.
Zwei Dinge sorgen dafür, dass ein Batch über einen Assistenten gut gelingt:
- Übergeben Sie pro Batch einen
idempotency_key. Assistenten wiederholen Anfragen. Mit einem Schlüssel spielt ein wiederholtercreate_car_image_urls-Aufruf das erste Ergebnis erneut ab (idempotent_replayed: true) und berechnet nichts. - Rechnen Sie mit dem Render-Budget, nicht nur mit dem Rate Limit. Renderings von Varianten, die noch niemand angefragt hat, zehren vom täglichen Anteil des Kontos an der Generierungskapazität (10 % bei Pro). Ein Durchlauf mit einigen hundert neuen Fahrzeugen in drei Ansichten kann ihn ausschöpfen; das Tool antwortet dann mit einer Wartezeit und
reset_at, es wird nichts berechnet, und gecachte Bilder werden weiter ausgeliefert. Verteilen Sie den Durchlauf auf einen oder zwei Abende oder wechseln Sie zu Business für einen größeren Anteil.
Die Einrichtung für jeden Client und die vollständige Tool-Liste finden Sie auf der MCP-Seite.
CLI, SDK und MCP
# the white base and a hex paint, straight to files
npx @meterapp/car-image get --vehicle veh_0ta0ejj0qad2w --view side --color white --width 1024 --out m4-side-white.png
npx @meterapp/car-image get --vehicle veh_0ta0ejj0qad2w --view side --color 686c70 --width 1024 --out m4-side-nardo.png
# the 3D model: published at once, polled until ready, every file downloaded
npx @meterapp/car-image 3d create --vehicle veh_0ta0ejj0qad2w --color white --publish --wait --out ./modelsimport { CarImageClient } from "@meterapp/car-image-sdk";
const client = new CarImageClient({ apiKey: process.env.CAR_IMAGE_API_KEY });
// 100 credits the first time. Ordering the same vehicle in the same color again
// answers billing.already_owned: true and charges nothing.
const { data: model } = await client.create3dModel({ vehicle: "veh_0ta0ejj0qad2w" }, { color: "white", publish: true });
const ready = await client.wait3dModel(model.id, { onProgress: (m) => console.log(m.stage, m.progress) });
// FBX for the designer's tool of choice, USDZ for the customer's iPhone, glb_web for the page.
const fbx = await client.download3dModel(ready.id, "fbx");
const embedHtml = ready.public?.embed.html;- MCP:
get_car_imageundcreate_car_image_urlsim Core-Toolset,create_3d_model,get_3d_modelundpublish_3d_modelmit?toolset=all; jedes Bild-Tool erwartetvehicleund einen Hex-Wert fürcolor. - Die 3D-Dokumentation behandelt Webhooks (ein signierter POST, sobald ein Modell fertig ist), Dateigrößen und alle Embed-Attribute; Farben auf der Seite „Bilder“ erklärt die Lackregeln.
Häufig gestellte Fragen
- Kostet eine eigene Hex-Farbe mehr als eine vordefinierte Farbe?
- Nein. Jede Farbe ist eine Umfärbung eines neutralen Renderings dieses Fahrzeugs und dieser Ansicht, daher kosten ein Preset, ein nachgeschlagener Werksfarbcode und ein Farbmuster eines Folienherstellers jeweils einen Credit. Ein Hex-Wert, der dem Farbmuster eines Presets entspricht, ist dieses Preset.
- Ist das Rendering genau genug, um Folie danach zuzuschneiden?
- Nein. Renders sind Studio-Visualisierungen von Marke, Modell und Baujahr, keine CAD-Daten oder Herstellerfotos: Der Katalog unterscheidet keine Ausstattungsvarianten, und Karosseriefugen können zwischen zwei Ansichten desselben Autos abweichen. Nutzen Sie sie, um Kunden ihr Auto zu zeigen und den Auftrag zu kalkulieren; Schnittmuster erstellen Sie anhand einer Vorlage oder am Fahrzeug selbst.
- Können wir das Auto ohne Lackierung bekommen oder nur die Scheiben?
- Einem Rohling am nächsten kommt color=white als transparentes PNG, und der Alphakanal des PNG ist die Silhouette des Autos. Die API liefert keine Masken pro Karosserieteil oder für Glas. Für eine einfarbige Folierung übernimmt color=<hex> die Arbeit: Es färbt den Lack um und lässt Glas, Zierleisten und Räder unverändert.
- Welche Ansichten sollte ein Angebot für Tönung oder PPF verwenden?
- Die geraden Ansichten: side (oder side-right) für die Seitenscheiben und Flanken, front für den Frontscheibenstreifen, die Motorhaube und den Stoßfänger, rear für die Heckscheibe. Auf die Dreiviertelansichten reagieren Kunden am stärksten, verwenden Sie also front-3-4 für das Hero-Bild und die geraden Ansichten neben den einzelnen Positionen.
- Gehört uns das 3D-Modell?
- Es ist lizenziert, genau wie die Renders: einmal pro Fahrzeug und Farbe pro Konto bezahlt, kostenlos erneut bestellbar und zur Nutzung in Ihrem Produkt sowie zur Speicherung auf Ihren Servern freigegeben – auch nach Ende Ihres Tarifs. Jede weitere Farbe eines Fahrzeugs, das Sie bereits besitzen, versieht dasselbe Mesh mit einer neuen Textur, und durch das Veröffentlichen erhält das Modell kostenlos URLs ohne Schlüssel und einen Embed-Code.