Add car photo tools to your own product

REST API for license plate blurring and more — process car photos directly from your backend, no manual editing.

Fast to integrate

One POST request with your image — get a processed photo back in seconds. No SDK to install.

Key-based auth

A single Bearer token scoped to your account. Regenerate or revoke it anytime from your dashboard.

Same models as the app

The exact plate-detection and blurring models powering CarFlow AI — production-grade, not a demo.

No separate billing

API calls draw from your existing credit balance, billed the same way as the app.

Documentation

Blur license plates

Endpoint
POSThttps://api.carflowai.com/v1/blur-plates
curl -X POST https://api.carflowai.com/v1/blur-plates \
-H "Authorization: Bearer sk_live_your_key" \
-F "style=blur" \
-o result.jpg

Request Body

FieldTypeRequiredDescription
imagefileYesThe car photo to process.
stylestringNoblur (default), pixelate, white, or black.

Response

StatusContent-TypeBody
200image/jpegThe processed photo, as raw image bytes.
4xx / 500application/json{ error, code } — see Error codes below.

Replace plate with a custom design

Endpoint
POSThttps://api.carflowai.com/v1/plate-logo
curl -X POST https://api.carflowai.com/v1/plate-logo \
-H "Authorization: Bearer sk_live_your_key" \
-o result.jpg
# Or reuse a design you already saved in your Assets library instead of
# re-uploading it every call — pass its id, not a file:
curl -X POST https://api.carflowai.com/v1/plate-logo \
-H "Authorization: Bearer sk_live_your_key" \
-F "logoAssetId=your-saved-asset-id" \
-o result.jpg

Request Body

FieldTypeRequiredDescription
imagefileYesThe car photo to process.
logoorlogoAssetIdfile or stringYes — exactly one of the twoThe plate design. Either upload the file directly (logo), or reference one already saved in your Assets library by id (logoAssetId) to avoid re-uploading it every call.

Response

StatusContent-TypeBody
200image/jpegThe processed photo, as raw image bytes.
4xx / 500application/json{ error, code } — see Error codes below.

Add a shadow under the car

Endpoint
POSThttps://api.carflowai.com/v1/car-shadow
curl -X POST https://api.carflowai.com/v1/car-shadow \
-H "Authorization: Bearer sk_live_your_key" \
-F "reflection=false" \
-o result.png

Request Body

FieldTypeRequiredDescription
imagefileYesThe car photo. A transparent PNG cutout is used as is; any other photo is cut out first.
reflectionbooleanNotrue adds a floor reflection under the shadow (beta). Default false.

Response

StatusContent-TypeBody
200image/pngThe processed photo, as raw image bytes.
4xx / 500application/json{ error, code } — see Error codes below.

Cut out car

Coming soon
Endpoint
POSThttps://api.carflowai.com/v1/xxxxxxxxxxx
curl -X POST https://api.carflowai.com/v1/cutout \
-H "Authorization: Bearer sk_live_your_key" \
-o result.png

Logo on photo

Coming soon
Endpoint
POSThttps://api.carflowai.com/v1/xxxxxxxxxxx
curl -X POST https://api.carflowai.com/v1/logo-overlay \
-H "Authorization: Bearer sk_live_your_key" \
-F "logoAssetId=your-saved-asset-id" \
-o result.jpg

Blur plates on video

Coming soon
Endpoint
POSThttps://api.carflowai.com/v1/xxxxxxxxxxx
curl -X POST https://api.carflowai.com/v1/blur-video \
-H "Authorization: Bearer sk_live_your_key" \
-o result.mp4

Error codes

401invalid_api_keyMissing, invalid, or revoked API key
402insufficient_creditsNot enough credits and no pay-as-you-go enabled
429rate_limitedMore than 60 requests/minute for this key
400unknown_tool / missing_image / invalid_paramsUnknown tool, missing image, or invalid parameters
500processing_failedProcessing failed on our side — not charged

Pay-as-you-go billing is coming soon — for now, API calls are billed from your existing credit balance.