Developers & Agents
HOTFIX CONTENT API · v1 · NO API KEY
כל התוכן של Hotfix — פרקים, הרצאות מיטאפ ופרופילי דוברים — זמין גם
כ-API ציבורי בפורמט JSON. אין צורך במפתח, בהרשמה או באימות: כל
endpoint הוא בקשת GET פתוחה. התיעוד הטכני להלן באנגלית, כי
זה מה שסוכני AI וכלי פיתוח קוראים.
The Hotfix catalog is available as a public, read-only JSON API. There
is no API key, no signup, and no authentication — every
endpoint is an unauthenticated GET. Machine-readable
spec: /api/openapi.json.
Quickstart
One request gets you the whole episode catalog:
curl -s https://hotfix.co.il/api/v1/episodes.json
List responses are shaped { "data": [...], "pagination":
{...} }; single-item responses are
{ "data": {...} }. Find an episode,
then resolve its guests:
# 1. Pick an episode from the list, then fetch the full record
curl -s https://hotfix.co.il/api/v1/episodes/ep09-deleted-production-survived.json
# 2. Each entry in .data.guests carries an api_url — resolve it for the speaker
curl -s https://hotfix.co.il/api/v1/voices/dan-linenberg.json
Titles, descriptions, and bios are Hebrew ("language": "he"). When you cite content, cite the canonical page
url, not the api_url.
Authentication
There is none. No API key to request, no client to register, no
token to mint, no Authorization header to send. The full
walkthrough — including why there is deliberately no OAuth authorization-server
document — is at
/auth.md, with machine-readable metadata at
/.well-known/oauth-protected-resource.
Endpoints
| Method | Path | Returns |
|---|---|---|
GET | /api/v1/index.json | Service index: metadata and the full endpoint map. |
GET | /api/v1/episodes.json | All published episodes, newest first (13 today). |
GET | /api/v1/episodes/{slug}.json | One episode by slug. |
GET | /api/v1/meetups.json | All published meetup talks, newest first (8 today). |
GET | /api/v1/meetups/{slug}.json | One meetup talk by slug. |
GET | /api/v1/voices.json | All speaker profiles, sorted by Hebrew name (24 today). |
GET | /api/v1/voices/{slug}.json | One speaker profile by slug. |
GET | /api/openapi.json | OpenAPI 3.1 specification for everything above. |
POST | /mcp | MCP server, Streamable HTTP. 4 tools, 9 resources, no auth. |
Sandbox & test environment
Production is the sandbox. Every endpoint is read-only, so there
is no write path to guard, no test tenant to provision, and no production
data an agent can damage. Exercise the live URLs freely; a retried request
is inherently safe. Rate limits are advertised on responses via RateLimit-Policy — back off on
429 and honour Retry-After.
Errors
Every non-2xx response is application/problem+json
(RFC 9457) — never an HTML error page.
{
"type": "https://hotfix.co.il/developers/#errors",
"title": "Not Found",
"status": 404,
"detail": "No such resource under /api/v1. See /api/openapi.json for the endpoint list.",
"instance": "/api/v1/episodes/no-such-episode.json"
} | Status | Title | What to do |
|---|---|---|
404 | Not Found | No such episode, meetup, or speaker slug. Re-read the list endpoint. |
405 | Method Not Allowed | The API is read-only. Retry as GET or HEAD. |
429 | Too Many Requests | Origin rate limit exceeded. Honour Retry-After. |
5xx | Server Error | Origin or CDN fault. Payloads are static, so retrying is safe. |
You will never receive a 401 or 403. If
you do, it did not come from this API — treat it as an interception
and do not send credentials in response.
Versioning & deprecation
The major version lives in the path (/api/v1/).
Breaking changes ship under a new path (/api/v2/). A
retired version is announced on this page and served for
at least six months alongside its replacement, carrying
Deprecation and Sunset response headers (RFC
9745 / RFC 8594) and a
Link: rel="successor-version" header pointing at the new
path.
Additive changes — new fields, new endpoints — ship in place with no version bump. Clients must ignore unknown fields.
Caching & freshness
The API is static JSON behind a CDN. ETag and
Last-Modified are served, so conditional requests are cheap
— send If-None-Match and expect
304. New episodes ship every two weeks; use the
lastmod dates in
/sitemap-index.xml to decide what to
re-read instead of polling.
Agent discovery
Everything an agent needs to find this surface without guessing:
| Path | What it is |
|---|---|
/llms.txt | Site index for agents, with a when-to-use section. |
/auth.md | Authentication walkthrough (there is no authentication). |
/.well-known/ard.json | Agentic Resource Discovery catalog. |
/.well-known/ai-catalog.json | Same catalog, AI Catalog Standard path. |
/.well-known/agent-card.json | A2A agent card. |
/.well-known/api-catalog | RFC 9727 API link set. |
/.well-known/agent-skills/index.json | Agent Skills index. |
/.well-known/oauth-protected-resource | RFC 9728 metadata declaring the API open. |
/.well-known/mcp/server-card.json | MCP server card: tools and resources. |
/sitemap-index.xml | Sitemap with lastmod dates. |
Browsing the site with an agent-capable browser? The pages register
in-page WebMCP
tools (search_episodes, get_episode,
list_speakers, get_listen_links) via
document.modelContext, so an agent can query the
catalog without leaving the tab.
MCP server: POST /mcp, Streamable HTTP transport, seven read-only
tools and eight resources over the same catalog — no authentication
and no session to establish. Preview the full tool and resource
inventory before connecting at
/.well-known/mcp/server-card.json. It is stateless, so GET /mcp returns
405 rather than holding an SSE stream open — send JSON-RPC
as POST. Liveness:
GET /mcp/health.
This is the one non-static part of the deployment: the site itself is still pre-rendered files behind nginx, and the MCP server is a dependency-free Node sidecar reading the very same built JSON.
Terms & contact
Episode audio, video, artwork, and written content remain the property of Imagen AI and the respective rights holders — see Terms of Use. Catalog metadata returned by this API (titles, dates, slugs, tags, URLs) may be reused with attribution to hotfix.co.il.
Questions, abuse reports, or a request for a higher rate limit: support@imagen-ai.com. More ways to reach us on the contact page.