THIN MOTION
Autofotostudio

Van één foto naar perfectie.

Maak een foto met je telefoon. Onze AI doet de rest. Studio-kwaliteit beelden, klaar op je computer.

1. Maak een foto
Met je mobiel of camera
2. AI verwerkt
Automatisch en razendsnel
3. Studio resultaat
Direct in je map op je computer
Snel & eenvoudig
Studio-kwaliteit
360° weergave
10 talen
Veilig & betrouwbaar

“Wij bouwen al jaren fysieke autofotostudio’s. Nu hebben we software gebouwd die studio’s overbodig kan maken.”

— Rob Tangenberg, AutoFotostudio specialist
THINMOTION | Bring cars to life
THIN MOTION

Log in

Forgot password?
New dealer? Create an account

Reset your password

Enter your email and we'll send you a link to choose a new password.

Back to log in

Choose a new password

Back to log in

Create your account

Already have an account? Log in

Free credit

Already have an account? Log in

You've been invited

Already have an account? Log in
THIN MOTION
Main
Overview Capture Publishing
Studio
Studio Photo Protocol
Insight
Analytics
Manage
Account Integrations Users Settings Admin
API docs
THIN MOTION
 

Send feedback

Suggestions, bugs, anything on your mind — goes straight to the development team.

Overview

Overview

Your credit balance is low and auto-refill is off — processing will stop once it runs out. Manage billing
Your usage

Vehicles

+ Add vehicle
0 selected

No vehicles yet

Upload your first photo(s) to get started.

+ Add vehicle

Are you sure?

← Back to vehicles

Vehicle

Download
original studio result
↔
Studio result not ready yet
Original
original
Studio result
studio result
Overview
Images
AI Processing
Publishing
Studio

Pick a studio reference, or leave on default. Analysis (make/model/plate) and the studio render happen together once you start.

Leave empty to let the AI identify it. Fill this in if you already know it — it's always more reliable than a guess, and helps most for a 360 spin.

Leave empty to let the AI read it — if the plate isn't clearly visible, it will render it as illegible rather than guess. Fill this in if you already know the correct plate.

AI processing
Vehicle details
Rate this result
Studio
Default studio
Publishing
Not published yet.
Preservation analysis (raw)

                
360 spin, embed on your website

Paste this into your own site's HTML, wherever the spin should appear. No iframe, just a div and one script tag. It's a plain static widget: once pasted, viewing it never touches our servers beyond serving the images themselves.

Building your own integration to a portal? See the API documentation.

Capture

Upload one or more photos of a vehicle — front, side, rear, whatever angles you have. They all become one vehicle entry; pick a studio and start processing on the next screen.

Photographed on a turntable — remove it from the AI result
Premium 360 spin, all 8 angles rendered as one continuous, consistent studio walk-around
Click or drop one or more photos
JPEG, PNG or WebP

Studio

The default studio is used automatically for every transform unless a vehicle has its own reference photo attached.

AFS default studios

Shared presets provided by AFS — available to every account, pick one below for a specific vehicle.

Click or drop a studio photo
Your studios
Add a studio
Click or drop a studio photo

Publishing

Publishing to a dealer website or marketplaces isn't connected yet.

Build your own integration

Building your own integration? See the API documentation.

Turn on auto-refill before generating an API key. Without it, an unattended integration can silently stop working once your credit runs out. Turn on auto-refill
Name Key Created Last used

No API keys yet.

Copy this key now — it won't be shown again.

Analytics

Member since —

Current status breakdown

Photo Protocol

The checklist photographers see in the mobile app for every new vehicle. Editable by the account owner; everyone else sees it read-only.

Foto's die genomen moeten worden

De onderstaande hoeken zijn platformbreed verplicht en kunnen niet worden verwijderd (wel worden uitgezet bij "Volgorde van presenteren" hieronder). Voeg je eigen extra items toe zo veel als je wilt.

Verplicht bij AI-bewerking

Verplicht bij 360-verwerking

Verplicht bij Naturel

Voor Naturel-verwerking zijn geen foto's verplicht.

Extra items

No checklist items yet — add one below.

Add an item

A "Badge/logo close-up" item lets photographers capture the vehicle's actual badge, wheel center cap, or logo up close — that photo is used as a reference during processing so the studio render matches the real badge instead of a generic guess for the make.

Volgorde van presenteren

