Voda Astro Data API

HTTP 402x402 · USDC on BaseMPP · Stripe / Tempono API keysno signup

Machine-payable astrology and geographic data. Ephemeris-grade full charts, transit and mundane aspect time series, and a global location dataset — priced per request and payable by humans or agents in one round trip. The live 402 challenge is always authoritative.

Try it in 10 seconds

curl -i https://astro.dutchdata.io/api/locations/count

You'll get a 402 Payment Required carrying both an x402 v2 challenge (Payment-Required header + JSON body) and MPP offers (WWW-Authenticate: Payment). Pay it and repeat the call — or let a client do the whole loop:

import { x402Client } from "@x402/core/client";
import { toClientEvmSigner } from "@x402/evm";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
import { createPublicClient, http } from "viem";
import { base } from "viem/chains";

const account = privateKeyToAccount(PRIVATE_KEY);
const signer = toClientEvmSigner(account, createPublicClient({ chain: base, transport: http() }));
const client = new x402Client();
registerExactEvmScheme(client, { signer });

const fetchWithPay = wrapFetchWithPayment(fetch, client);
const res = await fetchWithPay("https://astro.dutchdata.io/api/full_chart/dt/1767225600000");
console.log(await res.json()); // planets, signs, houses, retrogrades

Payment settles as USDC on Base mainnet (eip155:8453) — the payer needs USDC only, no ETH for gas. MPP agents can pay the same routes with Stripe or Tempo credentials.

Endpoints & pricing

RoutePriceWhat you get
GET /api/locations/count$0.01Total number of location records available
GET /api/locations/countries$0.50List all countries with location coverage
GET /api/locations/countries/{country_code}/regions$0.50List a country's regions/states
GET /api/locations/{country_code}/{region_code}/search$0.50Fuzzy-search cities within a country region
GET /api/locations/{country_code}/{region_code}/{city}$0.50Rich location record with coordinates and timezone
GET /api/full_chart/dt/{unix_ms_utc}$0.50Full astrological chart for a UTC instant (planets, houses, aspects)
POST /api/mundane_chart$0.50Mundane (transit-to-transit) aspect time series over a date range
POST /api/transit_chart/inline$0.50Transit aspect time series with birth data supplied inline (no account)

Built for agents

/openapi.json

OpenAPI 3.1 with schemas, examples, and x-payment-info on every priced route.

/.well-known/mpp.json

MPP service manifest — offers, schemas, and runtime challenge details.

/.well-known/agent-card.json

Agent card advertising HTTP, MPP, and x402 capabilities.

/llms.txt

Concise route list for LLM context windows. Full detail at /llms-full.txt.

Why pay per request?

No accounts to provision, no keys to rotate, no subscriptions to babysit. Each request is independently paid and independently replay-protected: an identical replay of a settled payment returns 402 again without double-charging. Receipts come back in the response headers (Payment-Receipt / Payment-Response).