
Boost the visibility of your vehicles
One
vehicle.
Decorations



infinite.
Transform any vehicle photo into an ultra-realistic premium visual using generative AI. No studio. No constraints. No compromises.
Technology
Designed with precision. Powered by AI.

1
AI masking engine
Ultra-precise vehicle detection.
1
AI masking engine
Ultra-precise vehicle detection.
2
Generative scene engine
Custom decorations generated in real time.
2
Generative scene engine
Custom decorations generated in real time.
3
Light & shadow intelligence
Light, shadows, and reflections perfectly coherent.
3
Light & shadow intelligence
Light, shadows, and reflections perfectly coherent.
4
Context coherence
Each vehicle naturally integrates into its scene.
4
Context coherence
Each vehicle naturally integrates into its scene.
5
Ready-to-use results
Immediately usable visuals everywhere.
5
Ready-to-use results
Immediately usable visuals everywhere.
6
Autoya API
Cut out hundreds of vehicles in just a few minutes.
6
Autoya API
Cut out hundreds of vehicles in just a few minutes.
7
Bring your vehicles to life*
Easily turn your photos into videos.
7
Bring your vehicles to life*
Easily turn your photos into videos.
*Service not included in Autoya. Option distributed by The Next Stories.

Step 1
Capture
Take one or more photos of the vehicle. Nothing more.

Step 2
Generation
Autoya understands the vehicle and generates the decor of your choice around it.

Step 2
Generation
Autoya understands the vehicle and generates the decor of your choice around it.

Step 3
Delivery
Receive your premium visuals ready to publish and sell.

Step 3
Delivery
Receive your premium visuals ready to publish and sell.
Why choose Autoya?
Move from ordinary to premium.
Without Autoya
Without Autoya
Generic decorations
Flat and incoherent light
No emotional impact
Low quality Photoshop effect
Photoshop effect
Alterations of details by AI
Images that show
With Autoya
Unlimited decorations
Realistic light and shadows
Strong visual presence
Perfectly integrated vehicle
Integrity fully respected
Selling images
Do you already have your photos?
Premium, regardless of the starting photo.
Automated video ads
Bring your vehicles to life with a captivating ad.
Transform any vehicle photo into an eye-catching ad. Cut out, sync vehicle data, generate the video, and publish. It’s simple.
Autoya API
Cut out in bulk. Publish instantly.
We are connected with these partners:

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas

// compiled preview • AUTOYA_API 1.0 /* generated for visual effec
t – not executed */ const IMG_WIDTH = 8; const FADE_ZONE = 35; con
st MAX_PARTICLES = 2500; const TRANSITION = 0.05; function clamp(n
, a, b) { return Math.max(a, Math.min(b, n)); } function lerp(a, b
, t) { return a + (b - a) * t; } const now = () => performance.now
(); function rng(min, max) { return Math.random() * (max - min) +
min; } class Particle { constructor(x, y, vx, vy, r, a) { this.x =
x; this.y = y; this.vx = vx; this.vy = vy; this.r = r; this.a = a
; } step(dt) { this.x += this.vx * dt; this.y += this.vy * dt; } }
const scanner = { x: Math.floor(window.innerWidth / 2), width: CA
R_WIDTH, glow: 3.5, }; function drawParticle(ctx, p) { ctx.globalA
lpha = clamp(p.a, 0, 1); ctx.drawImage(gradient, p.x - p.r, p.y -
p.r, p.r * 2, p.r * 2); } function tick(t) { const dt = 0.016; } c
onst state = { intensity: 1.2, particles: MAX_PARTICLES }; const b
ounds = { w: window.innerWidth, h: 300 }; const gradient = documen
t.createElement('canvas'); const ctx = gradient.getContext('2d');
ctx.globalCompositeOperation = 'lighter'; const state = { intensit
y: 1.2, particles: MAX_PARTICLES }; const bounds = { w: window.inn
erWidth, h: 300 }; const gradient = document.createElement('canvas
01
Send
Send your images in batches via REST API, FTP, or direct connector. JPG, PNG, WebP formats accepted.
01
Send
Send your images in batches via REST API, FTP, or direct connector. JPG, PNG, WebP formats accepted.
02
Automatic cropping
Interior/exterior cropping, premium background generated and applied builder templates. Vehicle ready for sale in less than 2 minutes.
02
Automatic cropping
Interior/exterior cropping, premium background generated and applied builder templates. Vehicle ready for sale in less than 2 minutes.
03
Direct integration
Cut-out images AND original files automatically synchronized in your VO or DMS software. Zero manual handling.
03
Direct integration
Cut-out images AND original files automatically synchronized in your VO or DMS software. Zero manual handling.
04
Publish
Your vehicles are online with professional visuals, without manual retouching.
04
Publish
Your vehicles are online with professional visuals, without manual retouching.
Testimonials
Autoya has transformed the way we value our vehicles. Premium, realistic, and consistent visuals generated in minutes, without shooting constraints. Our listings perform better, and our brand image has clearly been elevated.
Marc D., Sales Director
They trust Autoya
They trust Autoya
How far can the generation of backgrounds go with Autoya?
How does Autoya ensure the integrity of the vehicles?
Can AI sometimes produce unexpected results in scenes?
Does Autoya replace a traditional photo studio?
Is Autoya compatible with automotive DMS?










