Markup V2

Two-phase property boundary markup. Phase 1 returns a high-resolution top-down aerial image. Phase 2 lets you submit a drawn property boundary and measurement text as structured data. Boundary effects and text are composited server-side — deterministic and instant.

Overview

Markup V2 works in two phases:

  1. Generate — Returns a beautiful, high-resolution top-down aerial photo ready for annotation. Typically takes 1-2 minutes.
  2. Annotate — Collect the property boundary polygon in your own UI (the user draws it over the aerial image), optionally with measurement text labels (total area, side lengths), and submit it to the edit endpoint. The boundary and style effects (outline, blur, or darken outside) are composited server-side in seconds.

Optionally, a cinematic zoom-in video can be generated from any completed markup.

Quick Example

Phase 1 — Generate the aerial photo:

curl -X POST \
  -H "X-API-Key: dome_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "22 Naroo Street, Balwyn VIC 3103"
  }' \
  https://api.dometech.com.au/v2/markup/generate

Response (202):

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

Step-by-Step

1. Generate Aerial Photo

Send a POST request to /v2/markup/generate with the property address. Returns a high-resolution aerial photo ready for annotation.

curl -X POST \
  -H "X-API-Key: dome_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "22 Naroo Street, Balwyn VIC 3103",
    "options": {
      "orientation": "bottom",
      "style": "darken",
      "zoom": "standard",
      "front_direction": 180
    },
    "webhook_url": "https://example.com/webhooks/dometech"
  }' \
  https://api.dometech.com.au/v2/markup/generate

Tip: Only address is required. The style option is stored and applied during the annotation phase.

2. Submit the Annotation

Once the generate job completes, collect the boundary in your own UI — the user draws the polygon over the aerial image and optionally adds measurement text labels (area, side lengths). Then submit the structured data (normalized 0-1 polygon vertices + text annotations) to the edit endpoint.

curl -X POST \
  -H "X-API-Key: dome_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "boundary_polygon": [
      { "x": 0.3, "y": 0.2 },
      { "x": 0.7, "y": 0.2 },
      { "x": 0.7, "y": 0.8 },
      { "x": 0.3, "y": 0.8 }
    ],
    "text_annotations": [
      {
        "id": "area_1",
        "text": "450 m²",
        "x": 0.5,
        "y": 0.5,
        "fontSize": 0.03,
        "color": "#FFFFFF",
        "fontWeight": "bold"
      }
    ],
    "options": { "style": "darken" }
  }' \
  https://api.dometech.com.au/v2/markup/jobs/{job_id}/edit

3. Annotation is Composited Server-Side

The server-side compositor applies the boundary style effect and renders text overlays in seconds — no AI processing needed.

4. Retrieve the Final Markup

The completed edit job output contains the final composited markup image:

{
  "data":  {
    "id":  "edit-job-id",
    "job_type":  "markup_v2_edit",
    "status":  "completed",
    "output":  {
      "markup_url":  "https://storage.example.com/final_markup.jpg",
      "enhanced_satellite_url":  "https://storage.example.com/enhanced.jpg",
      "satellite_url":  "https://storage.example.com/satellite.jpg",
      "style":  "darken",
      "generation_time_seconds":  3.2,
      "boundary_polygon":  [...],
      "text_annotations":  [...],
      "coordinates":  { "lat":  -37.8136, "lng":  144.9631 }
    }
  }
}

Output Fields

Generate Output (Phase 1)

FieldTypeDescription
enhanced_satellite_urlstringEnhanced aerial image (primary output)
satellite_urlstringSource aerial image
markup_urlstringSame as enhanced_satellite_url (backwards compatibility)
coordinatesobjectGeocoded lat/lng of the property

Edit/Annotate Output (Phase 2)

FieldTypeDescription
markup_urlstringFinal composited markup image with boundary and text
enhanced_satellite_urlstringEnhanced aerial image used as base image
boundary_polygonarrayPolygon vertices in normalized 0-1 coordinates
text_annotationsarrayText labels with position, font, rotation
generation_time_secondsnumberCompositing time (typically 2-5 seconds)

Text Annotations

Text annotations let you add measurement labels on top of the markup. Each annotation has position, font size, rotation, and an optional background pill. Common uses include total area labels and side measurements.

FieldRequiredDescription
idYesUnique identifier for the annotation
textYesText content (e.g., "450 m²", "12.5m")
x, yYesPosition in 0-1 normalized coordinates
fontSizeYesRelative to image height (0.02 = 2% of height)
rotationNoDegrees (useful for angled side measurements)
backgroundColorNoBackground pill color as hex (e.g., "rgba(0,0,0,0.6)")

Options

OptionValuesDefaultDescription
orientation"bottom", "left""bottom"Camera orientation
style"outline", "blur", "darken""darken"Boundary style effect applied during annotation phase
zoom"close", "standard", "wide""standard"Camera zoom level
front_direction0-3600Compass bearing of the property front

See the API Reference for full parameter details and response schemas.

Next Steps