Integrate AI-powered vehicle photo processing directly into your platform. Simple REST API, powerful results.
Sign up for Auto Studio, navigate to Profile → API Keys, and generate your key. Business plan and above required.
POST your vehicle image URL along with your API key in the X-API-Key header to start processing.
Get back a processedImageUrl download URL within seconds. Ready to display or store.
All requests to the Auto Studio API must include your API key in the X-API-Key request header. Never expose your key in client-side code — always call the API from your server.
POST https://us-central1-autostudio-v1-usman.cloudfunctions.net/processImageApi
X-API-Key: as_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
API keys are available on the Business plan and above. View pricing →
{
"imageUrl": "https://your-cdn.com/car-photo.jpg",
"backgroundId": "showroom_white",
"keepFloor": false,
"removeNumberPlate": true
Response{
"processedImageUrl": "https://firebasestorage.googleapis.com/...",
"creditsUsed": 1,
"creditsRemaining": 199,
"requestId": "req_1a2b3c4d"
Parameters
Parameter
Type
Required
Default
Description
imageUrl
string
Yes
—
Public URL of the vehicle image. Max 20 MB. JPEG, PNG or WebP.
backgroundId
string
No
transparent
Background preset ID or "transparent" to remove background only.
keepFloor
boolean
No
false
Preserve the original floor or ground beneath the vehicle.
removeNumberPlate
boolean
No
true
Automatically detect and blur UK number plates for GDPR compliance.
All errors return a JSON body with a code and message field.
| Status | Code | Meaning |
|---|---|---|
| 401 | invalid_api_key | API key missing or invalid. Check your X-API-Key header. |
| 402 | insufficient_credits | No credits remaining — top up your plan to continue processing. |
| 400 | invalid_request | Missing required field or invalid image URL format. |
| 413 | image_too_large | Image exceeds the 20 MB size limit. Compress or resize before uploading. |
| 422 | processing_failed | PhotoRoom could not process the image. Try a different angle or image. |
| 429 | rate_limited | Too many requests — you have exceeded your rate limit. Slow down and retry. |
| 500 | internal_error | Something went wrong on our end. Retry after a brief delay. |
Use these backgroundId values in your API requests.
Custom backgrounds available on Enterprise and Agency plans. View plans →
curl -X POST https://us-central1-autostudio-v1-usman.cloudfunctions.net/processImageApi \
-H 'X-API-Key: as_live_xxxx' \
-H 'Content-Type: application/json' \
-d '{"imageUrl": "https://example.com/car.jpg", "backgroundId": "showroom_white"}'
const res = await fetch('https://us-central1-autostudio-v1-usman.cloudfunctions.net/processImageApi', {
method: 'POST',
headers: {
'X-API-Key': 'as_live_xxxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
imageUrl: 'https://example.com/car.jpg',
backgroundId: 'showroom_white'
})
});
const { processedImageUrl, creditsRemaining } = await res.json();
import requests
response = requests.post(
'https://us-central1-autostudio-v1-usman.cloudfunctions.net/processImageApi',
headers={'X-API-Key': 'as_live_xxxx'},
json={
'imageUrl': 'https://example.com/car.jpg',
'backgroundId': 'showroom_white'
}
)
data = response.json()
print(data['processedImageUrl'])
$response = file_get_contents(
'https://us-central1-autostudio-v1-usman.cloudfunctions.net/processImageApi',
false,
stream_context_create(['http' => [
'method' => 'POST',
'header' => "X-API-Key: as_live_xxxx\r\nContent-Type: application/json",
'content' => json_encode([
'imageUrl' => 'https://example.com/car.jpg',
'backgroundId' => 'showroom_white'
])
]])
);
$data = json_decode($response, true);
| Plan | Requests / min | Requests / day |
|---|---|---|
| Business | 10 req/min | 500 / day |
| Enterprise | 30 req/min | 2,000 / day |
| Agency | 60 req/min | 5,000 / day |
ⓘ Each successful request uses 1 credit from your monthly allowance.
Get your API key and start processing vehicle images in minutes.