EHTEKUNST.EE

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/artistsquery, school, gradYearFrom, gradYearTo, page, perPage
GET/api/v1/artists/{slug}profile + graph + verified mentions
GET/api/v1/worksquery, artist, material, yearFrom, yearTo, forSale, page
GET/api/v1/works/{slug}work + images + relations + exhibitions
GET/api/v1/exhibitionsquery, 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/statspublished counts, year coverage, last-updated
GET/api/v1/openapi.jsonOpenAPI 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