Quickstart Guide

Make your first API call in 5 minutes and enhance your first property image.

Prerequisites

  • • A Quick Home AI account with available credits
  • • An API key (see Authentication)
  • • Basic familiarity with REST APIs

Step 1: Upload Photos

Upload photos using a two-step process: first get pre-signed upload URLs, then upload files directly to storage. This supports files up to 50MB each.

1a. Request Upload URLs

const API_KEY = process.env.QUICKHOME_API_KEY;
const BASE_URL = 'https://www.quickhome.ai/api/v1';

// Request pre-signed upload URLs
const urlResponse = await fetch(`${BASE_URL}/orders/upload-urls`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    interiorCount: 3,  // Number of interior photos
    exteriorCount: 0   // Number of exterior photos
  })
});

const { uploadSessionId, interiorUrls } = await urlResponse.json();
console.log('Upload session ID:', uploadSessionId);
console.log('Got', interiorUrls.length, 'upload URLs');

1b. Upload Files to Storage

// Upload each file to its pre-signed URL
const files = [livingRoomPhoto, kitchenPhoto, bedroomPhoto];

for (let i = 0; i < files.length; i++) {
  const file = files[i];
  const { uploadUrl } = interiorUrls[i];
  
  await fetch(uploadUrl, {
    method: 'PUT',
    body: file,
    headers: {
      'Content-Type': file.type,
      'x-upsert': 'false'
    }
  });
  
  console.log(`Uploaded ${file.name}`);
}

1c. Create Order

// Create order with uploaded file references
const orderResponse = await fetch(`${BASE_URL}/orders/from-uploads`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    address: '266 Dana Point Ave, Ventura, CA 93004, USA',
    serviceType: 'interior',
    uploadSessionId: uploadSessionId,
    interiorFiles: interiorUrls.map((url, i) => ({
      filePath: url.filePath,
      fileName: files[i].name,
      index: i
    })),
    interiorEnhancements: ['virtual_staging', 'hdr_enhancement']
  })
});

const result = await orderResponse.json();
console.log('Job ID:', result.jobId);
console.log('Status:', result.status);
console.log('Photos uploaded:', result.photosUploaded);

Service Types Explained

  • exterior: Uses public imagery sources automatically (no photos needed)
  • interior: Requires you to upload interior photos
  • both: Upload interior photos; exterior uses public imagery sources

File Size Support

  • • Maximum file size: 50MB per photo
  • • Supported formats: JPEG, PNG, WebP, HEIC
  • • Pre-signed URLs valid for 1 hour
  • • Upload directly to storage (no serverless limits)

Response

201 Created
{
  "success": true,
  "jobId": "job_abc123xyz",
  "status": "processing",
  "creditCost": 15,
  "photosUploaded": 3,
  "assets": [
    {
      "assetId": "asset_1",
      "fileName": "living-room.jpg",
      "type": "interior"
    },
    {
      "assetId": "asset_2",
      "fileName": "kitchen.jpg",
      "type": "interior"
    },
    {
      "assetId": "asset_3",
      "fileName": "bedroom.jpg",
      "type": "interior"
    }
  ],
  "message": "Order created successfully"
}

Step 2: Check Job Status

Poll the status endpoint to monitor progress. Most jobs complete in about an hour:

curl https://www.quickhome.ai/api/v1/jobs/job_abc123xyz/status \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

200 OK
{
  "jobId": "job_abc123xyz",
  "status": "processing",
  "progress": {
    "total": 3,
    "completed": 1,
    "percentage": 33
  },
  "createdAt": "2025-11-18T10:30:00Z"
}

Step 3: Download Results

Once the status is completed, download your enhanced images:

curl https://www.quickhome.ai/api/v1/downloads/job_abc123xyz \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

200 OK
{
  "jobId": "job_abc123xyz",
  "address": "266 Dana Point Ave, Ventura, CA 93004, USA",
  "imageCount": 3,
  "images": [
    {
      "id": "img_1",
      "type": "generated_interior",
      "fileName": "living_room_enhanced.jpg",
      "url": "https://storage.quickhome.ai/..."
    },
    {
      "id": "img_2",
      "type": "generated_interior",
      "fileName": "kitchen_enhanced.jpg",
      "url": "https://storage.quickhome.ai/..."
    },
    {
      "id": "img_3",
      "type": "generated_interior",
      "fileName": "bedroom_enhanced.jpg",
      "url": "https://storage.quickhome.ai/..."
    }
  ]
}

Error Handling

Always check response status codes and handle errors appropriately:

try {
  const response = await fetch('https://quickhome.ai/api/v1/orders', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      address: '266 Dana Point Ave, Ventura, CA 93004, USA',
      serviceType: 'exterior',
      exteriorEnhancements: ['sky_enhancement']
    })
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(`API Error ${response.status}: ${error.error}`);
  }

  const result = await response.json();
  console.log('Job ID:', result.jobId);
} catch (error) {
  console.error('Request failed:', error.message);
}

Next Steps

Quick Home AI | Professional Property Photos