Detection APIs

Ship detection

Detect ships from Sentinel-1 SAR imagery.

POST /api/v1/detect/ship

Detect vessels at sea from Sentinel-1 SAR scenes. Returns a GeoJSON FeatureCollection of detected ships with their bounding geometry.

Supported satelliteSentinel-1
Typical runtime~30 minutes
Input patternsscene_id, or polygon + date

Request

Pattern A — Scene ID (full scene)

Processes an entire Sentinel-1 scene. Use this when you know the scene ID.

Only GRD scenes are supported

SateAIs requires Sentinel-1 GRD (Ground Range Detected) products. Find scene IDs on ASF Search with File Type = GRD. SLC and other product types are rejected with 400 INVALID_SCENE.

curl -X POST https://api.spcsft.com/api/v1/detect/ship \
  -H "Authorization: Bearer sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "satellite_id": "sentinel-1",
    "scene_id": "S1A_IW_GRDH_1SDV_20260310T022000_20260310T022025_054321_068ABC_4321"
  }'

Pattern B — Polygon + date (auto scene selection)

SateAIs picks the Sentinel-1 GRD scene closest to date within ±14 days, then clips to the polygon. Reduces credit usage for localized analysis.

curl -X POST https://api.spcsft.com/api/v1/detect/ship \
  -H "Authorization: Bearer sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "satellite_id": "sentinel-1",
    "polygon": "POLYGON((55.541382 26.743158, 56.186829 26.743158, 56.186829 27.054234, 55.541382 27.054234, 55.541382 26.743158))",
    "date": "2026-03-10",
    "date_direction": "nearest",
    "orbit_direction": "ascending"
  }'

Parameters

ParameterTypeRequiredDescription
satellite_idstringYesMust be "sentinel-1".
scene_idstringConditionalRequired when polygon is not provided.
polygonstring (WKT)ConditionalRequired when scene_id is not provided. EPSG:4326.
datestring (YYYY-MM-DD)ConditionalRequired with polygon. Reference date for scene selection.
date_direction"before" | "after" | "nearest"NoDefaults to "nearest".
orbit_direction"ascending" | "descending"NoFilter scenes by orbit direction.

Response

{
  "job_id": "351e635d-7c25-4ae8-a2a5-60c01a6f434c",
  "status": "pending",
  "created_at": "2026-03-10T02:20:00Z",
  "completed_at": null,
  "result_path": null,
  "error": null
}

Poll GET /api/v1/jobs/{job_id} until status becomes completed, then download the GeoJSON result. See Get result.

Next steps

On this page