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 "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
{
"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
}
}
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 "https://app.raad.com/api/v1/artifacts/favorites?per_page=25" \
-H "Authorization: Bearer <JWT_TOKEN>"
Responses
note field if one was saved
{
"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 https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID> \
-H "Authorization: Bearer <JWT_TOKEN>"
Responses
GET
/api/v1/artifacts/{id}/download
Requires Auth
Redirect to a presigned URL for downloading the artifact file.
cURL Example
curl -L https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID>/download \
-H "Authorization: Bearer <JWT_TOKEN>"
Responses
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 -L https://app.raad.com/api/v1/artifacts/<ARTIFACT_ID>/thumbnail \
-H "Authorization: Bearer <JWT_TOKEN>"
Responses
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 |