# Tanod skypeek – Satellite Image API

> Tanod skypeek – Satellite Image API is a paid API for AI agents from tanod.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-12).

Returns a recent Sentinel-2 or NASA GIBS satellite PNG (true colour, NDVI, or NDWI) for a given location with capture date and cloud cover metadata.

## Facts

- Endpoint: POST https://tanod.dev/v1/geo/satellite-image?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-skypeek-satellite-image-api-c84754ac
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EfywYRKFILBtE-XRSQTcK

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-skypeek-satellite-image-api-c84754ac -d '<json body>'
```

Example prompt: Can you grab a recent true-colour satellite image of Manila, Philippines — use a 2560 m radius, 512 px, and make sure cloud cover is under 20%?

## When to prefer this

Use this endpoint when an agent needs a recent, georeferenced satellite image of a specific place rather than a live street-level view. It is the right choice for vegetation (NDVI) or water body (NDWI) analysis, land-use monitoring, environmental reporting, or any workflow that requires an orthorectified, atmospherically corrected overhead view with a known capture date. Prefer it over general web-map tiles when the capture date and cloud metadata are required, or when spectral index views (NDVI/NDWI) are needed.

## Known failure modes

- 404 too_cloudy – no scene within the search window meets the max_cloud threshold (not charged)
- 404 no_scene – no Sentinel-2 coverage exists for the location (very remote or ocean)
- 400 validation error – lat/lon out of range, date before 2015-07, conflicting/missing place vs lat+lon
- 402 Payment Required – x402 payment not attached or insufficient
- 413 size out of range – px value outside 128–1024

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

A JSON object containing the base64-encoded PNG satellite image (true colour, NDVI, or NDWI), the actual capture date and time, cloud cover percentages for both the full scene and the requested window, bounding box coordinates, scene ID and platform, image dimensions, resolution in metres per pixel, a plain-language note about the imagery, attribution text, and data source / licence information. For large radii (>10 km) the image falls back to NASA GIBS at ~250 m resolution.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "lat": {
   "anyOf": [
    {
     "type": "number",
     "maximum": 90,
     "minimum": -90
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Latitude in degrees (-90 to 90). Send lat and lon, or place."
  },
  "lon": {
   "anyOf": [
    {
     "type": "number",
     "maximum": 180,
     "minimum": -180
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Longitude in degrees (-180 to 180). Send lat and lon, or place."
  },
  "date": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 10,
     "minLength": 10
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Target day YYYY-MM-DD (2015-07 onward, not in the future): the nearest scene within 15 days that is clear enough. Default: the newest clear scene of the last 60 days."
  },
  "size": {
   "type": "integer",
   "default": 512,
   "maximum": 1024,
   "minimum": 128,
   "description": "Width and height of the PNG in pixels (128-1024, default 512)."
  },
  "view": {
   "enum": [
    "true_color",
    "ndvi",
    "ndwi"
   ],
   "type": "string",
   "default": "true_color",
   "description": "true_color (a natural-colour picture), ndvi (vegetation) or ndwi (open water), both computed from the same Sentinel-2 scene with clouds painted grey."
  },
  "place": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 120,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "City name, optionally with a country code (such as Manila, PH); cities of 15,000+ people. Send place, or lat and lon."
  },
  "radius_m": {
   "type": "number",
   "default": 2560,
   "maximum": 100000,
   "minimum": 250,
   "description": "Half the side of the pictured square, in metres (250-100000, default 2560: about 10 m per pixel at 512 px). Over 10000 is NASA 250 m true colour only."
  },
  "max_cloud": {
   "type": "number",
   "default": 30,
   "maximum": 100,
   "minimum": 0,
   "description": "Most cloud accepted, as a percent of the pictured area (0-100, default 30). No scene that clear is a 404 too_cloudy (not charged)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "lat": 14.6042,
  "lon": 120.9822,
  "bbox": [
   120.95841,
   14.58118,
   121.00599,
   14.62722
  ],
  "date": "2026-10-03",
  "note": "A recent satellite picture, not live: the capture date is in `date`. Sentinel-2 is 10 m per pixel; NASA GIBS about 250 m. Clouds hide the ground; index views paint clouds grey. Orthorectified and atmospherically corrected, north up.",
  "view": "true_color",
  "image": {
   "bytes": 459954,
   "format": "png",
   "width_px": 512,
   "height_px": 512,
   "data_base64": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAPUlEQVR42mN89uxZWEcCAwZgCutIWFWxAIsEAwMDVjkmCIUpxwRnockxIatClmNCMxoux2iT54bppFUVCwBG0RixsPg2TgAAAABJRU5ErkJggg==",
   "content_type": "image/png"
  },
  "place": {
   "lat": 14.6042,
   "lon": 120.9822,
   "name": "Manila",
   "population": 1600000,
   "admin1_code": "NCR",
   "country_code": "PH"
  },
  "scene": {
   "id": "S2C_51PTS_20261003_0_L2A",
   "platform": "sentinel-2c"
  },
  "source": {
   "url": "https://registry.opendata.aws/sentinel-2-l2a-cogs/",
   "name": "Copernicus Sentinel-2 L2A via Element84 Earth Search and the AWS Open Data bucket sentinel-cogs",
   "terms": "https://sentinels.copernicus.eu/documents/247904/690755/Sentinel_Data_Legal_Notice",
   "notice": "Contains modified Copernicus Sentinel data 2026, processed by Tanod. Imagery is not real time and can be cloudy; not for navigation, safety or legal use.",
   "license": "Copernicus Sentinel data: free, open, commercial use allowed with attribution"
  },
  "fallback": null,
  "radius_m": 2560,
  "upstream": {
   "requests": 10,
   "bytes_read": 3140166
  },
  "attribution": "Contains modified Copernicus Sentinel data 2026",
  "captured_at": "2026-10-03T02:33:38Z",
  "resolution_m": 10,
  "cloud_cover_scene_pct": 25.946891,
  "cloud_cover_window_pct": 12.3,
  "cloud_shadow_window_pct": 0.2
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-skypeek-satellite-image-api-c84754ac/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
