---
title: "List sites"
method: GET
path: "/sites"
tags: ["Sites"]
---

# List sites

`GET /sites`

## Query parameters

- `clusterId` string, uuid
- `unclustered` boolean
- `externalId` string
- `tags` string
- `priority` string
- `siteType` string
- `geometryType` 'Point' | 'LineString' | 'Polygon' | 'MultiLineString' | 'MultiPolygon'
- `q` string
- `bounds` string
- `limit` integer
- `cursor` string

## Response `200`

Success

- object
  - `data` Site[], required
    - `type` 'Feature', required — GeoJSON Feature type constant
    - `id` string, uuid, required
    - `organizationId` string, uuid, required
    - `externalId` string — Optional customer-facing identifier
    - `name` string, required
    - `siteType` 'distribution_pole' | 'transmission_pole' | 'substation' | 'utility_substation' | 'transmission_line' | 'distribution_line' | 'pipeline' | 'railway' | 'road' | 'other', required — Union of PointSiteType, AreaSiteType, and LineSiteType
    - `description` string
    - `tags` string[]
    - `clusterId` string, uuid
    - `cameraOrientation` CameraOrientation
      - `center` number[], required — [longitude, latitude]
      - `zoom` number, required
      - `bearing` number, required
      - `pitch` number, required
    - `geometry` union, required — GeoJSON geometry for sites (Point, LineString, or Polygon)
      - PointGeometry
        - `type` 'Point', required
        - `coordinates` number[], required — [longitude, latitude] or [longitude, latitude, altitude]
      - LineStringGeometry
        - `type` 'LineString', required
        - `coordinates` array[], required
          - number[]
      - PolygonGeometry
        - `type` 'Polygon', required
        - `coordinates` array[], required
          - array[]
            - number[]
    - `properties` SiteProperties
      - `geometryType` 'line', required
      - `width` number, required
    - `priority` 'high' | 'medium' | 'low' | 'none'
    - `deletedAt` number, nullable, required
    - `createdAt` number, required
    - `updatedAt` number, required
  - `meta` PaginationMeta, required
    - `cursor` string, nullable, required — Opaque cursor for the next page; null when no more results
    - `total` integer — Total matching results across all pages; included when cheaply computable

## Other responses

- `401` — Authentication required
- `403` — Insufficient permissions
- `429` — Rate limit exceeded
- `500` — Internal server error

---

[API](https://skmtc.net/voltairlabs/apis/voltair-api.md) · [All operations](https://skmtc.net/voltairlabs/apis/voltair-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voltairlabs/voltair-api/revisions/be08f4f706f5/schema)
