Raad Guides

Sites

3 endpoints

Overview

Sites represent physical locations where aerial data is collected. Each site belongs to your account and includes address information, geographic coordinates, and boundary geometry. Campaigns are associated with sites — a site must have a valid boundary geometry before it can be used in a campaign.

Site geometry is sent and returned as GeoJSON. Boundaries are validated to ensure they are between 500 sq ft and 100 sq km.

GET /api/v1/sites Requires Auth

List all sites for your account.

Parameters

Name In Type Required Description
page query integer No Page number (default: 1)
per_page query integer No Items per page (default: 25, max: 100)

Responses

200 Sites list
Response
{
  "data": [
    {
      "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "type": "site",
      "attributes": {
        "name": "Solar Farm Alpha",
        "description": "200-acre solar installation",
        "address1": "1234 Solar Drive",
        "address2": null,
        "city": "Austin",
        "state": "TX",
        "zipCode": "78701",
        "country": "US",
        "siteType": "Commercial - Solar",
        "latitude": 30.2672,
        "longitude": -97.7431,
        "fullAddress": "1234 Solar Drive, Austin, TX 78701",
        "area": 0.81,
        "geometry": {
          "type": "Polygon",
          "coordinates": [[
            [-97.744, 30.268], [-97.742, 30.268],
            [-97.742, 30.266], [-97.744, 30.266],
            [-97.744, 30.268]
          ]]
        },
        "status": "active",
        "faaRestrictionsSummary": "No restrictions",
        "createdAt": "2024-01-05T09:00:00.000Z",
        "updatedAt": "2024-02-20T16:45:00.000Z"
      }
    }
  ]
}

POST /api/v1/sites Requires Auth

Create a new site with an optional GeoJSON boundary. Geometry is validated to be between 500 sq ft and 100 sq km.

Request Body

Name Type Required Description
name string Yes Site name
description string No Site description
address_1 string Conditional Street address (required if no geometry)
city string Conditional City (required if no geometry)
state string Conditional State / province
zip_code string No Postal code
country string No Country code
site_type string No Site type classification
geometry GeoJSON No Boundary polygon as GeoJSON
Request
POST /api/v1/sites
Content-Type: application/json
Authorization: Bearer YOUR_TOKEN

{
  "name": "Solar Farm Alpha",
  "description": "200-acre solar installation",
  "address_1": "1234 Solar Drive",
  "city": "Austin",
  "state": "TX",
  "zip_code": "78701",
  "site_type": "Commercial - Solar",
  "geometry": {
    "type": "Polygon",
    "coordinates": [[
      [-97.744, 30.268], [-97.742, 30.268],
      [-97.742, 30.266], [-97.744, 30.266],
      [-97.744, 30.268]
    ]]
  }
}

Responses

201 Site created
422 Validation failed (invalid GeoJSON, geometry too small/large, missing address)
Error: Geometry Too Small
{
  "error": "Validation failed",
  "messages": ["Boundary is too small (minimum 500 sq ft / ~46 sq m)"]
}

GET /api/v1/sites/{id} Requires Auth

Retrieve a single site with relationships.

Parameters

Name In Type Required Description
id path uuid Yes Site UUID

Responses

200 Site found
Response
{
  "data": {
    "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "type": "site",
    "attributes": { ... },
    "relationships": {
      "account": { "data": { "id": "...", "type": "account" } },
      "campaigns": { "data": [{ "id": "...", "type": "campaign" }] }
    }
  }
}
404 Site not found

Geometry Validation

Site boundaries must be valid GeoJSON Polygon geometries. The API enforces the following size constraints:

  • Minimum area: 500 sq ft (~46 sq m)
  • Maximum area: 100 sq km (100,000,000 sq m)

If a boundary falls outside these limits, the API returns a 422 with a descriptive error message. Coordinates must be in WGS 84 (EPSG:4326) — standard longitude/latitude pairs.

Site Object

The Site object contains the following attributes:

Attribute Type Description
id uuid Unique identifier
name string Site name
description string Site description
address1 string Street address line 1
address2 string Street address line 2
city string City
state string State or province
zipCode string Postal code
country string Country code
siteType string Site type classification
latitude decimal Site center latitude
longitude decimal Site center longitude
fullAddress string Formatted full address
area decimal Boundary area in km²
geometry GeoJSON Boundary polygon as GeoJSON (null if not set)
status string Current site status
faaRestrictionsSummary string FAA airspace restriction summary
createdAt datetime ISO 8601 creation timestamp
updatedAt datetime ISO 8601 last updated timestamp