Bepaalt in welke volgorde afgeleverde foto's worden benoemd/getoond. Een item hier uitzetten levert die foto niet af — maar telt niet mee voor wat hierboven verplicht is om te fotograferen.

Admin

Superadmin-only: real API cost, revenue, and every vehicle across every account.

Admin /
Marketing
Financieel
Development
Overview
Cost & revenue for the selected period.
Daily trend (last 30 days)

No processed vehicles in this window yet.

AI prompts
Every photo runs two steps: first the vehicle is analysed, then the studio image is generated from that analysis. Each step has its own prompt and its own version.
Step 1 — Analysis

Reads the photo and writes down what the car actually is: make, model, body type, licence plate, badges and their positions. It generates no image. Everything the next step must preserve is decided here, so a mistake here (a Tiguan read as a Passat) carries straight through.

Read-only on purpose: this prompt is paired with a strict JSON output format. Editing the wording freely would break how the answer is read back, not just how it is phrased.

Step 2 — Studio generation

Takes the photo plus the analysis from step 1 and renders the studio result. This is where the background, lighting, reflections and badge handling are decided, and where the image cost is incurred.

Only used once you edit the prompt below. Naming your experiments is what makes it possible to tell later which one was running.

Required placeholders: {{VEHICLE_PRESERVATION_JSON}} and {{STUDIO_REFERENCE_SECTION}}
Premium 360-spin addendum

Added on top of the transform prompt above only for a Premium 360-spin frame after the first, asks the model to match the previous angle's own rendered studio environment exactly, instead of treating it as a loose style reference. Read-only: a fixed addendum, not a separate version to pick.

Pricing & packages
The fixed vehicle packages and the prepaid credit packages tenants can buy.
Vehicle packages

Charged once per vehicle at "Start processing" — a session bills at the cheapest tier whose photo cap it fits, auto-upgrading if it goes over. Max photos and the 360 spin are fixed, only name and price are editable.

NameMax photos360 spinPrice (€)

Charged per photo once a non-spin vehicle passes Premium's photo cap, instead of blocking further uploads.

Credit packages

"Credited" is what lands in the tenant's wallet — set higher than "Price" for bonus credit on bigger top-ups.

NamePriceCreditedBonusActive

No credit packages yet.

Tenants
Grant free credit to a tenant, and configure the new-tenant signup bonus.
Marketing overview
Tenant City Province Country Vehicles Revenue API cost Campaign Promo code Signed up
Credits & signup bonus
Grant credits
Signup bonus

Free credit for a brand-new tenant — once per real company domain, never for consumer webmail.

Promo codes
Campaigns and unique free-credit codes for prospects.
New campaign
Only needed if you'll email this campaign's codes to prospects — leave blank for physical mailers or in-app-only codes. Placeholders: {company_name}, {code}, {credit_amount}.
Generate codes
Email template —
Compose in Outlook and paste here — formatting is kept, unsupported markup is cleaned out. Use the buttons above to insert personalisation placeholders.
Email prospects (one code per address)
Campaigns
Name Country Source Default credit Codes Redeemed Emails sent Emails pending Status Actions
Codes
Code Campaign Company Email Credit Status Email sent Redeemed by Actions
Tracking
Advertising pixels and conversion tracking. Leave a field blank to switch that vendor off entirely.
Meta (Facebook / Instagram)
Google Ads
Google Analytics
What gets tracked

Events fire automatically once an ID is filled in above. Purchases report the real amount in euros, so campaign performance can be measured on revenue rather than signups alone.

Moment Meta Google
Page visitPageViewpage_view
Account createdCompleteRegistrationsign_up
Payment completedPurchase + €conversion + €
Stripe
Payment credentials for real-money checkout — leave blank to keep the current value.

Mollie
SEPA-incasso auto-refill via a Mollie mandate — leave blank to keep the current value.

Email
Outbound SMTP for invites, invoices and password resets. Falls back to logging only if left unconfigured.
Server
Send test email
Invoice branding
Logo and company details printed on generated PDF invoices.
Click or drop a logo image
PNG, JPEG or WebP — replaces the plain company-name text on invoices.
Company details (printed in the invoice header)
Desktop app
Upload the built installers shown on tenants' Integrations page.
Windows
Not available yet.
Click or drop the Windows build
.zip / .exe
Mac
Not available yet.
Click or drop the Mac build
.dmg / .zip
Engineering
Publish ESP32 turntable firmware, pin an account to a diagnostic build, and see fleet usage.
Hulp bij flashen?

