How it works
Understand the asynchronous job lifecycle used by every SateAIs detection API.
Satellite imagery analysis takes minutes to tens of minutes depending on the model and area. Every SateAIs detection endpoint is asynchronous: you submit a job, poll for its status, then fetch the result.
The three-step lifecycle
1. POST /api/v1/detect/{type} → receive job_id (status = "pending")
2. GET /api/v1/jobs/{job_id} → poll until status = "completed"
3. GET /api/v1/jobs/{job_id}/result.geojson → fetch the GeoJSON result (302 redirect to S3)Job statuses
| Status | Description |
|---|---|
pending | Job received, queued for processing. |
processing | Currently running inference. |
completed | Finished successfully. Result is available for 30 days. |
failed | Failed. See the error field for the reason. No credits are charged. |
Recommended polling interval
Poll every ~1 minute. Polling faster increases load without accelerating completion and may trigger rate limits.
Runtime depends mostly on analyzed area. The ranges below reflect small-to-large AOIs observed in production. Submit a small test job first to gauge the upper bound for your workload.
| Detection | Typical runtime | Suggested first poll |
|---|---|---|
| ship | ~15 min | 5 min after submission |
| oilslick | ~50 min | 10 min after submission |
| newbuilding | 1–40 min (area-dependent) | 5 min after submission |
| timeseries | 1–15 min (area-dependent) | 2 min after submission |
ship / oilslick process a single Sentinel-1 scene each, so runtime is relatively stable. newbuilding / timeseries scale with the polygon area — a 1 km² AOI finishes in about a minute, while approaching the per-endpoint size cap can take tens of minutes.
Result retention
Results are stored for 30 days after completion. After that, GET /api/v1/jobs/{job_id}/result.geojson returns 410 Gone. The job metadata itself (status, timestamps) is retained indefinitely.
Failure handling
If a job fails:
statustransitions tofailed.- The
errorfield contains a machine-readablecodeand human-readablemessage. - No credits are charged for failed jobs.
- Clients should surface the error code to users and optionally retry.
See Errors for the full list of error codes.