London Night Guide API & Agent Docs

A free, read-only, no-auth API over London Night Guide's nightlife content: venue guestlist pages, VIP table info, entry prices, dress codes and event listings. Everything below is machine-readable — start with the OpenAPI 3.1 specification or the llms.txt agent guide.

Authentication

None. Every endpoint is public and read-only — no API keys, tokens or registration. Please cache politely; markdown responses send Cache-Control: s-maxage=3600.

JSON API (v1)

Structured JSON lives under /api/v1/:

  • GET /api/v1/venues — every open venue: area, genre, hours, club nights, capacity, dress code, address, nearest tube, booking links
  • GET /api/v1/categories — all content categories with page counts and archive URLs
  • GET /api/v1/pages/{slug} — structured metadata for any post or page: title, dates, venue facts, FAQs, and the markdown URL for the full body

Rate Limits

/api/* requests are limited to 120 per minute per client. Every response carries the RateLimit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy: 120;w=60) so agents can self-throttle; exceeding the limit returns 429 with a Retry-After header and the standard JSON error envelope. Content URLs are CDN-cached and not rate limited.

Versioning & Deprecation

Full policy page: API Versioning & Deprecation Policy. JSON endpoints are URL-path versioned (/api/v1/). The policy agents can rely on:

  • Breaking changes ship as a new /api/v2/ prefix; /api/v1/ keeps working for at least 90 days of overlap.
  • A deprecated endpoint signals it in-band with Deprecation and Sunset response headers (RFC 8594) and is marked deprecated in the OpenAPI spec.
  • Unversioned content URLs (/{slug}/, .md paths, llms.txt) are stable: fields and pages are added, never removed without the same notice.

Reading Content as Markdown

Every content URL serves clean markdown two ways:

  1. Content negotiation — send Accept: text/markdown to any page URL. RFC 9110 q-values are honoured, responses carry Vary: Accept, and an Accept header that allows neither HTML nor markdown returns 406.
  2. .md paths — append .md to a slug: /{slug}.md, /category/{slug}.md, /tag/{slug}.md, or /index.md for the homepage.

Endpoints

Every operation in the OpenAPI spec carries a unique operationId, a description, typed parameters and response schemas, so the spec can be loaded directly into LLM function-calling and tool-use frameworks.

PathDescription
GET /Homepage
GET /{slug}/Post or page by slug
GET /category/{slug}/Category archive
GET /tag/{slug}/Tag archive
GET /index.mdHomepage as markdown
GET /{slug}.mdPost or page as markdown
GET /category/{slug}.mdCategory archive as markdown
GET /tag/{slug}.mdTag archive as markdown
GET /llms.txtAgent guide (llmstxt.org format)
GET /openapi.jsonThis specification
GET /sitemap.xmlXML sitemap of all indexable URLs
GET /feed/RSS feed of the 50 most recent posts
GET /api/v1/venuesOpen venues as structured JSON
GET /api/v1/categoriesContent categories as structured JSON
GET /api/v1/eventsUpcoming club nights as structured JSON
GET /api/v1/pages/{slug}Post or page metadata as structured JSON
GET /apiAPI index
GET /api/{path}Unknown API path

Errors

Content URLs return real HTTP status codes: 404 and 410 bodies are markdown with recovery links, and 406 explains the supported media types. Paths under /api/ always return a structured JSON envelope:

{
  "error": {
    "status": 404,
    "code": "not_found",
    "message": "No API endpoint exists at /api/example.",
    "hint": "GET https://londonnightguide.com/api for an endpoint index, ..."
  }
}

Making Bookings

There is no write API. Guestlist and VIP table bookings are confirmed by a human concierge, usually within the hour, and the booking forms are bot-protected. To act for a user, hand them the free guestlist form, the VIP table form or the prefilled WhatsApp link.

Examples

List every open venue as JSON (area, hours, nights, dress code, booking links)

curl https://londonnightguide.com/api/v1/venues

Structured JSON metadata for any page

curl https://londonnightguide.com/api/v1/pages/tape-club-guestlist

Fetch any page as markdown (content negotiation)

curl -H "Accept: text/markdown" https://londonnightguide.com/tape-club-guestlist/

Fetch the same page via its .md path

curl https://londonnightguide.com/tape-club-guestlist.md

Machine-readable site overview

curl https://londonnightguide.com/index.md

List every page in a category

curl https://londonnightguide.com/category/clubs.md

Structured JSON error from an unknown API path

curl https://londonnightguide.com/api/does-not-exist/

Contact

Questions about the API or integrations: concierge@londonnightguide.com