Public API (v1)
The entire published archive is available through a versioned, read-only JSON API. Every response carries source and licensing metadata. No authentication — requests are anonymous.
https://ehtekunst.ee/api/v1
Base URL
All endpoints live under the base path below. Lists are paginated (perPage up to 100).
Response envelope
Lists return { data: [...], meta: { page, perPage, total, source, license, attributionUrl } }. Single resources return { data: {...}, meta }. Errors: { error: { code, message } }.
Access & limits
Anonymous, read-only. CORS is open to all origins. Requests are limited to 120 per minute per IP (429 + Retry-After). A renamed slug responds 301 to the new URL.
Licence
Descriptive metadata is CC BY 4.0, attribute “Ehtekunst.ee”. Images are not generally licensed. Facts cite their original sources (MuIS, DEA, monographs).
Endpoints
| GET | /api/v1/artists | query, school, gradYearFrom, gradYearTo, page, perPage |
| GET | /api/v1/artists/{slug} | profile + graph + verified mentions |
| GET | /api/v1/works | query, artist, material, yearFrom, yearTo, forSale, page |
| GET | /api/v1/works/{slug} | work + images + relations + exhibitions |
| GET | /api/v1/exhibitions | query, year, organization, page, perPage |
| GET | /api/v1/exhibitions/{slug} | participants, works, venue, press |
| GET | /api/v1/organizations/{slug} | organization + relations |
| GET | /api/v1/search?q= | grouped results, ≤10 per type (min 2 chars) |
| GET | /api/v1/timeline?from=&to= | merged typed events by year |
| GET | /api/v1/graph/{type}/{slug} | hydrated edges with source cards |
| GET | /api/v1/sources/{id} | a cited source |
| GET | /api/v1/stats | published counts, year coverage, last-updated |
| GET | /api/v1/openapi.json | OpenAPI 3.1 document |
Examples
curl https://ehtekunst.ee/api/v1/stats curl "https://ehtekunst.ee/api/v1/artists?query=kask&perPage=5" curl "https://ehtekunst.ee/api/v1/timeline?from=1950&to=2025"
OpenAPI
Machine-readable OpenAPI 3.1 description: /api/v1/openapi.json
MCP server
Ehtekunst.ee also offers an MCP server (Model Context Protocol) — add it as a connector in Claude or any MCP client and interrogate the archive conversationally. The server is a thin layer over the same public API.
Connect: Claude → Settings → Connectors → Add custom connector → https://ehtekunst.ee/mcp