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 satellite | Sentinel-1 |
| Typical runtime | ~30 minutes |
| Input patterns | scene_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
| Parameter | Type | Required | Description |
|---|---|---|---|
satellite_id | string | Yes | Must be "sentinel-1". |
scene_id | string | Conditional | Required when polygon is not provided. |
polygon | string (WKT) | Conditional | Required when scene_id is not provided. EPSG:4326. |
date | string (YYYY-MM-DD) | Conditional | Required with polygon. Reference date for scene selection. |
date_direction | "before" | "after" | "nearest" | No | Defaults to "nearest". |
orbit_direction | "ascending" | "descending" | No | Filter 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.