1. Eenmalig: partitieschema instellen (cruciaal voor de rollback-functie)

Zonder deze stap werkt de automatische rollback bij een mislukte update niet — er is dan simpelweg geen tweede partitie om naar terug te vallen.

  1. Sluit de ESP32 aan, selecteer 'm in Tools → Board (hetzelfde board als je al gebruikte voor V2.1/V2.2).
  2. Ga naar Tools → Partition Scheme.
  3. Kies een optie die OTA ondersteunt — de standaardoptie ("Default") heeft dit al ingebouwd. Vermijd expliciet alles met "No OTA" of "Huge APP" in de naam — die hebben maar één app-partitie, dus geen tweede plek om op terug te vallen.

2. Eerste keer: verplicht via USB-kabel

OTA kan alleen een ESP updaten die al V2.3 (of nieuwer) draait — de allereerste installatie van V2.3 moet dus via de kabel, net als voorheen.

  1. Open backup_arduino_ble/THIN_MOTION_V2.3.ino in de Arduino IDE.
  2. Controleer Tools → Port (juiste COM-poort/seriële poort van de aangesloten ESP32).
  3. Klik Upload (pijltje-icoon).
  4. Open daarna de Serial Monitor (115200 baudrate). Je moet zien: Usage counter loaded: 0 pulses lifetime (of een hoger getal als er al eerder pulsen geteld waren — dat zou hier niet moeten, want dit is de eerste keer dat de teller-code draait).

