Api Endpoint

Tanod skypeek

skypeek (Tanod) satellite image of a place: Sentinel-2 true colour, NDVI or NDWI PNG with capture date and cloud cover (NASA GIBS for wide areas). Use when an agent needs a recent satellite picture of a place or coordinates, or its NDVI or NDWI view.

Open interactive test console

Offering

Provider
tanod.dev
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Weather And Environment
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://tanod.dev/v1/geo/satellite-image
MIME type
application/json
First seen
2026-10-16T01:51:02.144Z
Last seen
Tags
Geo, satellite, image, satellite-image, skypeek, metar

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.01 USDC
Atomic price: 10000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 2
0.01 USDC
Atomic price: 10000 · Network: eip155:137 · Asset: USDC · Scheme: exact
Payment option 3
0.01 USDC
Atomic price: 10000 · Network: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: USDC · Scheme: exact
Payment option 4
0.01 USDC
Atomic price: 10000000000000000 · Network: eip155:56 · Asset: USDC · Scheme: exact
Payment option 5
0.01 USDC
Atomic price: 10000 · Network: eip155:42161 · Asset: USDC · Scheme: exact
Payment option 6
0.01 USDC
Atomic price: 10000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Payment option 7
0.01 USDC
Atomic price: 10000 · Network: eip155:137 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  },
  {
    "scheme": "exact",
    "network": "eip155:137",
    "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "amount": "10000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  },
  {
    "scheme": "exact",
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "amount": "10000",
    "payTo": "RMk9k3VC8dr4hhjgFh88rGhjAbzfBzHxJJ5n2fTcqus"
  },
  {
    "scheme": "exact",
    "network": "eip155:56",
    "asset": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
    "amount": "10000000000000000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  },
  {
    "scheme": "exact",
    "network": "eip155:42161",
    "asset": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
    "amount": "10000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  },
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  },
  {
    "scheme": "exact",
    "network": "eip155:137",
    "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
    "amount": "10000",
    "payTo": "0x593857A4a4F619543ea12394137C3004ce841720"
  }
]

Observed health

Status
Healthy
Latest latency
313 ms
Average latency
1576 ms
HTTP status
204
Last checked
Reachability
100% over 12 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "POST"
      ]
    },
    "bodyType": {
      "type": "string",
      "enum": [
        "json",
        "form-data",
        "text"
      ]
    },
    "body": {
      "additionalProperties": false,
      "properties": {
        "lat": {
          "anyOf": [
            {
              "maximum": 90,
              "minimum": -90,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Latitude in degrees (-90 to 90). Send lat and lon, or place."
        },
        "lon": {
          "anyOf": [
            {
              "maximum": 180,
              "minimum": -180,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Longitude in degrees (-180 to 180). Send lat and lon, or place."
        },
        "place": {
          "anyOf": [
            {
              "maxLength": 120,
              "minLength": 1,
              "type": "string"
            },
            {
              "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."
        },
        "date": {
          "anyOf": [
            {
              "maxLength": 10,
              "minLength": 10,
              "type": "string"
            },
            {
              "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."
        },
        "max_cloud": {
          "default": 30,
          "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).",
          "maximum": 100,
          "minimum": 0,
          "type": "number"
        },
        "view": {
          "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.",
          "enum": [
            "true_color",
            "ndvi",
            "ndwi"
          ],
          "type": "string"
        },
        "size": {
          "default": 512,
          "description": "Width and height of the PNG in pixels (128-1024, default 512).",
          "maximum": 1024,
          "minimum": 128,
          "type": "integer"
        },
        "radius_m": {
          "default": 2560,
          "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.",
          "maximum": 100000,
          "minimum": 250,
          "type": "number"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "type",
    "method",
    "bodyType",
    "body"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "date": {
              "anyOf": [
                {
                  "maxLength": 10,
                  "minLength": 10,
                  "type": "string"
                },
                {
                  "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."
            },
            "lat": {
              "anyOf": [
                {
                  "maximum": 90,
                  "minimum": -90,
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Latitude in degrees (-90 to 90). Send lat and lon, or place."
            },
            "lon": {
              "anyOf": [
                {
                  "maximum": 180,
                  "minimum": -180,
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Longitude in degrees (-180 to 180). Send lat and lon, or place."
            },
            "max_cloud": {
              "default": 30,
              "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).",
              "maximum": 100,
              "minimum": 0,
              "type": "number"
            },
            "place": {
              "anyOf": [
                {
                  "maxLength": 120,
                  "minLength": 1,
                  "type": "string"
                },
                {
                  "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": {
              "default": 2560,
              "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.",
              "maximum": 100000,
              "minimum": 250,
              "type": "number"
            },
            "size": {
              "default": 512,
              "description": "Width and height of the PNG in pixels (128-1024, default 512).",
              "maximum": 1024,
              "minimum": 128,
              "type": "integer"
            },
            "view": {
              "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.",
              "enum": [
                "true_color",
                "ndvi",
                "ndwi"
              ],
              "type": "string"
            }
          },
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "attribution": {
              "type": "string"
            },
            "bbox": {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            "captured_at": {
              "type": [
                "string",
                "null"
              ]
            },
            "cloud_cover_scene_pct": {
              "type": [
                "number",
                "null"
              ]
            },
            "cloud_cover_window_pct": {
              "type": [
                "number",
                "null"
              ]
            },
            "cloud_shadow_window_pct": {
              "type": [
                "number",
                "null"
              ]
            },
            "date": {
              "type": "string"
            },
            "fallback": {
              "type": [
                "string",
                "null"
              ]
            },
            "image": {
              "properties": {
                "bytes": {
                  "type": "integer"
                },
                "content_type": {
                  "type": "string"
                },
                "data_base64": {
                  "type": "string"
                },
                "format": {
                  "type": "string"
                },
                "height_px": {
                  "type": "integer"
                },
                "width_px": {
                  "type": "integer"
                }
              },
              "required": [
                "format",
                "content_type",
                "data_base64",
                "width_px",
                "height_px"
              ],
              "type": "object"
            },
            "lat": {
              "type": "number"
            },
            "legend": {
              "type": "object"
            },
            "lon": {
              "type": "number"
            },
            "note": {
              "type": "string"
            },
            "place": {
              "type": "object"
            },
            "radius_m": {
              "type": "number"
            },
            "resolution_m": {
              "type": "number"
            },
            "scene": {
              "type": "object"
            },
            "source": {
              "properties": {
                "license": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "notice": {
                  "type": "string"
                },
                "terms": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                }
              },
              "required": [
                "name",
                "url"
              ],
              "type": "object"
            },
            "upstream": {
              "type": "object"
            },
            "view": {
              "type": "string"
            }
          },
          "required": [
            "lat",
            "lon",
            "view",
            "date",
            "image",
            "source",
            "attribution"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}