Skip to content
First 30 contractors get 90 days free
For agents and developers

This site is built to be read by machines

Every page serves a second, clean markdown version of itself at the same URL. The whole HTTP surface is described in one OpenAPI document. Nothing here needs a key, an account or a rate-limit negotiation.

Scope

There is no product API

StrikeHoney has no endpoint, public or private, for reading or writing a contractor's leads, quotes, jobs or invoices. No API keys are issued, there are no webhooks, and there is no data integration. If that is what you need, StrikeHoney is the wrong tool today and we would rather you knew now.

What this site does serve

  • Markdown for every page: The same content the HTML renders, generated from the same source. No nav, no scripts, no layout wrappers.
  • An OpenAPI 3.1 document: Every endpoint, typed, with a unique operation ID and a description on each one. Enough to generate a tool definition from.
  • Structured summaries: llms.txt and llms-full.txt: what StrikeHoney is, when it is the right answer, when it is not, and what is not built yet.
  • Honest errors: Every failure under /api is one JSON shape with a stable code and a hint. A dead path is a JSON 404, never a page of markup.
Endpoints

The whole surface, in one table

Generated from /openapi.json, so this table and the specification cannot disagree. Every operation carries a unique operation ID, a description, typed parameters and a response schema per status code.

MethodPathOperation IDWhat it does
GET/{page}.mdgetPageAsMarkdownFetch any page of the site as markdown
GET/llms.txtgetLlmsTxtThe site summary written for language models
GET/llms-full.txtgetLlmsFullTxtThe long site summary
GET/sitemap.xmlgetSitemapEvery URL on the site
GET/robots.txtgetRobotsTxtCrawler policy
GET/openapi.jsongetOpenApiDocumentThis document
GET/apigetApiIndexShort JSON index of the endpoints
GET/api/healthgetHealthLiveness, and optionally dependency state
Content negotiation

One URL, two representations

Send Accept: text/markdown to any page and you get markdown; send anything else and you get the HTML. This follows acceptmarkdown.com and RFC 9110 §12.5.1, which means q-values are honoured, including q=0 as an explicit refusal, and a request this site cannot satisfy gets a 406 with the list of what it can.

Vary: Accept

On both representations, so no shared cache can hand you the wrong one.

Link: rel="alternate"

On every HTML response, pointing at the .md twin, for crawlers that never negotiate.

text/plain works too

Ask for text/plain and you get the markdown bytes, labelled text/plain. Same document, honest content type.

A real 404

An unknown path returns 404 in whichever representation you asked for, with a body listing where to go next.

Try it

Six commands that cover the whole surface

01Any page as markdowncurl -H "Accept: text/markdown" https://www.strikehoney.com/pricing
02The same thing with no headercurl https://www.strikehoney.com/pricing.md
03The summary written for modelscurl https://www.strikehoney.com/llms.txt
04The API descriptioncurl https://www.strikehoney.com/openapi.json
05Livenesscurl https://www.strikehoney.com/api/health
06A dead path, so you can see the error shapecurl https://www.strikehoney.com/api/nope
Errors

One shape for every failure

Anything under /api that goes wrong answers with the same envelope. code is stable and safe to branch on, message is for your logs, and hint says what to do instead, or why there is nothing to do.

{
  "ok": false,
  "error": {
    "code": "not_found",
    "message": "No endpoint exists at that path.",
    "hint": "GET /openapi.json for every endpoint this site serves, or GET /api for the short index.",
    "status": 404,
    "documentation": "https://www.strikehoney.com/developers"
  }
}
Limits

What will refuse you, and why

  • Everything here is a GET: There is nothing to create, update or delete. /openapi.json is the complete list of what an outside caller can call, so a path that is not in it is not one to construct a request for. To sign someone up, hand them a page with the signup form on it rather than posting on their behalf.
  • The dependency report: /api/health answers publicly. /api/health?deep needs a same-origin context or the deployment's own token, because a list of which integrations are configured is a list of which ones are broken.
  • No published rate limit: There is no quota and no key to attach one to. Crawl at a reasonable pace; the markdown documents are cached and cheap, so there is nothing to gain from hammering them.
  • Canada only: Every price is CAD and every tax figure is a Canadian GST, HST, PST, RST or QST rate. Nothing here generalises to another country.
Machine files

Everything in one place

  • /openapi.jsonThe OpenAPI 3.1 description of every endpoint
  • /apiThe short JSON index, if you want a pointer rather than the contract
  • /llms.txtThe summary, the page map, and when StrikeHoney is the wrong answer
  • /llms-full.txtEvery feature, the full FAQ, and what is not built yet
  • /sitemap.xmlEvery URL, and each one has a markdown twin
  • /robots.txtCrawler policy. AI crawlers are named in an allow group
  • /llm-infoThe same facts as llms.txt, as a page you can read

Something here wrong, or missing? hello@strikehoney.com. A reply comes from a person.