Artifacts

5 endpoints

Overview

Artifacts represent individual pieces of aerial data collected during missions — typically drone photographs, but also videos, point clouds, and processed outputs. The artifact API is available to client users only. Artifacts are scoped to sites you own or sites shared with you. All uploaded artifacts are returned, including raw video uploads that have not been processed.

GET /api/v1/artifacts Requires Auth

List artifacts across your accessible sites.

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)
site_id query uuid No Filter to a specific site
campaign_id query uuid No Filter by campaign
mission_id query uuid No Filter by mission
site_geometry_id query uuid No Filter to artifacts that intersect or are assigned to this geometry
site_geometry_ids[] query array<uuid> No Filter by multiple geometries
geometry_match query string No intersects (default) or assigned; requires a geometry filter
file_type query string No Filter by file type (e.g. JPEG, MP4, GeoTIFF)
image_source query string No Filter by image source camera label
camera_model query string No Filter by camera model
captured_after query datetime No ISO 8601 timestamp (inclusive)
captured_before query datetime No ISO 8601 timestamp (exclusive)
bbox query string No Comma-separated west,south,east,north in WGS 84
q query string No Search title, description, or filename

cURL Example

cURL
curl "https://app.raad.com/api/v1/artifacts?page=1&per_page=25&site_id=<SITE_ID>&file_type=JPEG" \
  -H "Authorization: Bearer <JWT_TOKEN>"

Responses

200 Artifacts list
Response
{
  "data": [
    {
      "id": "c3d4e5f6-a7b8-9012-cdef-234567890abc",
      "type": "artifact",
      "attributes": {
        "title": "DJI_0042.JPG",
        "fileType": "JPEG",
        "latitude": 30.2672,
        "longitude": -97.7431,
        "altitude": 120.5,
        "relativeAltitude": 100.0,
        "cameraMake": "DJI",
        "cameraModel": "FC3582",
        "droneModel": "Mavic 3 Enterprise",
        "imageSource": "WideCamera",
        "imageWidth": 5280,
        "imageHeight": 3956,
        "photoTakenAt": "2024-03-15T14:32:10.000Z",
        "isProcessed": true,
        "imageUrl": "https://app.raad.com/api/v1/artifacts/c3d4e5f6-a7b8-9012-cdef-234567890abc/download",
        "thumbnailUrl": "https://app.raad.com/api/v1/artifacts/c3d4e5f6-a7b8-9012-cdef-234567890abc/thumbnail",
        "downloadUrl": "https://s3.amazonaws.com/...",
        "downloadUrlExpiresAt": "2024-03-15T15:05:00.000Z",
        "siteId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "siteName": "Solar Farm Alpha",
        "captureName": "March Inspection",
        "createdAt": "2024-03-15T15:00:00.000Z",
        "updatedAt": "2024-03-15T15:05:00.000Z"
      }
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "per_page": 25,
      "total": 1,
      "total_pages": 1
    }
  },
  "links": {
    "next": null
  }
}
422 Unknown or invalid filter

GET /api/v1/artifacts/favorites Requires Auth

List artifacts that have been marked as favorites by 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)
file_type query string No Filter by file type

cURL Example

cURL
curl "https://app.raad.com/api/v1/artifacts/favorites?per_page=25" \
  -H "Authorization: Bearer <JWT_TOKEN>"

Responses

200 Favorites list; each artifact includes the note field if one was saved
Response
{
  "data": [
    {
      "id": "c3d4e5f6-a7b8-9012-cdef-234567890abc",
      "type": "artifact",
      "attributes": {
        "title": "DJI_0042.JPG",
        "fileType": "JPEG",
        "imageUrl": "https://app.raad.com/api/v1/artifacts/c3d4e5f6-a7b8-9012-cdef-234567890abc/download",
        "thumbnailUrl": "https://app.raad.com/api/v1/artifacts/c3d4e5f6-a7b8-9012-cdef-234567890abc/thumbnail",
        "siteId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "siteName": "Solar Farm Alpha",
        "captureName": "March Inspection",
        "note": "Use this for the quarterly report."
      }
    }
  ],
  "meta": { ... }
}

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

Retrieve a single artifact. Relationships are omitted on the client API.

Parameters

Name In Type Required Description
id path uuid Yes Artifact UUID

cURL Example

cURL
curl https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID> \
  -H "Authorization: Bearer <JWT_TOKEN>"

Responses

200 Artifact found
404 Artifact not found or not visible

GET /api/v1/artifacts/{id}/download Requires Auth

Redirect to a presigned URL for downloading the artifact file.

cURL Example

cURL
curl -L https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID>/download \
  -H "Authorization: Bearer <JWT_TOKEN>"

Responses

302 Redirect to presigned download URL
404 Artifact not found or not visible

The redirect URL expires in 5 minutes. The response carries Cache-Control: private, no-store.

GET /api/v1/artifacts/{id}/thumbnail Requires Auth

Redirect to a 400×400 thumbnail. Returns 404 if the artifact cannot be thumbnailed.

cURL Example

cURL
curl -L https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID>/thumbnail \
  -H "Authorization: Bearer <JWT_TOKEN>"

Responses

302 Redirect to thumbnail URL
404 Artifact not found, not visible, or not thumbnailable

Artifact Object

The Artifact object contains the following attributes:

Attribute Type Description
id uuid Unique identifier
title string File name or title
fileType string File type (JPEG, RAW, MP4, GeoTIFF, etc.)
latitude decimal GPS latitude where the artifact was captured
longitude decimal GPS longitude where the artifact was captured
altitude decimal Absolute altitude in meters
relativeAltitude decimal Altitude above ground level in meters
cameraMake string Camera manufacturer (e.g. DJI)
cameraModel string Camera model identifier
droneModel string Drone model name
imageSource string Image source camera label
imageWidth integer Image width in pixels
imageHeight integer Image height in pixels
photoTakenAt datetime When the photo was captured (from EXIF)
isProcessed boolean Whether the artifact has been processed
imageUrl string URL to the client download endpoint
thumbnailUrl string URL to the client thumbnail endpoint
downloadUrl string Time-limited presigned URL for the file
downloadUrlExpiresAt datetime ISO 8601 expiration time for downloadUrl
siteId uuid Site this artifact belongs to
siteName string Site name
captureName string Mission name for the capture
note string Favorite note; only present on /api/v1/artifacts/favorites
createdAt datetime ISO 8601 creation timestamp
updatedAt datetime ISO 8601 last updated timestamp