3. Functioneel testen (vóór je 'm ophangt bij een klant)

Via de app zelf, of met een generieke BLE-tool (bijv. nRF Connect) als de app nog niet klaar is om te testen:

  • Stuur getversion → verwacht version:2.3.0 (of het actuele versienummer).
  • Stuur getusage → verwacht usage:0 (of hoger).
  • Draai een normale rotatie (startvideo:24) en check in de Serial Monitor of je 24× "Status: Photo - stap..." ziet, gevolgd door "Status: Pause...".

4. De OTA-flow zelf testen

Let op: de ESP32 kan geen .ino-broncode over WiFi ontvangen en compileren, alleen een kant-en-klaar gecompileerd binary. De stap hieronder ("Export Compiled Binary") is dus niet optioneel — dat is het exacte bestand dat je hierboven bij "Publish a firmware release" moet uploaden.

  1. Maak een tweede firmware-versie om naartoe te updaten (kan een dummy-wijziging zijn, bijv. het versienummer omhoog naar 2.3.1) — anders heeft de "check for update" niks te vinden.
  2. Compileer 'm in de Arduino IDE (zonder te uploaden) en kies daarna Sketch → Export Compiled Binary. Het resulterende .bin-bestand komt terecht in dezelfde map als het .ino-bestand (meestal in een build/-submap).
  3. Upload dat .bin-bestand hierboven bij "Publish a firmware release" en geef het het juiste versienummer mee.
  4. Trigger de update vanuit de app (Instellingen → Firmware-update).
  5. Let in de Serial Monitor op: Status: Starting OTA mode, gevolgd door OTA AP gestart, IP: 192.168.4.1.
  6. Verbind je telefoon handmatig met wifi-netwerk "thinmotion2026" (of laat de app dat doen via de instructieknop).
  7. Tik "Ik ben verbonden" in de app — de upload start daarna automatisch; in de Serial Monitor zie je de voortgang ("OTA-upload gestart..." / "OTA-upload klaar...").
  8. Na afloop herstart de ESP zelf; controleer met getversion dat de nieuwe versie er staat.

5. Rollback expres testen

Voordat je hierop vertrouwt in het veld: forceer bewust een mislukte update (bijv. halverwege de telefoon uit wifi-bereik halen, of een corrupt/afgekapt .bin-bestand versturen) en controleer dat de ESP na de herstart gewoon weer de oude, werkende firmware draait in plaats van vast te lopen. Dat is de test die echt bewijst dat het "hufterproof" is.

Publish a firmware release

The compiled .bin, not the .ino source — Arduino IDE: Sketch → Export Compiled Binary. See the help section above, step 4.

Click or drop the .bin file
Or paste an externally-hosted URL below instead
Published releases
Version Device type Checksum Release notes Published

No firmware releases published yet.

Fleet: firmware targeting & usage

Pin one account to a specific build for diagnostics — everyone else always gets the newest published release. Usage is the turntable's own lifetime rotation count, reported after every BLE connection.

Tenant Firmware Lifetime rotations Motor runtime Last reported
Pipeline development
Run the real pipeline against real photos, without it reaching a customer. Runs cost real OpenAI money and never touch a wallet.
Nieuwe run
Voor een contactvel zijn twee of drie hoeken genoeg om de auto vast te leggen.
    Prompt testen
    Laat dit leeg om de gekozen promptversie te gebruiken. Vul je hier iets in, dan vervangt dat de volledige prompt voor deze ene run. De placeholders hieronder worden altijd ingevuld, ook in je eigen tekst.
    Runs
    Wanneer Test Modus Status Frames Kosten
    Vehicles
    Cross-tenant oversight — every vehicle, across every account.
    Feedback
    Result ratings (a 1-2 score is a dealer flagging a problem) and general feedback from the sidebar, across every tenant.

    No feedback yet.

    Account

    Your prepaid credit balance, usage, and invoices.

    Available credit
    —
    Buy credits

    What does a vehicle cost?

    Recent usage
    DateVehiclePhotosCredits used

    No usage yet.

    Invoices
    Invoice no.DateTypeAmount

    No invoices yet.

    Auto-refill
    Enabled

    Needs a payment method connected first — buy credits by card, or connect SEPA via iDEAL below.

    Billing details

    Verified live against the EU VIES registry. A valid number for a country other than the Netherlands automatically reverse-charges VAT on future top-ups.

    Turntable / mobile app processing

    Applies to every session the mobile app creates (turntable and manual video) — the app itself has no setting for this.

    Settings

    Dealer plate

    Upload your own dealer/business license plate. Mark one as default and it's applied automatically to every vehicle — unless you fill in a different plate for that specific vehicle in the review step.

    PreviewText

    No dealer plate uploaded yet.

    Add a dealer plate
    Click or drop a photo of the plate
    Logo / badge library

    Canonical reference images per make (hood/grille badge, wheel center cap, ...), matched automatically against each vehicle's actual photo during processing. We don't ship or generate logo images — add your own (reference photography or licensed assets you have rights to use).

    MakePreviewKindLabel

    No logo assets yet.

    Bulk upload a folder

    Pick a folder structured as <any name>/<Make>/<Kind>/<file> — e.g. Mini/badge/cooper-s.png. Kind folders are matched loosely ("badge"/"grille"/"hood", "wheel"/"velg"/"rim", "rear"/"trunk"/"kofferbak"); anything else is filed as "other" and reported. The filename becomes the label.

    Click to choose a folder
    
              
    Add one asset
    Click or drop a reference photo

    Integrations

    Desktop app

    Automatically saves finished vehicles into a folder on your computer (sorted by make + plate) and lets you start a new capture without opening a browser.

    Windows
    Not available yet.
    Download
    Mac
    Not available yet.
    Download
    Marketplaces & website

    Coming soon

    Marketplace and website integrations will be configured here.

    Users

    Current users
    Invite a user
    Invite a sub-account

    A user works at your own company and sees everything in this account. A sub-account is a customer of yours, with their own login, who only ever sees their own vehicles.

    Current users
    EmailRole
    Pending invites
    EmailRole

    No pending invites.

    Sub-customers

    Add the companies you shoot for as a Media Dienstverlener — each gets its own separate login and only ever sees its own vehicles, while sessions you create for them bill to your account here.

    NameEmailDate

    No sub-customers yet.

    Usage per sub-customer

    See what each sub-customer cost you over a period, to build your own invoice per customer.

    NameVehiclesCost

    No sub-customer activity in this period.

    Invite a colleague from your own company. They get full access to this account: every vehicle and every setting.

    Sending invitations becomes available once your account has made its first purchase. This keeps the platform from being used to send unsolicited mail.
    Invite a user
    Invitation email

    Leave blank to use our standard invitation. Placeholders: {company_name}, {invite_url}, {email}.

    Invite a company you shoot for. They get their own login and only ever see their own vehicles; whatever you produce for them is billed to your account.

    Sending invitations becomes available once your account has made its first purchase. This keeps the platform from being used to send unsolicited mail.
    Invitation email

    Leave blank to use our standard invitation. Placeholders: {company_name}, {invite_url}, {email}.