---
title: "Motion"
method: GET
path: "/api/v1/motion"
---

# Motion

`GET /api/v1/motion`

## Request

- Base URL: `https://sibfly.com`
- URL: `https://sibfly.com/api/v1/motion`
- Auth: HTTP bearer

## Query parameters

- `address` string
- `lat` number
- `lon` number
- `brief` integer
- `label` string
- `teaser` integer
- `include` string
- `dry_run` integer
- `max_age_days` integer
- `min_confidence` number
- `since` string
- `min_geocode_score` number
- `min_significance` integer
- `compact` integer
- `fields` string
- `units` string
- `mock` string

## Response `200`

Per-address ground-motion report; or a free miss/teaser/oracle.

- MotionReport
  - `status` 'ok' | 'no_data' | 'no_coverage' | 'stale_data' | 'low_confidence' | 'low_geocode_precision' | 'no_new_data' | 'inconclusive'
  - `velocity_vertical_mm_yr` number, nullable
  - `velocity_vertical_in_yr` number, nullable
  - `velocity_uncertainty_mm_yr` number, nullable
  - `velocity_uncertainty_in_yr` number, nullable
  - `velocity_los_mm_yr` number, nullable
  - `seasonal_amplitude_mm` number, nullable
  - `seasonal_dominant` boolean
  - `total_motion_mm` number, nullable
  - `total_motion_in` number, nullable
  - `display_units` string
  - `velocity_display` string
  - `trend` 'subsiding' | 'stable' | 'uplifting'
  - `assessment` string
  - `assessment_code` 'rapid_subsidence' | 'notable_subsidence' | 'stable' | 'mild_uplift' | 'strong_uplift' | 'no_clear_trend'
  - `confidence_tier` 'measured' | 'likely' | 'within_margin': trust tier from signal_to_noise=|v|/uncertainty: measured(>=2)=confident direction, likely(1-2)=suggestive, within_margin(<1)=inside error bar
  - `within_margin_kind` 'stable' | 'inconclusive' | 'null', nullable: when within_margin: 'stable'=confident no-movement PASS (billed); 'inconclusive'=untrustworthy, returned as status:inconclusive cost_usd:0 (free)
  - `signal_to_noise` number, nullable
  - `differential_motion` object, nullable: present when the ground moves unevenly over ~150m (neighbor_spread>3); the foundation-relevant signal
  - `confidence` number, nullable
  - `near_threshold` boolean
  - `significant_nonzero` boolean
  - `neighbor_consistent` boolean, nullable
  - `neighbor_spread_mm_yr` number, nullable
  - `frame` string
  - `pixel_id` string
  - `pixel_polygon` array[]
    - number[]
  - `pixel_geojson` object
  - `cell_size_m` number, nullable
  - `n_measurements` number, nullable
  - `span_years` number, nullable
  - `last_observation` string
  - `data_age_days` integer, nullable
  - `data_freshness` 'current' | 'recent' | 'stale' | 'very_stale' | 'unknown'
  - `estimated_next_acquisition` string, nullable
  - `data_coverage` string
  - `provenance` object
    - `calibration` 'gps_tied' | 'relative'
    - `calibration_rmse_mm_yr` number, nullable
    - `sign_convention` string
    - `science_version` string
    - `attribution` string
    - `license` string
    - `disclaimer` string
  - `query` object
    - `address` string, nullable
    - `geocoded_address` string, nullable
    - `geocode` object
      - `match_type` string
      - `score` number
    - `lat` number
    - `lon` number
  - `queried_at` string
  - `cost_usd` number
  - `billed_usd` number, nullable
  - `credits_remaining_usd` number, nullable
  - `reports_remaining` integer, nullable
  - `request_id` string
  - `trend_analysis` object
  - `timeseries` object
  - `ground_brief` string

## Other responses

- `401`: Unauthorized
- `402`: Out of credits / spend cap
- `422`: Validation Error
- `429`: Rate limited (un-keyed)

---

[API](https://skmtc.dev/sibfly/apis/sibfly-api.md) · [All operations](https://skmtc.dev/sibfly/apis/sibfly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sibfly/apis/sibfly-api/revisions/90d2c9643f31?raw)
