Markup V2

Fully automated property boundary markup with optional manual edit and video

POST/v2/markup/generate202

Start automated property markup generation. Returns a high-resolution aerial image ready for boundary annotation.

Request Body

ParameterTypeRequiredDescription
addressstringYesFull Australian property address
options.orientationstringNoWhere the property front sits in the frame: bottom, left, top or right
options.stylestringNoHow the property boundary is applied: outline, blur, or darken
options.zoomstringNoCamera zoom level: close, standard, or wide
options.front_directionnumber (0-360)NoCompass bearing of the property front (0 = north). Defaults to 0.
options.latnumberNoPre-resolved latitude — skips geocoding when provided with lng
options.lngnumberNoPre-resolved longitude — skips geocoding when provided with lat
webhook_urlstring (URI)NoURL to receive progress and completion webhooks
callback_metadataobjectNoOpaque data returned in webhook payloads

Request Example

{
  "address":  "example",
  "options":  {
    "orientation":  "bottom",
    "style":  "outline",
    "zoom":  "close",
    "front_direction":  0,
    "lat":  0,
    "lng":  0
  },
  "webhook_url":  "https://example.com/image.jpg"
}

Response

{
  "data":  {
    "job_id":  "550e8400-e29b-41d4-a716-446655440000",
    "status":  "queued"
  },
  "meta":  {
    "request_id":  "req_abc123",
    "timestamp":  "2026-03-12T10:00:00.000Z",
    "mode":  "live"
  }
}
POST/v2/markup/jobs/{jobId}/edit202

Annotate a completed markup V2 job. Requires boundary_polygon (array of {x,y} points in 0-1 coords) in the body; creates a compositing job that applies the boundary and style effects.

Path Parameters

ParameterTypeRequiredDescription
jobIdstringYes

Request Body

ParameterTypeRequiredDescription
boundary_polygonobject[]YesPolygon boundary vertices in normalized 0-1 coordinates.
text_annotationsobject[]NoText annotations to render on the markup (measurements, area labels, etc.)
options.stylestringNoHow the property boundary is applied: outline, blur, or darken
options.compositor.outline_colorstringNoStroke color (default: "#FFFFFF")
options.compositor.outline_widthnumber (1-20)NoStroke width in pixels (default: 6)
options.compositor.blur_radiusnumber (5-50)NoBlur radius for blur style (default: 20)
options.compositor.darken_amountnumber (0.1-0.9)NoDarken amount 0-1 for darken style (default: 0.5)
webhook_urlstring (URI)NoURL to receive progress and completion webhooks
callback_metadataobjectNoOpaque data returned in webhook payloads

Request Example

{
  "boundary_polygon":  [
    {
      "x":  0,
      "y":  0
    }
  ],
  "options":  {
    "style":  "outline",
    "compositor":  {
      "outline_color":  "string",
      "outline_width":  1,
      "blur_radius":  5,
      "darken_amount":  0.1
    }
  },
  "webhook_url":  "https://example.com/image.jpg"
}

Response

{
  "data":  {
    "job_id":  "550e8400-e29b-41d4-a716-446655440000",
    "status":  "queued"
  },
  "meta":  {
    "request_id":  "req_abc123",
    "timestamp":  "2026-03-12T10:00:00.000Z",
    "mode":  "live"
  }
}
POST/v2/markup/jobs/{jobId}/video202

Generate a static-camera markup reveal video from a completed markup. The underlying photo is held still while the boundary lines, annotations, and markup effects animate onto the frame.

Path Parameters

ParameterTypeRequiredDescription
jobIdstringYes

Request Body

ParameterTypeRequiredDescription
options.durationinteger (5-10)NoVideo duration in seconds (5-10). Defaults to 7.
webhook_urlstring (URI)NoURL to receive progress and completion webhooks
callback_metadataobjectNoOpaque data returned in webhook payloads

Request Example

{
  "options":  {
    "duration":  5
  },
  "webhook_url":  "https://example.com/image.jpg"
}

Response

{
  "data":  {
    "job_id":  "550e8400-e29b-41d4-a716-446655440000",
    "status":  "queued"
  },
  "meta":  {
    "request_id":  "req_abc123",
    "timestamp":  "2026-03-12T10:00:00.000Z",
    "mode":  "live"
  }
}