The single biggest time sink in dealership photography is not taking photos — it is editing them. This guide shows how to eliminate that step entirely by connecting your DMS or inventory management system to the car background removal API, so every new vehicle that hits your lot automatically gets clean, consistent studio-quality photos without anyone touching an editor.
The manual inventory photo problem
A typical used-car operation adds vehicles daily. Each one needs 20 to 40 photos, and each photo traditionally needs manual background cleanup to look professional on your VDP, third-party marketplaces, and Facebook. That is thousands of manual edits a month. An inventory photo API replaces that labor with a pipeline that runs on its own.
The automation architecture
The end-to-end flow has four stages, and each maps cleanly to a piece of the automotive photo API:
- Detect — notice that a new vehicle (or new photos) entered your DMS.
- Submit — send each raw lot photo to the background removal API with the VIN attached.
- Receive — get the cleaned image back via webhook when processing completes.
- Publish — write the clean photo back to your DMS and syndicate it out.
Detecting new vehicles
How you trigger the image processing API depends on what your DMS exposes. Three common patterns cover almost every system:
- Scheduled feed pull — fetch your inventory feed every 15 minutes and diff it.
- Inventory webhook — the DMS calls you when a vehicle is added.
- VIN diffing — compare the current VIN set against the last processed set.
Here is a simple scheduled diff that finds newly added vehicles from an inventory feed:
import { getProcessedVins, markProcessed } from "./store.js"
import { processVehicle } from "./pipeline.js"
"tok-comment">// Runs on a schedule (cron, queue, or serverless timer)
export async function syncInventory(feedUrl) {
const feed = await fetch(feedUrl).then((r) => r.json())
const known = await getProcessedVins()
const newVehicles = feed.vehicles.filter((v) => !known.has(v.vin))
console.log("Found", newVehicles.length, "new vehicles to process")
for (const vehicle of newVehicles) {
await processVehicle(vehicle)
await markProcessed(vehicle.vin)
}
}Mapping photos to VINs
The key to a reliable pipeline is never losing track of which cleaned photo belongs to which vehicle. Attach the VIN and a photo index to every job via the metadata field. The background removal API echoes it back on the webhook, so matching is trivial.
The processing pipeline in code
This pipeline submits every photo for a new vehicle to the automotive photo API, tagging each with the VIN and slot so the results can be reassembled in order:
import { autobgFetch } from "./client.js"
export async function processVehicle(vehicle) {
const { vin, photos } = vehicle "tok-comment">// photos: array of lot photo URLs
const jobs = await Promise.all(
photos.map((url, index) =>
autobgFetch("/images/process", {
method: "POST",
body: JSON.stringify({
image_url: url,
background: "white_studio",
remove_other_vehicles: true,
webhook_url: "https:">//yourapp.com/webhooks/autobg",
metadata: { vin, slot: index }, "tok-comment">// echoed back on completion
}),
}),
),
)
console.log("Submitted", jobs.length, "photos for VIN", vin)
return jobs
}When each job finishes, your webhook handler receives the cleaned output_url along with the vin and slot you set. See the webhooks and async processing guide for the complete, signature-verified handler.
Pushing clean photos back out
Once you have the processed image, write it back to your DMS photo record and let your existing syndication push it to your website, AutoTrader, Cars.com, CarGurus, and Facebook Marketplace. Because every vehicle now goes through the same inventory photo API, your entire lot has a consistent, branded look with zero manual editing.
"tok-comment">// Called from your verified webhook handler on image.completed
async function onImageCompleted(event) {
const { vin, slot } = event.metadata
"tok-comment">// Save the clean studio photo back to the vehicle record
await dms.updateVehiclePhoto({
vin,
slot,
url: event.output_url,
})
"tok-comment">// Your existing feed handles syndication to marketplaces
console.log("Updated VIN", vin, "photo slot", slot)
}That is a complete, hands-off inventory photo pipeline built on the car background removal API: detect new vehicles, process every photo automatically, and publish clean results back to your DMS. To wire it into your stack, grab an API key and review endpoints and per-image pricing on the API pricing & docs page.