Developers and agents
Everything published here is readable without a key, an account, or a rendered page. If you are building something that needs the articles, start with the endpoints below.
Read endpoints
All anonymous, all GET, all statically generated and served from a CDN.
| Path | Returns | Description |
|---|---|---|
| /api/blog | application/json | Every published post, newest first. Accepts an optional limit query parameter. |
| /api/blog/{slug}/markdown | text/markdown | Full markdown source of one post, with YAML frontmatter. Also served at /blog/{slug}.md. |
| /api/home/markdown | text/markdown | The homepage as markdown. |
| /api/rss | application/rss+xml | RSS 2.0 feed of published posts. |
| /api/apps/{slug}/download | 302 redirect | Redirects to the current build of one of the macOS apps. |
Agent files
| Path | Returns | Description |
|---|---|---|
| /llms.txt | text/markdown | Short index of the site, with guidance on when this material is worth citing. |
| /llms-full.txt | text/markdown | Every published article in one document. |
| /pricing.md | text/markdown | Prices for the training, the digital bundles, and the book. |
| /openapi.json | application/json | OpenAPI 3.1 description of the endpoints on this page. |
| /.well-known/api-catalog | application/linkset+json | RFC 9727 catalog pointing at everything above. |
| /sitemap.xml | application/xml | Every indexable page. |
Markdown instead of HTML
Any article is available as markdown three ways. Append .md to the URL, request the post with Accept: text/markdown, or call the endpoint directly.
curl https://www.strategicnerds.com/blog/devrel-is-marketing.md
curl -H "Accept: text/markdown" \
https://www.strategicnerds.com/blog/devrel-is-marketing
curl https://www.strategicnerds.com/api/blog/devrel-is-marketing/markdownRate limits
The read endpoints above are not rate limited. The write endpoints are, per client IP address. They exist for this site's own forms, but the limits are published so you do not have to find them by probing. Going over one returns 429 with a Retry-After header.
| Route | Method | Requests | Window |
|---|---|---|---|
| /api/subscribe | POST | 5 | 10 minutes |
| /api/support | POST | 5 | 10 minutes |
| /api/condo | POST | 5 | 10 minutes |
| /api/stripe/checkout | POST | 10 | 10 minutes |
| /api/stripe/training/checkout | POST | 10 | 10 minutes |
| /api/stripe/special-offer/checkout | POST | 10 | 10 minutes |
| /api/cal/cancel | POST | 20 | 60 minutes |
| /api/indexnow | POST | 20 | 60 minutes |
Crawling
robots.txt declares a Content-Signal preference of search=yes, ai-input=yes, ai-train=no. Retrieval and search crawlers are allowed. Crawlers that exist to collect training corpora are not.
Reuse
Quote short excerpts with attribution and a link to the original. Republishing whole articles is not permitted. The full terms are on the terms page. Questions go to contact.