Zestio API Reference
Integrate AI-powered real estate image enhancement and virtual staging into your application.
Quick Start
1. Get an API Key
Create an API key in your Settings page, or via the API:
curl -X POST https://zestio.ai/api/keys \
-H "Content-Type: application/json" \
-d '{"name": "My App"}' \
-b "your-session-cookie"
# Response: { "secret": "zest_a1b2c3d4..." }2. Make a Request
curl -X POST https://zestio.ai/api/enhance \
-H "Authorization: Bearer zest_a1b2c3d4..." \
-H "Content-Type: application/json" \
-d '{
"image": "https://example.com/property.jpg",
"enhancementType": "sky",
"model": "auto"
}'Authentication
All API requests require authentication. Use one of:
API Key (recommended)
Authorization: Bearer zest_xxxxxxxx...For server-to-server integrations. Create keys in Settings.
Session Cookie
Cookie: sb-xxx-auth-token=...For browser-based requests from the Zestio dashboard.
API Key Management
/api/keysList all your API keys (secrets are never returned)
Response
{
"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.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | No | Label for the key (default: "Default Key") |
Response
{
"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
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| key_id | string | Yes | The key ID to revoke |
Response
{ "success": true }Image Enhancement
Enhance, transform, and clean up property photos.
/api/enhanceEnhance a property image using AI. Supports sky replacement, season changes, decluttering, and more.
Parameters
| 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: "auto", "flux-kontext", "sdxl", "ideogram" |
| customPrompt | string | No | Custom prompt (overrides enhancementType) |
Response
{
"success": true,
"output": "https://replicate.delivery/...",
"creditsUsed": 1,
"model": "auto"
}Enhancement Types
| 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 |
Virtual Staging
Stage empty rooms with AI-generated furniture.
/api/stagingApply virtual staging to an empty room photo.
Parameters
| 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 |
Response
{
"success": true,
"output": "https://replicate.delivery/...",
"model": "interior-design",
"creditsUsed": 2,
"creditsRemaining": 48
}Staging Models
| 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 |
Error Responses
| 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 |
Rate Limits
All endpoints are rate limited to 10 requests per hour per IP/API key. Enterprise plans have higher limits. Contact us for custom arrangements.
Need Help?
Questions about integration, custom pricing, or enterprise plans.