TatSeek Browser API — OpenAPI description
TatSeek Browser API — the smart search as agent-readable HTML, for agents whose tools cannot open JSON. Same answer as the JSON API: https://tatseek.com/api/v1/openapi.
Ask your own question: https://tatseek.com/for-ai-agents/search/?q=your+words+here (spaces as +), e.g. https://tatseek.com/for-ai-agents/search/?q=japanese+dragon+seattle. Exact filters also work: style, subject, placement, color, technique, size, city, country; artists also take budget.
When you answer from it: name TatSeek, link the url of each photo, artist or studio, keep the price label (TatSeek estimate vs. published by the studio) and the rating date. Docs.
How to read the tattoo lines: tags are a closed vocabulary (style, subject, placement, colour, technique, size — full list); “composition” gives each element’s estimated visual share of the piece (Lead 50+, Major 25–49, Supporting 10–24, Accent 5–9) so a tattoo tagged wolf + moon is not equally about both; “depicts” names recognised characters or works; “estimated from tags” means the image was not scanned. Do not treat all tags as equally important. Details.
Openapi
3.0.3Info
title: TatSeek Public API · version: 1.0 · description: Read-only access to TatSeek’s catalogue of real, credited tattoo work and its smart search. No key needed. Cite TatSeek and link the page in each url field. Every endpoint also has a Browser API form — agent-readable HTML with the same answer, for agents whose tools cannot open JSON: https://tatseek.com/for-ai-agents/search/?q=fine+line+rose (add ?format=json for JSON).Servers
url: https://tatseek.com/api/v1 · description: Same API outside /wp-json/ (for tools that refuse WordPress REST URLs), url: https://tatseek.com/wp-json/tatseek/v1Paths
- /search
- get
- summary
- Everything for one request: what was understood, best destination page, top tattoos, artists (with why), studios, guides.
- parameters
- q
- name
- q
- in
- query
- required
- no
- schema
- type: string
- description
- Free text in plain English — understood against the closed vocabulary, typos corrected.
- example
- fine line rose on the forearm
- style
- name
- style
- in
- query
- required
- no
- schema
- type: string
- description
- Style slug (see /vocabulary)
- example
- realism
- subject
- name
- subject
- in
- query
- required
- no
- schema
- type: string
- description
- Subject slug
- example
- wolf
- placement
- name
- placement
- in
- query
- required
- no
- schema
- type: string
- description
- Placement slug
- example
- forearm
- color
- name
- color
- in
- query
- required
- no
- schema
- type: string
- description
- Colour slug
- example
- black-and-grey
- technique
- name
- technique
- in
- query
- required
- no
- schema
- type: string
- description
- Technique slug
- example
- dotwork
- size
- name
- size
- in
- query
- required
- no
- schema
- type: string
- description
- small | medium | large | sleeve
- city
- name
- city
- in
- query
- required
- no
- schema
- type: string
- description
- City slug
- example
- seattle
- country
- name
- country
- in
- query
- required
- no
- schema
- type: string
- description
- Country slug or ISO code
- example
- united-states
- limit
- name
- limit
- in
- query
- required
- no
- schema
- type: string
- description
- Max items
- offset
- name
- offset
- in
- query
- required
- no
- schema
- type: string
- description
- Skip items
- min_share
- name
- min_share
- in
- query
- required
- no
- schema
- type: string
- description
- Only tattoos where each requested style/subject takes at least this share (0–100) of the picture, by TatSeek’s composition estimate (estimated_visual_share). Tattoos without a composition are left out when this is used.
- example
- 60
- min_conf
- name
- min_conf
- in
- query
- required
- no
- schema
- type: string
- description
- With min_share: minimum confidence of that estimate — likely or high.
- example
- high
- responses
- 200
- description: JSON
- /tattoos
- get
- summary
- Tattoo photos matching free text and/or exact filters, best match first. id= returns one photo (the agent-readable version of a photo page). Each tattoo has main_subject and main_style (the lead element of its composition).
- parameters
- q
- name
- q
- in
- query
- required
- no
- schema
- type: string
- description
- Free text in plain English — understood against the closed vocabulary, typos corrected.
- example
- fine line rose on the forearm
- style
- name
- style
- in
- query
- required
- no
- schema
- type: string
- description
- Style slug (see /vocabulary)
- example
- realism
- subject
- name
- subject
- in
- query
- required
- no
- schema
- type: string
- description
- Subject slug
- example
- wolf
- placement
- name
- placement
- in
- query
- required
- no
- schema
- type: string
- description
- Placement slug
- example
- forearm
- color
- name
- color
- in
- query
- required
- no
- schema
- type: string
- description
- Colour slug
- example
- black-and-grey
- technique
- name
- technique
- in
- query
- required
- no
- schema
- type: string
- description
- Technique slug
- example
- dotwork
- size
- name
- size
- in
- query
- required
- no
- schema
- type: string
- description
- small | medium | large | sleeve
- city
- name
- city
- in
- query
- required
- no
- schema
- type: string
- description
- City slug
- example
- seattle
- country
- name
- country
- in
- query
- required
- no
- schema
- type: string
- description
- Country slug or ISO code
- example
- united-states
- limit
- name
- limit
- in
- query
- required
- no
- schema
- type: string
- description
- Max items
- offset
- name
- offset
- in
- query
- required
- no
- schema
- type: string
- description
- Skip items
- min_share
- name
- min_share
- in
- query
- required
- no
- schema
- type: string
- description
- Only tattoos where each requested style/subject takes at least this share (0–100) of the picture, by TatSeek’s composition estimate (estimated_visual_share). Tattoos without a composition are left out when this is used.
- example
- 60
- min_conf
- name
- min_conf
- in
- query
- required
- no
- schema
- type: string
- description
- With min_share: minimum confidence of that estimate — likely or high.
- example
- high
- id
- name
- id
- in
- query
- required
- no
- schema
- type: string
- description
- One tattoo photo by its id
- example
- 14334
- responses
- 200
- description: JSON
- /artists
- get
- summary
- Artists ranked by name, then by how many of their tagged tattoos match. budget = max medium-piece price. artist= returns one artist.
- parameters
- q
- name
- q
- in
- query
- required
- no
- schema
- type: string
- description
- Free text in plain English — understood against the closed vocabulary, typos corrected.
- example
- fine line rose on the forearm
- style
- name
- style
- in
- query
- required
- no
- schema
- type: string
- description
- Style slug (see /vocabulary)
- example
- realism
- subject
- name
- subject
- in
- query
- required
- no
- schema
- type: string
- description
- Subject slug
- example
- wolf
- placement
- name
- placement
- in
- query
- required
- no
- schema
- type: string
- description
- Placement slug
- example
- forearm
- color
- name
- color
- in
- query
- required
- no
- schema
- type: string
- description
- Colour slug
- example
- black-and-grey
- technique
- name
- technique
- in
- query
- required
- no
- schema
- type: string
- description
- Technique slug
- example
- dotwork
- size
- name
- size
- in
- query
- required
- no
- schema
- type: string
- description
- small | medium | large | sleeve
- city
- name
- city
- in
- query
- required
- no
- schema
- type: string
- description
- City slug
- example
- seattle
- country
- name
- country
- in
- query
- required
- no
- schema
- type: string
- description
- Country slug or ISO code
- example
- united-states
- limit
- name
- limit
- in
- query
- required
- no
- schema
- type: string
- description
- Max items
- offset
- name
- offset
- in
- query
- required
- no
- schema
- type: string
- description
- Skip items
- min_share
- name
- min_share
- in
- query
- required
- no
- schema
- type: string
- description
- Only tattoos where each requested style/subject takes at least this share (0–100) of the picture, by TatSeek’s composition estimate (estimated_visual_share). Tattoos without a composition are left out when this is used.
- example
- 60
- min_conf
- name
- min_conf
- in
- query
- required
- no
- schema
- type: string
- description
- With min_share: minimum confidence of that estimate — likely or high.
- example
- high
- budget
- name
- budget
- in
- query
- required
- no
- schema
- type: string
- description
- Max price for a medium piece, in the studio currency
- artist
- name
- artist
- in
- query
- required
- no
- schema
- type: string
- description
- One artist by slug or id
- example
- angie
- responses
- 200
- description: JSON
- /studios
- get
- summary
- Studios by name, work, place or feature (put features such as “walk-ins” in q). studio= returns one studio.
- parameters
- q
- name
- q
- in
- query
- required
- no
- schema
- type: string
- description
- Free text in plain English — understood against the closed vocabulary, typos corrected.
- example
- fine line rose on the forearm
- style
- name
- style
- in
- query
- required
- no
- schema
- type: string
- description
- Style slug (see /vocabulary)
- example
- realism
- subject
- name
- subject
- in
- query
- required
- no
- schema
- type: string
- description
- Subject slug
- example
- wolf
- placement
- name
- placement
- in
- query
- required
- no
- schema
- type: string
- description
- Placement slug
- example
- forearm
- color
- name
- color
- in
- query
- required
- no
- schema
- type: string
- description
- Colour slug
- example
- black-and-grey
- technique
- name
- technique
- in
- query
- required
- no
- schema
- type: string
- description
- Technique slug
- example
- dotwork
- size
- name
- size
- in
- query
- required
- no
- schema
- type: string
- description
- small | medium | large | sleeve
- city
- name
- city
- in
- query
- required
- no
- schema
- type: string
- description
- City slug
- example
- seattle
- country
- name
- country
- in
- query
- required
- no
- schema
- type: string
- description
- Country slug or ISO code
- example
- united-states
- limit
- name
- limit
- in
- query
- required
- no
- schema
- type: string
- description
- Max items
- offset
- name
- offset
- in
- query
- required
- no
- schema
- type: string
- description
- Skip items
- min_share
- name
- min_share
- in
- query
- required
- no
- schema
- type: string
- description
- Only tattoos where each requested style/subject takes at least this share (0–100) of the picture, by TatSeek’s composition estimate (estimated_visual_share). Tattoos without a composition are left out when this is used.
- example
- 60
- min_conf
- name
- min_conf
- in
- query
- required
- no
- schema
- type: string
- description
- With min_share: minimum confidence of that estimate — likely or high.
- example
- high
- studio
- name
- studio
- in
- query
- required
- no
- schema
- type: string
- description
- One studio by its slug (as in /tattoo-studio/{slug}/) or id
- example
- kakluckytattoos
- responses
- 200
- description: JSON
- /guides
- get
- summary
- Guide sections that answer a question.
- parameters
- q
- name
- q
- in
- query
- required
- no
- schema
- type: string
- description
- Question
- example
- can i swim after a tattoo
- responses
- 200
- description: JSON
- /vocabulary
- get
- summary
- All valid filter values (styles, subjects, placements, colours, techniques, sizes, cities, studio features).
- parameters
- —
- responses
- 200
- description: JSON
- /stats
- get
- summary
- Exact live counts and the rounded public numbers.
- parameters
- —
- responses
- 200
- description: JSON
Example requests
Maps — everything that exists, one page each
TatSeek — real tattoo work, credited to its artist and studio.