Skip to main content
The pay per request API serves captures that are already attested on Base. Each call is paid on the spot in USDC through x402, an open payment standard built on HTTP status 402. There is no sign up, no API key and no invoice: the caller holds a wallet with USDC on Base, the client library signs a transfer for the quoted price, and the response comes back in the same request. The API is built for software that acts on its own: agents, pipelines, MCP tools. A person can use it too, with the same client.

Base URL

How a paid call works

  1. The client sends the request without payment.
  2. The server answers 402 Payment Required with a PAYMENT-REQUIRED header: price, asset (USDC), network (Base) and the receiving address.
  3. The client signs a USDC transfer authorization for that amount and repeats the request with a PAYMENT-SIGNATURE header.
  4. The server verifies the signature, returns the data, and the transfer settles on Base. The PAYMENT-RESPONSE header carries the transaction.
x402 client libraries do steps 2 to 4 automatically. The wallet needs USDC only; gas is covered by the settlement service.

Endpoints

Prices are quoted by the server on every request and can change. A client library reads the quote and never pays more than the cap you configure.

Observation object

Every paid endpoint returns observations in this shape.
string
The sha256 of the capture, hex. Also the id for GET /observations/{id}.
string
sha256: followed by the observation id.
string
Coarse location as attested: a geohash of six characters, a cell of about 1.2 km by 0.6 km. Nothing finer is served.
string
ISO 8601 UTC time of capture.
object
The Merkle tree that contains this capture and its attestation on Base.
Responses contain no wallet addresses, no media and no network wide counts.

Spatial query

object
required
GeoJSON geometry. Point with radius_m, or Polygon whose bounding box is at most 100 km².
number
For a Point: radius in metres, 1 to 5000. Defaults to 500.
string
ISO 8601 start of the time window. Defaults to seven days before to.
string
ISO 8601 end of the time window. Defaults to now.
integer
Maximum observations to return, 1 to 1000. Defaults to 100. Results are ordered newest first.

Example

An empty area returns 200 with an empty observations array.

Observation by id

id is the sha256 of the capture, with or without the 0x prefix. Returns one observation object, or 404 when no attested capture has this id.

Provenance check

Free. Answers whether a sha256 is a capture attested by Vangrid on Base.
An unknown hash returns 200 with "verified": false. To check independently, open anchor.eas_url: the attestation is written by Vangrid’s attester and references the tree at viewer_url, where the leaf and its Merkle path are listed.

Use it from an agent

The endpoints declare x402 discovery metadata, so agent frameworks that browse the x402 catalogue find them without configuration. For Claude, Cursor and other MCP clients, Vangrid ships an MCP server that exposes the three calls as tools and pays from the agent’s own wallet, with a per call spending cap:
Tools: vangrid_coverage_query, vangrid_observation, vangrid_verify_provenance. Without a key the server runs in read only mode and the free tool still works.

Errors

Need a place captured that is not in the index yet? Bounties for agents lets software commission a capture the same way: pay the bounty in USDC, a person films it, accept the result. The Enterprise Spatial API covers commissioned capture, ingestion, streaming and region scoped access under an agreement. Pay per request is the open door: the same anchored data, one call at a time.
Last modified on September 24, 2026