Integrate AI-powered real estate image enhancement and virtual staging into your application.
Sign up for an account, then create an API key in your dashboard Settings. Or create one via the API:
curl -X POST https://zestio.de/api/keys \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"name": "My App"}'
# Response: { "secret": "zest_a1b2c3d4..." }curl -X POST https://zestio.de/api/enhance \
-H "Authorization: Bearer zest_a1b2c3d4..." \
-H "Content-Type: application/json" \
-d '{
"image": "https://example.com/property.jpg",
"enhancementType": "sky",
"model": "auto"
}'All API requests require an API key passed as a Bearer token:
Authorization: Bearer zest_xxxxxxxx...Create API keys in your dashboard Settings after signing up. Each key is prefixed zest_ and the full secret is only shown once.
/api/keysList all your API keys (secrets are never returned)
{
"keys": [
{
"id": "uuid",
"name": "My App",
"key_prefix": "zest_a1b",
"last_used_at": "2026-04-21T...",
"created_at": "2026-04-21T...",
"is_active": true
}
]
}/api/keysCreate a new API key. The secret is only returned once.
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | No | Label for the key (default: "Default Key") |
{
"key": { "id": "uuid", "name": "My App", "key_prefix": "zest_a1b" },
"secret": "zest_a1b2c3d4e5f6...",
"warning": "Store this key securely. It cannot be retrieved again."
}/api/keysRevoke an API key
| Name | Type | Required | Description |
|---|---|---|---|
| key_id | string | Yes | The key ID to revoke |
{ "success": true }Enhance, transform, and clean up property photos.
/api/enhanceEnhance a property image using AI. Supports sky replacement, season changes, decluttering, and more.
| Name | Type | Required | Description |
|---|---|---|---|
| image | string | Yes | Image URL or base64 data URL |
| enhancementType | string | No | Type of enhancement (see table below). Default: "auto" |
| model | string | No | Model: "flux-kontext", "ideogram", "flux-pro" (auto selects for best result) |
| customPrompt | string | No | Custom prompt (overrides enhancementType) |
{
"success": true,
"output": "https://replicate.delivery/...",
"creditsUsed": 1,
"model": "auto"
}| Type | Name | Description |
|---|---|---|
| auto | Auto Enhance | General enhancement |
| sky | Blue Sky | Clear sunny sky |
| sky_sunset | Golden Sunset | Warm golden hour |
| sky_dramatic | Dramatic Clouds | Moody cinematic sky |
| twilight | Virtual Twilight | Blue hour with warm glow |
| season_summer | Summer | Lush green landscape |
| season_autumn | Autumn | Golden fall foliage |
| season_winter | Winter | Pristine snow scene |
| curb_appeal | Curb Appeal | Green lawn & landscaping |
| facade_refresh | Facade Refresh | Clean painted exterior |
| object_removal | Object Removal | Remove unwanted items |
| declutter | Declutter | Remove personal items |
Stage empty rooms with AI-generated furniture.
/api/stagingApply virtual staging to an empty room photo.
| Name | Type | Required | Description |
|---|---|---|---|
| image | string | Yes | Image URL or base64 data URL of the empty room |
| model | string | No | Model: "interior-design" (default), "flux-depth", "decor8" |
| roomType | string | No | Room: living, bedroom, kitchen, dining, bathroom, office, basement, patio |
| furnitureStyle | string | No | Style: modern, scandinavian, luxury, minimalist, industrial, bohemian, midcentury, farmhouse |
{
"success": true,
"output": "https://replicate.delivery/...",
"model": "interior-design",
"creditsUsed": 2,
"creditsRemaining": 48
}| Model | Credits | Est. Cost | Description |
|---|---|---|---|
| interior-design | 2 | ~$0.006 | Best value, ControlNet-based |
| flux-depth | 2 | ~$0.02 | Depth-based staging |
| decor8 | 3 | ~$0.20 | Premium professional staging |
| Status | Meaning |
|---|---|
| 400 | Missing or invalid parameters |
| 401 | Missing or invalid authentication |
| 402 | Insufficient credits |
| 429 | Rate limit exceeded (10 req/hr for free tier) |
| 500 | Server error or AI model failure |
All endpoints are rate limited to 10 requests per hour per IP/API key. Enterprise plans have higher limits. Contact us for custom arrangements.
Sign up for a free account and get API access with 2 free credits.