Griflan Developer Resources
Machine-readable access to griflan.com — the website of Griflan, a creative agency for branding, website design, web development, and digital experiences. Everything below is public, read-only, and needs no API key.
Griflan Content API
Static JSON documents generated at build time from the same records the site renders.
/api/index.json— API index/api/work.json— case studies/api/work/{slug}.json— one case study, e.g./api/work/upshop.json/api/blog.json— articles/api/blog/{slug}.json— one article/api/services.json— services
OpenAPI specification
The API surface is described by an OpenAPI 3.1 document at /openapi.json. It is also advertised from every page with <link rel="service-desc">.
API discovery
An RFC 9727 API catalog is published at /.well-known/api-catalog as an RFC 9264 Linkset, naming the API and linking its specification, documentation and metadata. Every response also carries Link: </.well-known/api-catalog>; rel="api-catalog".
Errors
Every path under /api that does not exist returns 404 with a JSON body — never an HTML page. Fields follow the member names of RFC 9457, plus code, resolution and available_endpoints so a client can correct itself without reading these docs.
curl -s https://griflan.com/api/does-not-exist
Markdown content negotiation
Every page serves a Markdown representation from its canonical URL to clients that ask for one, following the acceptmarkdown.com convention. Responses carry Vary: Accept, and an unsatisfiable Accept returns 406 Not Acceptable.
curl -H "Accept: text/markdown" https://griflan.com/work/upshop
The same document is also addressable directly by appending .md to any page path, e.g. /work/upshop.md. Pages advertise it with <link rel="alternate" type="text/markdown"> and a Link response header.
Agent and crawler files
/llms.txt— what Griflan does, who it is for, and which pages are authoritative/sitemap.xml— every indexable page/robots.txt— crawl policy/404.md— the not-found response agents receive
Conventions
- Unknown paths return
404, never a200app shell. - All JSON documents include
versionandgeneratedAt. - Content changes when the site is rebuilt; there are no webhooks or write endpoints.