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 TipWhen 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 timeThe 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.
| Service | Description | Valid Quantities | Access Required |
|---|---|---|---|
| exterior_photos | Professional photography of the exterior of a property. | 1, 3, 4, 5 | |
| photos | Professional photography of the exterior and interior of property. | 10, 15, 20, 25 | β |
| zillow_3d_and_floor_plans | Zillow 3D home tour and floor plan. | 1 | β |
| back_exterior_photos | Professional photography of the rear/back exterior of a property. | 1, 3, 5 | |
| community_photography | Professional photography of community interior and exterior. | 5, 10, 20 | |
| enhanced_virtual_staging_all_interiors | Virtual Staging by designers on all interior photos, up to 12. | 1 | β |
| ai_virtual_staging | AI-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:
- 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_idis used. - After delivery β once an order has been delivered, order staging against its assets by adding a
previous_order_idto each staging service. No new shoot is scheduled; PlanOmatic works from the already-delivered photos.
Eligible services
previous_order_idis 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)
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
previous_order_id- Delivered orders only. The order referenced by
previous_order_idmust already be delivered. You can't stage against an order that hasn't been delivered yet. - Staging services only.
previous_order_idis only valid on the eligible staging services above. - One previous order per request. Every service that includes
previous_order_idmust reference the same value.
Mixing services is fine β unless you addprevious_order_idCombining staging and shoot services in one order is perfectly valid (that's Option 1) β just leave
previous_order_idout. The "cannot mix asset and non-asset services" error appears only when you includeprevious_order_idon some services but not all. To stage assets from an order that was already delivered, place a separate, staging-only order withprevious_order_id(Option 2).
Errors
Error message | When it happens |
|---|---|
only valid on asset-type services | previous_order_id was sent on a service other than the eligible staging services. |
must reference the same previous order | Services in the request reference different previous_order_id values. |
cannot mix asset and non-asset services | Some services include previous_order_id and others don't. Submit them as separate orders. |
unrecognized | The previous_order_id doesn't match a known order. |
