Services

Customize marketing services based on property needs.

Overview

Orders can be placed for one or many services based on the needs of your property. These services are passed as an array of objects, each with a slug for identification and a quantity.

Services Example

services: [
    {
      slug: "photos",				// Service identification slug
      quantity: 15					// Service quantity
    },
    {
      slug: "zillow_3d_and_floor_plans",	// Zillow 3D home tour + floor plan
      quantity: 1
    }
  ]
services: [
    {
      slug: "ai_virtual_staging",	// Service identification slug
      quantity: 5,			// Service quantity
  previous_order_id: "654321"	// Order ID that unstaged photos belong to
    }
  ]
πŸ“˜

Development Tip

When developing your ordering solution, we recommend a data-driven services approach. Your marketing team may decide to add an additional service for properties in a specific city at some point. Avoiding a hardcoded services parameter will help your team stay flexible!

Available Services

For an in depth description of PlanOmatic services, please check out our service page. Check it out >

🚧

The catalog is admin-managed and changes over time

The service slugs and valid quantities below are administratively managed and synced from PlanOmatic's internal systems. They are a non-authoritative snapshot as of 2026-06-24 and may change without notice. Do not hardcode this list β€” fetch the current catalog dynamically and treat unrecognized slugs or rejected quantities as expected, recoverable validation errors.

ServiceDescriptionValid QuantitiesAccess Required
exterior_photosProfessional photography of the exterior of a property.1, 3, 4, 5
photosProfessional photography of the exterior and interior of property.10, 15, 20, 25βœ…
zillow_3d_and_floor_plansZillow 3D home tour and floor plan.1βœ…
back_exterior_photosProfessional photography of the rear/back exterior of a property.1, 3, 5
community_photographyProfessional photography of community interior and exterior.5, 10, 20
enhanced_virtual_staging_all_interiorsVirtual Staging by designers on all interior photos, up to 12.1βœ…
ai_virtual_stagingAI-powered virtual staging to showcase key vacant rooms.3, 4, 5

Asset Orders

AI Virtual Staging and Enhanced Virtual Staging create new deliverables from photos that already exist, so they don't require their own photo shoot. You can order them two ways:

  1. Alongside a shoot β€” include the staging service in the same order as your photography (or other property) services. The staging is applied to the photos captured by that order. No previous_order_id is used.
  2. After delivery β€” once an order has been delivered, order staging against its assets by adding a previous_order_id to each staging service. No new shoot is scheduled; PlanOmatic works from the already-delivered photos.
πŸ“˜

Eligible services

previous_order_id is currently supported only for AI Virtual Staging (ai_virtual_staging) and Enhanced Virtual Staging (enhanced_virtual_staging_image_select, enhanced_virtual_staging_all_interiors). It is not used for any other service.

Option 1 β€” Order staging alongside a shoot

Just include the staging service in your order together with your photography services, without previous_order_id. Mixing staging and shoot services in a single order is fully supported.

"services": [
  { "slug": "photos", "quantity": 15 },
  { "slug": "ai_virtual_staging", "quantity": 5 }
]

Option 2 β€” Order staging after delivery (previous_order_id)

Send a Create Order request containing only your staging service(s), each with the same previous_order_id β€” the PlanOmatic order_id of the delivered order whose photos you want staged. Because no one visits the property, set property_access.method_of_access to no_access_needed. property, property_access, billing_entity_slug, and external_property_id are still required.

{
  "api_key": "y0Ur-AP1-k3y",
  "external_property_id": "{property_id}",
  "billing_entity_slug": "investment_entity_1",
  "property": {
    "location": {
      "street": "123 Fake St",
      "city": "Denver",
      "state": "CO",
      "postal_code": "80205"
    },
    "property_type": "single_family"
  },
  "property_access": {
    "vacant": true,
    "method_of_access": "no_access_needed",
    "onsite_contact_name": "Jane Doe",
    "onsite_contact_phone": "+1 555-555-5555"
  },
  "services": [
    { "slug": "ai_virtual_staging", "quantity": 5, "previous_order_id": "654321" }
  ]
}

Rules for previous_order_id

  • Delivered orders only. The order referenced by previous_order_id must already be delivered. You can't stage against an order that hasn't been delivered yet.
  • Staging services only. previous_order_id is only valid on the eligible staging services above.
  • One previous order per request. Every service that includes previous_order_id must reference the same value.
πŸ“˜

Mixing services is fine β€” unless you add previous_order_id

Combining staging and shoot services in one order is perfectly valid (that's Option 1) β€” just leave previous_order_id out. The "cannot mix asset and non-asset services" error appears only when you include previous_order_id on some services but not all. To stage assets from an order that was already delivered, place a separate, staging-only order with previous_order_id (Option 2).

Errors

Error messageWhen it happens
only valid on asset-type servicesprevious_order_id was sent on a service other than the eligible staging services.
must reference the same previous orderServices in the request reference different previous_order_id values.
cannot mix asset and non-asset servicesSome services include previous_order_id and others don't. Submit them as separate orders.
unrecognizedThe previous_order_id doesn't match a known order.