Quickstart

Get an API key by emailing art@jamestannahill.com. Free tier: 50 critiques + 100 weather + 100 pricing per month.

Art Critic

Score any image on composition, color, complexity, and emotional impact.

cURL

curl -X POST https://api.art.jamestannahill.com/v1/critique \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"image_url": "https://example.com/artwork.png"}'

Python

# pip install requests
import requests

resp = requests.post(
    "https://api.art.jamestannahill.com/v1/critique",
    headers={"x-api-key": "YOUR_KEY"},
    json={"image_url": "https://example.com/artwork.png"},
)
data = resp.json()
print(f"Overall: {data['overall']}/10 — {data['critique']}")

Node.js

const resp = await fetch("https://api.art.jamestannahill.com/v1/critique", {
  method: "POST",
  headers: { "x-api-key": "YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ image_url: "https://example.com/artwork.png" }),
});
const data = await resp.json();
console.log(`Overall: ${data.overall}/10 — ${data.critique}`);

Response

{
  "composition": 8,
  "color": 7,
  "complexity": 9,
  "impact": 8,
  "overall": 8,
  "critique": "A commanding abstract piece with sophisticated layering.",
  "request_id": "req_abc123"
}

Weather Drama

Today's most atmospherically dramatic locations worldwide.

cURL

curl https://api.art.jamestannahill.com/v1/weather/rankings?limit=5 \
  -H "x-api-key: YOUR_KEY"

Response

{
  "date": "2026-03-19",
  "rankings": [
    {
      "rank": 1,
      "lat": 60.0, "lng": -70.0,
      "score": 62.7,
      "pressure_hpa": 972.6,
      "wind_speed_kmh": 82.1,
      "temp_c": -16.0,
      "humidity_pct": 94.0,
      "precipitation_mm": 1.6
    }
  ],
  "model": "GFS (NOAA)",
  "scan_points": 54
}

Also available:

# Tomorrow's forecast
GET /v1/weather/forecast?limit=10

# Score a specific location
GET /v1/weather/score?lat=40.7&lng=-74.0

Dynamic Pricing

Compute a scarcity-based price multiplier from quality, rarity, and demand signals.

cURL

curl -X POST https://api.art.jamestannahill.com/v1/price \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "quality_score": 8,
    "rarity_score": 72,
    "total_supply": 25,
    "total_sold": 8
  }'

Response

{
  "multiplier": 1.46,
  "components": {
    "quality_bonus": 0.30,
    "rarity_bonus": 0.13,
    "scarcity_bonus": 0.03
  },
  "suggested_action": "Price above base — high quality + moderate rarity"
}

Questions? Need higher limits? art@jamestannahill.com

Daily weather art in your inbox

New generative artworks from real atmospheric data, delivered each morning.