{
    "openapi": "3.0.3",
    "info": {
        "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/v1"
        }
    ],
    "paths": {
        "/search": {
            "get": {
                "summary": "Everything for one request: what was understood, best destination page, top tattoos, artists (with why), studios, guides.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free text in plain English — understood against the closed vocabulary, typos corrected.",
                        "example": "fine line rose on the forearm"
                    },
                    {
                        "name": "style",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Style slug (see /vocabulary)",
                        "example": "realism"
                    },
                    {
                        "name": "subject",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Subject slug",
                        "example": "wolf"
                    },
                    {
                        "name": "placement",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Placement slug",
                        "example": "forearm"
                    },
                    {
                        "name": "color",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Colour slug",
                        "example": "black-and-grey"
                    },
                    {
                        "name": "technique",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Technique slug",
                        "example": "dotwork"
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "small | medium | large | sleeve"
                    },
                    {
                        "name": "city",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "City slug",
                        "example": "seattle"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Country slug or ISO code",
                        "example": "united-states"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Max items"
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Skip items"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON"
                    }
                }
            }
        },
        "/tattoos": {
            "get": {
                "summary": "Tattoo photos matching free text and/or exact filters, best match first.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free text in plain English — understood against the closed vocabulary, typos corrected.",
                        "example": "fine line rose on the forearm"
                    },
                    {
                        "name": "style",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Style slug (see /vocabulary)",
                        "example": "realism"
                    },
                    {
                        "name": "subject",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Subject slug",
                        "example": "wolf"
                    },
                    {
                        "name": "placement",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Placement slug",
                        "example": "forearm"
                    },
                    {
                        "name": "color",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Colour slug",
                        "example": "black-and-grey"
                    },
                    {
                        "name": "technique",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Technique slug",
                        "example": "dotwork"
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "small | medium | large | sleeve"
                    },
                    {
                        "name": "city",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "City slug",
                        "example": "seattle"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Country slug or ISO code",
                        "example": "united-states"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Max items"
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Skip items"
                    }
                ],
                "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.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free text in plain English — understood against the closed vocabulary, typos corrected.",
                        "example": "fine line rose on the forearm"
                    },
                    {
                        "name": "style",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Style slug (see /vocabulary)",
                        "example": "realism"
                    },
                    {
                        "name": "subject",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Subject slug",
                        "example": "wolf"
                    },
                    {
                        "name": "placement",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Placement slug",
                        "example": "forearm"
                    },
                    {
                        "name": "color",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Colour slug",
                        "example": "black-and-grey"
                    },
                    {
                        "name": "technique",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Technique slug",
                        "example": "dotwork"
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "small | medium | large | sleeve"
                    },
                    {
                        "name": "city",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "City slug",
                        "example": "seattle"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Country slug or ISO code",
                        "example": "united-states"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Max items"
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Skip items"
                    },
                    {
                        "name": "budget",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Max price for a medium piece, in the studio currency"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON"
                    }
                }
            }
        },
        "/studios": {
            "get": {
                "summary": "Studios by name, work, place or feature (put features such as “walk-ins” in q).",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Free text in plain English — understood against the closed vocabulary, typos corrected.",
                        "example": "fine line rose on the forearm"
                    },
                    {
                        "name": "style",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Style slug (see /vocabulary)",
                        "example": "realism"
                    },
                    {
                        "name": "subject",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Subject slug",
                        "example": "wolf"
                    },
                    {
                        "name": "placement",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Placement slug",
                        "example": "forearm"
                    },
                    {
                        "name": "color",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Colour slug",
                        "example": "black-and-grey"
                    },
                    {
                        "name": "technique",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Technique slug",
                        "example": "dotwork"
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "small | medium | large | sleeve"
                    },
                    {
                        "name": "city",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "City slug",
                        "example": "seattle"
                    },
                    {
                        "name": "country",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Country slug or ISO code",
                        "example": "united-states"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Max items"
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Skip items"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JSON"
                    }
                }
            }
        },
        "/guides": {
            "get": {
                "summary": "Guide sections that answer a question.",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "required": false,
                        "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"
                    }
                }
            }
        }
    }
}