{
  "object": "api_index",
  "name": "TokenJam Website Content API",
  "description": "Read-only JSON access to everything published on tokenjam.dev: blog posts, documentation, and the TokenJam analyzer catalog. Public and unauthenticated.",
  "version": "v1",
  "documentation_url": "https://tokenjam.dev/api",
  "openapi_url": "https://tokenjam.dev/openapi.json",
  "agent_instructions_url": "https://tokenjam.dev/agents.md",
  "llms_txt_url": "https://tokenjam.dev/llms.txt",
  "llms_full_txt_url": "https://tokenjam.dev/llms-full.txt",
  "sitemap_url": "https://tokenjam.dev/sitemap-index.xml",
  "mcp_manifest_url": "https://tokenjam.dev/.well-known/mcp.json",
  "developer_portal_url": "https://tokenjam.dev/developers",
  "support": {
    "email": "support@tokenjam.dev",
    "contact_url": "https://tokenjam.dev/contact"
  },
  "authentication": {
    "required": false,
    "description": "No authentication. Do not send an Authorization header — there is no API key, no OAuth flow, and no signup for this API."
  },
  "rate_limit": {
    "enforced": false,
    "description": "No application-level rate limit. Responses are served from a CDN; sustained abusive volume may be throttled at the edge."
  },
  "lifecycle": {
    "current_version": "v1",
    "versioning_scheme": "URL path segment, e.g. /api/v1/posts.json",
    "status": "stable",
    "policy_url": "https://tokenjam.dev/api#lifecycle",
    "notice_period_days": 90,
    "breaking_change_policy": "Breaking changes ship as a new version segment (/api/v2/), never in place. Within a version, fields may be added but existing fields are not removed, renamed, or retyped.",
    "deprecation_signals": [
      {
        "signal": "Deprecation header",
        "spec": "RFC 9745",
        "description": "Set on every response from a deprecated endpoint, carrying the date the deprecation was announced."
      },
      {
        "signal": "Sunset header",
        "spec": "RFC 8594",
        "description": "Set alongside Deprecation, carrying the date the endpoint stops responding."
      },
      {
        "signal": "deprecated: true in the OpenAPI document",
        "spec": "OpenAPI 3.1",
        "description": "Marked on the operation as soon as the deprecation is announced."
      },
      {
        "signal": "A note on the API page and in the changelog",
        "spec": null,
        "description": "Written explanation of what replaces the endpoint."
      }
    ],
    "guarantee": "A deprecated endpoint keeps responding for at least 90 days after the Deprecation header first appears. No endpoint is removed without that notice."
  },
  "counts": {
    "blog_posts": 49,
    "docs": 34,
    "products": 13
  },
  "collections": {
    "blog_posts": "https://tokenjam.dev/api/v1/posts.json",
    "docs": "https://tokenjam.dev/api/v1/docs.json",
    "products": "https://tokenjam.dev/api/v1/products.json"
  },
  "endpoints": [
    {
      "operation_id": "getApiIndex",
      "method": "GET",
      "path": "/api/v1/index.json",
      "url": "https://tokenjam.dev/api/v1/index.json",
      "description": "API discovery document"
    },
    {
      "operation_id": "listBlogPosts",
      "method": "GET",
      "path": "/api/v1/posts.json",
      "url": "https://tokenjam.dev/api/v1/posts.json",
      "description": "List all published blog posts"
    },
    {
      "operation_id": "getBlogPost",
      "method": "GET",
      "path": "/api/v1/posts/{postId}.json",
      "url": "https://tokenjam.dev/api/v1/posts/{postId}.json",
      "description": "Get one blog post, including its markdown body"
    },
    {
      "operation_id": "listDocs",
      "method": "GET",
      "path": "/api/v1/docs.json",
      "url": "https://tokenjam.dev/api/v1/docs.json",
      "description": "List all documentation pages"
    },
    {
      "operation_id": "getDoc",
      "method": "GET",
      "path": "/api/v1/docs/{docId}.json",
      "url": "https://tokenjam.dev/api/v1/docs/{docId}.json",
      "description": "Get one documentation page, including its markdown body"
    },
    {
      "operation_id": "listProducts",
      "method": "GET",
      "path": "/api/v1/products.json",
      "url": "https://tokenjam.dev/api/v1/products.json",
      "description": "List the TokenJam optimization analyzers"
    },
    {
      "operation_id": "getProduct",
      "method": "GET",
      "path": "/api/v1/products/{productSlug}.json",
      "url": "https://tokenjam.dev/api/v1/products/{productSlug}.json",
      "description": "Get one analyzer, including its mechanism and confidence tiers"
    },
    {
      "operation_id": "getOpenApiDocument",
      "method": "GET",
      "path": "/openapi.json",
      "url": "https://tokenjam.dev/openapi.json",
      "description": "This OpenAPI document"
    },
    {
      "operation_id": "getAgentInstructions",
      "method": "GET",
      "path": "/agents.md",
      "url": "https://tokenjam.dev/agents.md",
      "description": "Agent instructions: when to use TokenJam and how to call it"
    },
    {
      "operation_id": "getLlmsIndex",
      "method": "GET",
      "path": "/llms.txt",
      "url": "https://tokenjam.dev/llms.txt",
      "description": "llms.txt index of the site"
    },
    {
      "operation_id": "getLlmsFullText",
      "method": "GET",
      "path": "/llms-full.txt",
      "url": "https://tokenjam.dev/llms-full.txt",
      "description": "Full-text dump of the site for LLM ingestion"
    },
    {
      "operation_id": "getBlogPostMarkdown",
      "method": "GET",
      "path": "/blog/{postId}.md",
      "url": "https://tokenjam.dev/blog/{postId}.md",
      "description": "Get a blog post as plain markdown"
    },
    {
      "operation_id": "getDocMarkdown",
      "method": "GET",
      "path": "/docs/{docId}.md",
      "url": "https://tokenjam.dev/docs/{docId}.md",
      "description": "Get a documentation page as plain markdown"
    }
  ],
  "related": {
    "local_server_note": "The TokenJam CLI runs a separate local API on http://127.0.0.1:7391 (`tj serve`) that reads your own telemetry and requires a bearer token. It publishes its own OpenAPI document at /api/v1/openapi.json on that host.",
    "local_server_docs": "https://tokenjam.dev/docs/export",
    "mcp_server_docs": "https://tokenjam.dev/docs/mcp-server"
  }
}
