Create, track, and manage orders in your web and mobile applications.

📘

V3 Order APIs

Order API Features

FeatureV3V2Description
Create Orders via APIPlanOmatic's Order API makes it easy speed up your workflow. When you identify a property that has marketing needs, request them via API. We will handle the rest! Order Create >
Retrieve Order Details via APINeed an update on the status of your order? Use our Retrieve API to get the latest details on your order. Order Retrieve >
Cancel Orders via APIOrder created by mistake? No biggie! Just send us a cancelation request via our NEW cancel API. Order Cancel >
Send a Simple Services Array to Customize Your Property's AssetsPass a simple array of services that can be easily customized to reflect your marketing needs. Learn more >
Send Metadata to Customize Each OrderPass up to 4 key/value pairs to customize your orders. Learn more >
Use Organizational Entities to Keep Your Orders OrganizedOrganize your billing notifications and details based on a customizable billing_entity_slug. Learn more
Avoid Accidental Double Orders With Duplicate ProtectionSet a threshold of hours that need to have passed between orders with the same external_property_id. This is a great way to protect yourself against double ordering.

Order API Request Example

Below is an example of what a request to the Create Order API would look like. For a details on each of these attributes, check out Order Create API >

{
  api_key: 'your_api_key',                      // API Key
  external_property_id: '{property_id}',        // Custom Property ID passed by client
  billing_entity_slug: 'investment_entity_1', 	// Custom Entity ID passed by client
  external_order_id: '{external_order_id}',
  metadata: {
    'metadata_key1': 'abc123', 
    'metadata_key2': 'wxyz987'
  },
  property: {
    location: {
      street: '123 Fake St',
      street2: 'Unit A',
      city: 'Denver',
      state: 'CO',
      postal_code: 'XXXXX',
      latitude: '95.784747',
      longitude: '-43.848483'
    },
    property_type: 'single_family',
    bedrooms: 3,
    bathrooms: 2.5,
    price: 3000,
    square_footage: 1500
  },
  services: [
    {
      "slug": "photos",
      "quantity": 15,
    },
    {
      slug: 'zillow_3d_and_floor_plans', 
      quantity: 1
    }
  ],
  property_access: {
    vacant: true,
    method_of_access: 'lockbox_code',
    access_code: 'XXXX',
    lockbox_location: 'Behind A/C Unit',
    preferred_date: 'YYYY-MM-DD',
    onsite_contact_name: 'Jane Doe',
    onsite_contact_phone: '+1 555-555-5555',
    onsite_contact_email: '[email protected]'
  },
  order_notes: 'Some special instructions.'
}

Order API Response Example

Below is an example of the response object you would receive from the order retrieve API.

{
  "order_id": "654321", 						// PlanOmatic Order ID
  "external_property_id": "{property_id}", 		// Custom Property ID passed by client
  "external_order_id": "{external_order_id}",
  "created": "2021-05-18T18:03:30.000Z",
  "order_status": "completed",
  "event": "order.delivered",
  "billing_entity": {
    "slug": "investment_entity_1",
    "name": "Investment Entity Number 1"
  },
  "property": {
    "location": {
      "address": "123 Fake St, Unit A, Denver, CO, 80205",
      "street": "123 Fake St",
      "street2": "Unit A",
      "city": "Denver",
      "state": "CO",
      "postal_code": "80205",
      "country": "US",
      "market": "Denver",
      "latitude": "95.784747",
      "longitude": "-43.848483",
    },
    "property_type": "single_family",
    "bedrooms": 3,
    "bathrooms": 2.5,
    "price": 3000,
    "square_footage": 1500
  },
  "services": [
    {
      "slug": "photos",
      "quantity": 15,
      "name": "Photos",
      "price": 12500
    },
    {
      "slug": "zillow_3d_and_floor_plans",
      "quantity": 1,
      "name": "Zillow 3D Home Tour and Floor Plans",
      "price": 12500
    }
  ],
  "property_access": {
    "vacant": true,
    "method_of_access": "lockbox_code",
    "access_code": "4321",
    "lockbox_location": "Behind A/C Unit",
    "preferred_date": "YYYY-MM-DD",
    "onsite_contact_name": "Jane Doe",
    "onsite_contact_email": "[email protected]",
    "onsite_contact_phone": "+1 555-555-5555"
  },
  "order_notes": "Some special instructions",
  "appointments": [
    {
      "appointment_id": "7654321",
      "start_datetime": "2021-05-20T18:00:00.000+00:00",
      "end_datetime": "2021-05-20T18:30:00.000+00:00",
      "duration_m": 30,
      "planotech_name": "Bobby",
      "cancelation_reason": null,
      "cancelation_notes": null,
      "canceled":false
    }
  ],
  "order_cancelation_reason": null,
  "order_cancelation_notes": null,
  "unable_to_complete_appt": false,
  "unable_to_complete_appt_reason": null,
  "unable_to_complete_appt_notes": null,
  "links": {
    "zillow_3d_link": "https: //www.zillow.com/view-3d-home/XXXXXXXXXX",
    "photo_manage_link": "https: //go.planomatic.com/planox/manage_photos/XXXXXX"
  },
  "photos": [
    {
      "sequence": 1,
      "caption": "Front View",
      "full_size_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX1.jpg",
      "full_size_watermarked_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX1/cw.jpg",
      "uploaded_at": "2022-02-25T06:41:58.000Z",
      "modified_at": "2022-03-25T21:07:56.000Z"
    },
    {
      "sequence": 2,
      "caption": "Kitchen",
      "full_size_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX2.jpg",
      "full_size_watermarked_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX2/cw.jpg",
      "uploaded_at": "2022-02-25T06:41:58.000Z",
      "modified_at": "2022-03-25T21:07:56.000Z"
    },
    {
      "sequence": 3,
      "caption": "Bedroom",
      "full_size_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX3.jpg",
      "full_size_watermarked_url": "https://g2-tour-files.cdn.planomatic.com/XXXXX3/cw.jpg",
      "uploaded_at": "2022-02-25T06:41:58.000Z",
      "modified_at": "2022-03-25T21:07:56.000Z"
    }
  ],
  "legacy_order_id": "543210" //Orders before 2022 may have referenced a different ID which we call the "legacy_order_id"
}

📘

How will I know if my property Is ready for photography?

Typically, the indication that a property is ready for photography will rely on one of the following:

  • An important Date is entered into the system (e.g. “Construction Final Date”)
  • A certain Property Status is reached (e.g. “Vacant Unrented Ready”)
    Our team will help you identify other important criteria to consider when setting up the ordering logic.