00:00:00

Limited offer: 50% off yearly

StagePro

API Reference

Base URL: https://www.stageproai.com/api/v1

Overview

The StagePro API lets agencies and integrators run virtual staging, interior design, and 25+ listing photo tools programmatically.

All image jobs are asynchronous: create a job, poll for status, or receive a webhook when complete.

Base URL: https://www.stageproai.com/api/v1

Authentication

Create an API key from the developer console (requires an active paid subscription).

Send your key on every request:

curl https://www.stageproai.com/api/v1/capabilities \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Create a job

POST /api/v1/jobs returns 202 with job id and status queued.

Core types: empty-room, virtual-stage, interior-design, edit.

Listing tools: type listing-tool with input.listing_tool set to a slug from GET /capabilities.

curl -X POST https://www.stageproai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "virtual-stage",
    "input": {
      "image_url": "https://example.com/room.jpg",
      "style": "modern",
      "room_type": "living-room",
      "options": { "creativity": 3, "aspect_ratio": "16:9" }
    },
    "metadata": { "listing_id": "MLS-12345", "photo_index": 1 },
    "idempotency_key": "listing-12345-photo-1-v1"
  }'

Recommended staging workflow

1. Optional: POST type empty-room → poll → get empty room output URL.

2. POST type virtual-stage with empty_room_url set to the cleared image.

3. POST /jobs/{id}/regenerate for variations on a completed job.

curl -X POST https://www.stageproai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "virtual-stage",
    "input": {
      "image_url": "https://example.com/original.jpg",
      "empty_room_url": "https://example.com/cleared.jpg",
      "style": "modern",
      "room_type": "living-room"
    }
  }'

Listing photo tools

Use type listing-tool and input.listing_tool with any slug from GET /api/v1/capabilities.

Examples: sky-enhancement, virtual-twilight, furniture-eraser, room-declutter, pool-water-enhancement.

Furniture Try-On and Magic Editor are app-only (interactive UI).

curl -X POST https://www.stageproai.com/api/v1/jobs \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "listing-tool",
    "input": {
      "image_url": "https://example.com/exterior.jpg",
      "listing_tool": "virtual-twilight"
    }
  }'

Poll for results

GET /api/v1/jobs/{id} until status is completed or failed.

Poll every 3–5 seconds. Typical jobs complete in 10–30 seconds.

curl https://www.stageproai.com/api/v1/jobs/JOB_ID \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Upload images

POST /api/v1/uploads with multipart form field file.

Use returned upload_id in job input instead of image_url.

Uploads expire after 24 hours.

curl -X POST https://www.stageproai.com/api/v1/uploads \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -F "file=@room.jpg"

Webhooks

Register via POST /api/v1/webhooks (session auth in developer console).

Complete verification challenge before use.

Pass webhook_endpoint_id when creating jobs. Events: job.completed, job.failed.

Verify X-StagePro-Signature HMAC on your server.

Batch processing

POST /api/v1/batches runs the same job type across many listing photos.

Returns batch_id and job_ids. Poll GET /api/v1/batches/{id} or listen for batch.completed webhook.

Concurrency depends on your plan (2–20 parallel jobs).

curl -X POST https://www.stageproai.com/api/v1/batches \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "listing-tool",
    "input": { "listing_tool": "room-declutter" },
    "listing_id": "MLS-8842",
    "photos": [
      { "image_url": "https://example.com/kitchen.jpg", "label": "kitchen" },
      { "image_url": "https://example.com/living.jpg", "label": "living" }
    ]
  }'

Workflow templates

POST /api/v1/workflows expands a template into a batch automatically.

Templates: mls-virtual-stage, mls-room-declutter, mls-furniture-clear, mls-exterior-twilight, mls-sky-enhance, mls-interior-design.

GET /api/v1/capabilities lists all templates.

curl -X POST https://www.stageproai.com/api/v1/workflows \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "mls-virtual-stage",
    "listing_id": "MLS-8842",
    "defaults": { "style": "modern" },
    "photos": [
      { "image_url": "https://example.com/living.jpg", "label": "living", "room_type": "living-room" }
    ]
  }'

AI Design Agent

Multi-turn interior design chat with optional render. Chat is free; rendering uses credits like other jobs.

POST /api/v1/agent/sessions — upload a room photo and get a session id (24h TTL).

POST /api/v1/agent/sessions/{id}/messages — send messages (set stream: true for SSE).

POST /api/v1/agent/sessions/{id}/render — create a render job when readyToRender is true.

auto_render defaults to false. Set true on session create to auto-queue a job when the agent marks readyToRender.

# 1. Create session
curl -X POST https://www.stageproai.com/api/v1/agent/sessions \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "image_url": "https://example.com/room.jpg", "auto_render": false }'

# 2. Chat
curl -X POST https://www.stageproai.com/api/v1/agent/sessions/SESSION_ID/messages \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "message": "What would you improve in this living room?" }'

# 3. Render when readyToRender is true
curl -X POST https://www.stageproai.com/api/v1/agent/sessions/SESSION_ID/render \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "job_type": "interior-design" }'

List jobs by listing

GET /api/v1/jobs?listing_id=MLS-8842 returns all jobs for a listing (paginated).

GET /api/v1/usage returns credits, storage, and plan limits.

curl "https://www.stageproai.com/api/v1/jobs?listing_id=MLS-8842&limit=50" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

MCP server (AI agents)

Install the StagePro MCP server for Cursor, Claude Desktop, or custom agents — no REST integration code required.

Package: packages/stagepro-mcp in this repo (npm name @stagepro/mcp).

Set STAGEPRO_API_KEY and run via stdio. Tools wrap jobs, batches, workflows, and the AI design agent.

See packages/stagepro-mcp/README.md for Cursor and Claude Desktop config.

{
  "mcpServers": {
    "stagepro": {
      "command": "node",
      "args": ["/path/to/stagepro/packages/stagepro-mcp/dist/index.js"],
      "env": {
        "STAGEPRO_API_KEY": "sk_live_YOUR_KEY"
      }
    }
  }
}

Errors & limits

402 — insufficient credits

401 — invalid or revoked API key

403 — storage limit exceeded

400 — validation error

Test keys (sk_test_) return mock results without spending credits.

Available listing tools

Use type: "listing-tool" and set input.listing_tool to one of:

  • add-furniture
  • ai-furniture-background
  • furniture-eraser
  • room-declutter
  • material-overlay
  • fireplace-ignition
  • tv-screen-replacement
  • refrigerator-cleanup
  • landscape-design
  • lawn-replacement
  • changing-seasons
  • sky-enhancement
  • rain-to-shine
  • driveway-leaf-removal
  • driveway-car-removal
  • add-water-to-empty-pool
  • pool-water-enhancement
  • natural-twilight
  • virtual-twilight
  • night-to-day
  • ai-floorplan-visualizer
  • social-media-poster
  • sketch-to-render

Endpoints

MethodPathAuth
GET/api/v1/capabilitiesAPI key
GET/api/v1/usageAPI key
POST/api/v1/jobsAPI key
GET/api/v1/jobs?listing_id=API key
GET/api/v1/jobs/{id}API key
POST/api/v1/jobs/{id}/regenerateAPI key
POST/api/v1/batchesAPI key
GET/api/v1/batches/{id}API key
POST/api/v1/workflowsAPI key
GET/api/v1/workflows/{id}API key
POST/api/v1/uploadsAPI key
GET/POST/api/v1/keysSession (console)
GET/POST/api/v1/webhooksSession (console)