API v1
Virtual staging API
Stage an empty room, clear out the furniture, or upscale a finished photo — with one authenticated POST. Built for photographers, brokerages and platforms shipping staging inside their own product.
Free presigned uploads · 1 credit per staged image
# 1. Your key, from the API dashboard. Never commit it.
export PICTASTIC_API_KEY="sk_live_..."
# 2. Ask for an upload slot (free — costs no credits)
curl -H "Authorization: Bearer $PICTASTIC_API_KEY" \
"https://app.pictastic.ai/api/v1/presigned-urls?count=1"
# → { "uploads": [ { "presignedUrl": "https://...", "publicUrl": "https://..." } ] }
# 3. Push your photo to the presigned URL
curl -X PUT -H "Content-Type: image/jpeg" \
--data-binary @empty-room.jpg "<presignedUrl>"
# 4. Stage it (1 credit)
curl -X POST "https://app.pictastic.ai/api/v1/virtual-staging" \
-H "Authorization: Bearer $PICTASTIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "<publicUrl>",
"roomType": "Living Room",
"designStyle": "Modern"
}'
# → { "jobId": "...", "status": "completed",
# "outputImageUrl": "https://...", "creditsCharged": 1 }Overview
What is a virtual staging API?
A virtual staging API is an HTTP endpoint that furnishes empty rooms, removes existing furniture, or upscales real estate photos programmatically — so you can stage listings inside your own software instead of a manual editor. The Pictastic virtual staging API does all three from a single authenticated POST and returns a finished image URL in the same response.
Endpoints
Three operations, one input shape
All three take the same imageUrl and return an output URL plus a job id. Swapping one for another is a one-line change.
/virtual-stagingVirtual staging
Furnish an empty room in a chosen style, interior or exterior.
- Cost
- 1 credit
- Options
- roomType · designStyle · designType · prompt · aiIntervention
/furniture-removalFurniture removal
Strip an occupied room back to empty walls and floors, ready to restage.
- Cost
- 1 credit
- Options
- prompt (defaults to removing all furniture)
/upscaleUpscaling
Raise resolution on a finished image before it goes to the MLS.
- Cost
- 3 credits
- Options
- scaleFactor — 2 (default) or 4
Full parameter tables, job history and pagination are in the reference docs.
Dedicated guides
Each operation, in depth
Prefer a focused walkthrough? Each endpoint has its own page with its own examples and FAQ.
Call it from your stack
Quickstarts for your language
Copy-paste examples that run the full staging loop from your own code.
Built for your business
Virtual staging API for your team
The same endpoints, framed for how each part of the real estate industry actually works.
How it works
Upload, call, collect
Image inputs live on Pictastic storage, so every job starts with a free presigned upload.
- 1
Get a presigned upload URL
Ask for as many slots as you need, then PUT your image bytes straight to storage. This call is free — no credits.
- 2
Call the endpoint you want
Pass the returned publicUrl as imageUrl. Staging, removal and upscaling all take the same input shape.
- 3
Read the output URL
The response carries outputImageUrl and a downloadUrl, plus a jobId you can re-fetch later from the jobs history.
Why developers pick it
Built to be the best virtual staging API
No leaderboard claims — just the things you actually evaluate an image API on.
You only pay for success
Requesting upload URLs is free, and a failed job refunds its 1 credit automatically. You are never billed for our errors.
One input shape, three operations
Staging, furniture removal and upscaling all take the same imageUrl. Switching one endpoint for another is a one-line change.
One key, two-line auth
Create a key in the dashboard and send it as an Authorization: Bearer or x-api-key header. No OAuth dance, no SDK required.
Shared credit balance
API calls draw on the same credits you use in the app, so credits you already own work from either side.
MLS-ready resolution
Upscale a finished image 2× or 4× before it goes to the listing, in the same pipeline that staged it.
Synchronous, with a job trail
The POST returns the finished outputImageUrl directly, and every call records a jobId you can re-fetch later instead of holding state yourself.
Who uses it
One API, four ways to ship staging
From a photographer scripting a whole gallery to a platform reselling under its own brand.
Real estate photographers
Script staging across a whole client gallery instead of restaging one photo at a time in an editor.
Brokerages & listing teams
Stage and restage listings at volume inside the workflow your agents already use.
PropTech & listing portals
Offer staging as a feature of your own product — your users never leave your app.
Auth and billing
One header, and no charge for our failures
Create a key in the dashboard, send it on every request, and check your balance whenever you like.
Authentication
Either header works — pick whichever your HTTP client makes easier.
- Authorization: Bearer <key>
- x-api-key: <key>
When it fails
- 401
- Invalid key
- 402
- Not enough credits
- 403
- API access not active
Credits
Charged per successful image, drawn from the same balance you use in the app.
- Virtual staging
- 1 credit
- Furniture removal
- 1 credit
- Upscaling
- 3 credits
- Presigned upload URLs
- Free
Failed jobs are refunded automatically. If processing does not complete, the credit goes back to your balance.
curl -H "Authorization: Bearer $PICTASTIC_API_KEY" \
"https://app.pictastic.ai/api/v1/credits"
# → { "totalCredits": 100, "usedCredits": 12, "remainingCredits": 88 }Virtual staging API FAQ
What is a virtual staging API?
A virtual staging API is an HTTP endpoint that furnishes empty rooms, removes existing furniture, or upscales real estate photos programmatically — so you can stage listings inside your own software instead of a manual editor. The Pictastic virtual staging API does all three from a single authenticated POST and returns a finished image URL in the same response.
Is there a free virtual staging API?
You can start for free: new accounts include 5 virtual staging credits, requesting upload URLs never costs credits, and failed jobs are refunded — so you only spend a credit on a finished image. Staged photos work out from $0.24 each after that.
How much does the virtual staging API cost?
Virtual staging and furniture removal are 1 credit per successful image and upscaling is 3 credits, all drawn from the same credit balance you use in the app. Credit packs start from $0.24 per photo, presigned uploads are free, and any failed job is refunded automatically.
Can I send an image from my own S3 bucket or CDN?
Not directly. Image inputs have to live on Pictastic storage, so the flow is: request a presigned upload URL, PUT your bytes to it, then pass the returned publicUrl as imageUrl. Requesting presigned URLs is free and you can ask for several at once, so batching stays cheap.
How do I authenticate?
Create a key in the API dashboard, then send it on every request as either an Authorization: Bearer header or an x-api-key header. Either works. You will get a 401 for an invalid key, a 403 if API access is not active on your account, and a 402 if you are out of credits.
Is the response synchronous?
The POST returns a job with a status and, when it has finished, an outputImageUrl and a downloadUrl. Every call also records a jobId, so you can re-fetch a single job or page through your history per endpoint later rather than holding state yourself.
Do API credits work like credits in the app?
They draw on the same balance, so credits you already own are usable from either side. Check the balance any time with a GET to /credits, which returns your total, used and remaining counts.
Can I white-label the virtual staging API?
Yes. The same staging engine can run under your own brand, domain and pricing as a reseller — talk to us about volume and we will quote against your real numbers.
Start with the virtual staging API today
Create a key in the dashboard and your first request can go out in the next few minutes.
Presigned uploads are free — you only spend credits on finished images.