ART PUBLICAapi reference

a public domain art api.

66,000+ public-domain artworks from world-class museums, searchable by keyword, meaning, and colour.

GET /v1/artworks/random?count=8

quickstart

all responses are { data, meta? }data is the result, meta carries pagination where it applies.

# base url
https://art-publica.com/api/art

# one call, no auth
curl \
  "https://art-publica.com/api/art/v1/smart-search?q=stormy+seascape&limit=12"

authentication

anonymous requests get 100/day. for more, create a free key and send it as the X-API-Key header. keys are shown once. to list, revoke, or add keys later, sign in to your account.

rate limits

limits reset daily at midnight utc. every response carries X-RateLimit-* headers; over the limit returns 429 with Retry-After.

100anonymous · per day
1,000free key · per day
10,000pro key · per day

ai agents (mcp)

art publica is also an mcp server — connect it once and your ai assistant can search the collection by meaning, colour, similarity, or a photo, and actually look at the artworks it recommends. eight read-only tools, works anonymously, same rate limits as the api.

# mcp server (streamable http)
https://art-publica.com/mcp

claude.ai — settings → connectors → add custom connector → paste the url. (custom connectors need a pro, max, or team plan.)

claude code

claude mcp add --transport http art-publica https://art-publica.com/mcp

claude api — pass it on the request and the model gets the tools automatically:

"mcp_servers": [{ "type": "url", "url": "https://art-publica.com/mcp", "name": "art-publica" }],
"tools": [{ "type": "mcp_toolset", "mcp_server_name": "art-publica" }]

tools: art_search (by meaning, cross-lingual), art_search_by_color (hex palette), art_find_by_image (reverse visual search from an image url), art_find_similar, art_view_artwork (returns the image so the assistant can see it), art_get_artwork, art_random, and art_list_filters. three built-in prompts — find_art_for, moodboard, artist_tour — appear as quick actions in clients that support them.

anonymous use gets the same 100/day per user as the api; add your api key as an X-API-Key header in the connector config for keyed limits. verify the server is up:

curl https://art-publica.com/mcp/health
# → {"status":"ok","server":"art-publica-mcp","tools":8}
01

browse

8 endpoints
GET/v1/artworks

list artworks

browse the catalogue with sorting and filters.

GET/v1/artworks/:id

get an artwork

full detail for one artwork, including description and tags.

required: id

GET/v1/artworks/random

random artworks

random artworks, optionally filtered.

GET/v1/artworks/:id/similar

similar artworks

more like this one, by image + text embedding.

required: id

GET/v1/museums

list museums

every source institution and its slug.

GET/v1/museums/:slug

get a museum

one museum by slug.

GET/v1/categories

list categories

the normalized category vocabulary and its slugs.

GET/v1/stats

collection stats

totals across the whole catalogue.

02

search

6 endpoints
POST/v1/palette-match

match a palette

find artworks built from a 1–5 colour palette.

POST/v1/search-by-image

search by image

reverse visual search — find artworks that look like your image.

03

discover

8 endpoints
GET/v1/artists

list artists

artists ranked by works, with optional search and filters.

GET/v1/artists/:name

get an artist

full profile — bio, movements, influences, connections.

GET/v1/artists/:name/similar

similar artists

network-based artist recommendations.

GET/v1/movements

list movements

every art movement with its artist count.

GET/v1/movements/:slug

get a movement

movement detail plus its artists, paginated.

GET/v1/timeline

timeline

artworks by year, decade, or range.

GET/v1/origins

list origins

every culture / place of origin in the collection.

GET/v1/origins/:culture

get an origin

one culture / origin by name.

04

account

2 endpoints
POST/v1/keys

create a key

register by email for the free tier. use the form above — keys are shown once.

create a key with the form in authentication above — keys are shown once.

DELETE/v1/keys

revoke a key

permanently revoke a key. pass it as X-API-Key — this can't be undone.