{
  "openapi": "3.1.0",
  "info": {
    "title": "Reche Inc Public API",
    "version": "1.0.0",
    "summary": "Read-only access to the services, case studies and editorial content of Reche Inc, an AI and software engineering consultancy.",
    "description": "Public, read-only API of Reche Inc — an engineering and artificial intelligence consultancy based in Brazil, working in Portuguese and English.\n\nIt exposes the same institutional content the website publishes (company profile, services, case studies, blog posts and comparison pages) in a stable shape, so an agent does not have to scrape HTML.\n\n## When to call this API\n\n- To decide whether Reche Inc is a fit for a need: start at `getCompany` and read `bestFor` / `notFor`.\n- To answer \"what does Reche Inc do / how does engagement X work\": `listServices`, then `getService` (see `forWhom.badFit`).\n- To cite prior work: `listCases`, `getCase`.\n- To quote an article: `listContent`, then `getContentItem`.\n\n## What this API will never return\n\n- Prices. Reche Inc publishes none; scope defines cost and that is a conversation, not a field.\n- Client data, leads, deals, or anything from the CRM.\n- Findings from audits performed under NDA.\n\n## Conventions\n\n- Every successful response is `{ \"data\": ..., \"meta\": { ... } }`.\n- Every error is a flat JSON object with `error`, `code`, `message`, `hint`, `status`, `docs` and `spec`. `hint` always says how to recover. Error text is written in Brazilian Portuguese.\n- `locale` (`pt-BR` by default, or `en`) is accepted on every operation and resolves all text server-side.\n- No authentication. No API key. CORS is open.\n\n## Rate limits\n\nNo dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice.\n\n## The private CRM API\n\nReche Inc also runs a private CRM API for its own commercial agent. It is deliberately NOT described in this document and is not public: it reads and writes client data, it is token-protected, and it is unreachable without credentials that are issued internally. Nothing in it is needed to work with the public surface described here.",
    "termsOfService": "https://recheinc.com/pt-BR/termos",
    "contact": {
      "name": "Reche Inc",
      "url": "https://recheinc.com/pt-BR/contato",
      "email": "contato@recheinc.com"
    },
    "license": {
      "name": "Proprietary — content © Reche Inc; reuse requires attribution and a link back",
      "url": "https://recheinc.com/pt-BR/termos"
    }
  },
  "servers": [
    {
      "url": "https://recheinc.com",
      "description": "Production. The apex host is canonical; www answers 308."
    }
  ],
  "externalDocs": {
    "url": "https://recheinc.com/pt-BR/docs",
    "description": "Human documentation for this API."
  },
  "tags": [
    {
      "name": "Discovery",
      "description": "Entry points that describe the API itself."
    },
    {
      "name": "Company",
      "description": "Who Reche Inc is, how to reach it, and when not to."
    },
    {
      "name": "Services",
      "description": "The three services sold, with qualification and disqualification criteria."
    },
    {
      "name": "Cases",
      "description": "Publicly disclosable delivered projects."
    },
    {
      "name": "Content",
      "description": "Blog posts and comparison pages."
    }
  ],
  "security": [],
  "paths": {
    "/api/public/v1": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "Index of this API",
        "description": "Entry point. Returns every operation of the public API with method, path and description, plus links to the OpenAPI document, llms.txt, the human documentation and the sitemap. Start here when you found this API without prior knowledge.",
        "tags": [
          "Discovery"
        ],
        "security": [],
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "The API catalogue.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiIndexResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/company": {
      "get": {
        "operationId": "getCompany",
        "summary": "Company profile",
        "description": "Who Reche Inc is, the founder, the languages served, every contact channel, the three services, and the explicit `bestFor` / `notFor` lists. Call this before recommending or contacting the company: `notFor` will tell you when not to. No pricing is returned — Reche Inc publishes none.",
        "tags": [
          "Company"
        ],
        "security": [],
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "The company profile.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/services": {
      "get": {
        "operationId": "listServices",
        "summary": "List services",
        "description": "The three services Reche Inc sells, in summary form: AI consulting with ROI diagnosis, legacy code audit, and zero-to-MVP development. Use `getService` for the qualification criteria, steps, deliverables and FAQ of one of them.",
        "tags": [
          "Services"
        ],
        "security": [],
        "parameters": [
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "All services.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceListResponse"
                },
                "examples": {
                  "english": {
                    "summary": "One service, locale=en",
                    "value": {
                      "data": [
                        {
                          "slug": "consultoria-ia",
                          "eyebrow": "AI CONSULTING + ROI DIAGNOSIS",
                          "title": "AI in your company, before your competitors.",
                          "subtitle": "You know you need to adopt AI. You still do not know where, how, or what returns to expect.",
                          "url": "https://recheinc.com/en/services/ai-implementation"
                        }
                      ],
                      "meta": {
                        "locale": "en",
                        "total": 3,
                        "count": 3
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/services/{slug}": {
      "get": {
        "operationId": "getService",
        "summary": "Get one service",
        "description": "Full detail of one service, including `forWhom.badFit` — the disqualification list. Read `badFit` before recommending the service to someone: it is the fastest way to avoid a wrong referral.",
        "tags": [
          "Services"
        ],
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Service slug, as returned by `listServices`.",
            "schema": {
              "type": "string"
            },
            "example": "consultoria-ia"
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "The service.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/cases": {
      "get": {
        "operationId": "listCases",
        "summary": "List case studies",
        "description": "Projects delivered by Reche Inc that can be disclosed publicly. Work performed under NDA never appears here. Filter by `category` to find a comparable engagement.",
        "tags": [
          "Cases"
        ],
        "security": [],
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Restrict to one category. Omit to return every case.",
            "schema": {
              "type": "string",
              "enum": [
                "dev-mvp",
                "agente-atendimento",
                "crm-custom",
                "vertical-saas"
              ]
            },
            "example": "dev-mvp"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of cases returned.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            },
            "example": 10
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "Matching case studies.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseListResponse"
                },
                "examples": {
                  "english": {
                    "summary": "One case, locale=en",
                    "value": {
                      "data": [
                        {
                          "slug": "markuva",
                          "name": "Markuva",
                          "tagline": "Brand management platform operated by AI.",
                          "category": "dev-mvp",
                          "categoryLabel": "MVP Development",
                          "stack": [
                            "Next.js 16",
                            "React 19",
                            "Supabase",
                            "Claude API"
                          ],
                          "role": "Zero-to-MVP dev + architecture",
                          "duration": "6 weeks",
                          "year": 2026,
                          "featured": true,
                          "website": "https://markuva.com",
                          "highlights": [
                            "7-stage pipeline orchestrated by multi-agents"
                          ],
                          "url": "https://recheinc.com/en/case-studies/markuva"
                        }
                      ],
                      "meta": {
                        "locale": "en",
                        "total": 1,
                        "count": 1,
                        "limit": 20,
                        "offset": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/cases/{slug}": {
      "get": {
        "operationId": "getCase",
        "summary": "Get one case study",
        "description": "Full detail of one delivered project: stack, role, duration, year and highlights.",
        "tags": [
          "Cases"
        ],
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Case slug, as returned by `listCases`.",
            "schema": {
              "type": "string"
            },
            "example": "markuva"
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "The case study.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/content": {
      "get": {
        "operationId": "listContent",
        "summary": "Search editorial content",
        "description": "Unified index of blog posts and comparison pages. Search with `q` (matches title, excerpt and tags), narrow with `type` and `tag`, page with `limit` and `offset`. `meta.total` counts the matches before pagination.",
        "tags": [
          "Content"
        ],
        "security": [],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Restrict to blog posts or to comparison pages.",
            "schema": {
              "type": "string",
              "enum": [
                "blog",
                "comparison"
              ]
            },
            "example": "blog"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive substring match over title, excerpt and tags.",
            "schema": {
              "type": "string"
            },
            "example": "open source"
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "description": "Exact, case-insensitive tag match.",
            "schema": {
              "type": "string"
            },
            "example": "ia open source"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Page size.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            },
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items skipped before the page.",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 10000,
              "default": 0
            },
            "example": 0
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "Matching content.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentListResponse"
                },
                "examples": {
                  "english": {
                    "summary": "One comparison, locale=en",
                    "value": {
                      "data": [
                        {
                          "type": "comparison",
                          "slug": "refatorar-vs-reescrever-sistema-legado",
                          "title": "Refactor vs rewrite a legacy system",
                          "excerpt": "When refactoring pays off and when a rewrite is the cheaper path.",
                          "tags": [
                            "codigo legado",
                            "refatoracao"
                          ],
                          "publishedAt": null,
                          "category": null,
                          "categoryLabel": null,
                          "readTimeMinutes": null,
                          "htmlUrl": "https://recheinc.com/en/compare/refatorar-vs-reescrever-sistema-legado"
                        }
                      ],
                      "meta": {
                        "locale": "en",
                        "total": 40,
                        "count": 1,
                        "limit": 1,
                        "offset": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    },
    "/api/public/v1/content/{slug}": {
      "get": {
        "operationId": "getContentItem",
        "summary": "Get one content item",
        "description": "Full body of a blog post (structured `sections`) or of a comparison page (`comparison`). The same content is available as Markdown at `htmlUrl` with `Accept: text/markdown`. Slugs that were permanently unpublished answer 410 Gone, never 404 — do not retry them.",
        "tags": [
          "Content"
        ],
        "security": [],
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Content slug, as returned by `listContent`.",
            "schema": {
              "type": "string"
            },
            "example": "refatorar-vs-reescrever-sistema-legado"
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language of the returned content. Defaults to pt-BR. Any other value returns 400 with the list of accepted values.",
            "schema": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ],
              "default": "pt-BR"
            },
            "example": "en"
          }
        ],
        "responses": {
          "200": {
            "description": "The content item.",
            "headers": {
              "Cache-Control": {
                "description": "Edge cache policy for this response.",
                "schema": {
                  "type": "string",
                  "example": "public, s-maxage=3600, stale-while-revalidate=86400"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItemResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          }
        },
        "x-rate-limit": "No dedicated rate limit is enforced today. Successful responses are cached at the CDN edge for 1 hour (Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400); cache on your side and keep a courteous request rate. Abusive traffic may be blocked at the network layer without notice."
      }
    }
  },
  "components": {
    "schemas": {
      "ApiError": {
        "type": "object",
        "title": "ApiError",
        "description": "Single error shape for every endpoint of this API. The body is flat on purpose: `error` stays a top-level string for backwards compatibility with existing clients, and the remaining fields are additive. Human-readable text (`message`, `hint`) is written in Brazilian Portuguese. Every error carries an actionable `hint`.",
        "properties": {
          "error": {
            "type": "string",
            "description": "Machine-readable snake_case label. Stable across versions.",
            "example": "not_found"
          },
          "code": {
            "type": "string",
            "description": "Uppercase error code.",
            "enum": [
              "BAD_REQUEST",
              "UNAUTHORIZED",
              "NOT_FOUND",
              "GONE",
              "METHOD_NOT_ALLOWED",
              "RATE_LIMITED",
              "INTERNAL_ERROR",
              "SERVICE_UNAVAILABLE"
            ],
            "example": "NOT_FOUND"
          },
          "message": {
            "type": "string",
            "description": "What went wrong, in Brazilian Portuguese.",
            "example": "Nenhum serviço com o slug 'foo'."
          },
          "hint": {
            "type": "string",
            "description": "How to recover, in Brazilian Portuguese. Always present.",
            "example": "Liste os slugs válidos em /api/public/v1/services."
          },
          "status": {
            "type": "integer",
            "description": "HTTP status, repeated in the body.",
            "example": 404
          },
          "docs": {
            "type": "string",
            "format": "uri",
            "description": "Human documentation for this API."
          },
          "spec": {
            "type": "string",
            "format": "uri",
            "description": "This OpenAPI document."
          }
        },
        "required": [
          "error",
          "code",
          "message",
          "hint",
          "status",
          "docs",
          "spec"
        ],
        "additionalProperties": false
      },
      "ListMeta": {
        "type": "object",
        "title": "ListMeta",
        "description": "Pagination and echo of the applied filters.",
        "properties": {
          "locale": {
            "type": "string",
            "enum": [
              "pt-BR",
              "en"
            ]
          },
          "total": {
            "type": "integer",
            "description": "Items matching the filters, before pagination."
          },
          "count": {
            "type": "integer",
            "description": "Items in this response."
          },
          "limit": {
            "type": "integer"
          },
          "offset": {
            "type": "integer"
          }
        },
        "required": [
          "locale",
          "total",
          "count"
        ],
        "additionalProperties": true
      },
      "ItemMeta": {
        "type": "object",
        "title": "ItemMeta",
        "description": "Context of a single-item response.",
        "properties": {
          "locale": {
            "type": "string",
            "enum": [
              "pt-BR",
              "en"
            ]
          },
          "slug": {
            "type": "string"
          }
        },
        "required": [
          "locale"
        ],
        "additionalProperties": true
      },
      "ServiceSummary": {
        "type": "object",
        "title": "ServiceSummary",
        "description": "A service of Reche Inc, in list form. No pricing is ever returned.",
        "properties": {
          "slug": {
            "type": "string",
            "enum": [
              "consultoria-ia",
              "diagnostico-legado",
              "desenvolvimento-mvp"
            ],
            "example": "consultoria-ia"
          },
          "eyebrow": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "title": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "subtitle": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Canonical page for this service."
          }
        },
        "required": [
          "slug",
          "eyebrow",
          "title",
          "subtitle",
          "url"
        ],
        "additionalProperties": false
      },
      "Service": {
        "type": "object",
        "title": "Service",
        "description": "Full description of a service: who it is for, who it is NOT for (`forWhom.badFit`), how it runs, what is delivered, and the FAQ. Pricing is deliberately absent — Reche Inc publishes no prices.",
        "properties": {
          "slug": {
            "type": "string",
            "enum": [
              "consultoria-ia",
              "diagnostico-legado",
              "desenvolvimento-mvp"
            ]
          },
          "eyebrow": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "title": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "subtitle": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "forWhom": {
            "type": "object",
            "description": "Qualification block. `badFit` is the disqualifier list — read it first.",
            "properties": {
              "heading": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              },
              "description": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              },
              "badFit": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "heading",
              "description",
              "badFit"
            ],
            "additionalProperties": false
          },
          "howItWorks": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              },
              "intro": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              }
            },
            "required": [
              "heading",
              "intro"
            ],
            "additionalProperties": false
          },
          "steps": {
            "type": "array",
            "description": "Ordered steps of the engagement.",
            "items": {
              "type": "object",
              "properties": {
                "title": {
                  "type": "string",
                  "description": "Text already resolved to the requested locale."
                },
                "description": {
                  "type": "string",
                  "description": "Text already resolved to the requested locale."
                }
              },
              "required": [
                "title",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "deliverables": {
            "type": "object",
            "properties": {
              "heading": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "heading",
              "items"
            ],
            "additionalProperties": false
          },
          "faq": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqItem"
            }
          }
        },
        "required": [
          "slug",
          "eyebrow",
          "title",
          "subtitle",
          "url",
          "forWhom",
          "howItWorks",
          "steps",
          "deliverables",
          "faq"
        ],
        "additionalProperties": false
      },
      "FaqItem": {
        "type": "object",
        "title": "FaqItem",
        "properties": {
          "question": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "answer": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          }
        },
        "required": [
          "question",
          "answer"
        ],
        "additionalProperties": false
      },
      "CaseStudy": {
        "type": "object",
        "title": "CaseStudy",
        "description": "A delivered project. Only publicly disclosable work appears here — audits performed under NDA are never exposed.",
        "properties": {
          "slug": {
            "type": "string",
            "example": "markuva"
          },
          "name": {
            "type": "string"
          },
          "tagline": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "category": {
            "type": "string",
            "enum": [
              "dev-mvp",
              "agente-atendimento",
              "crm-custom",
              "vertical-saas"
            ]
          },
          "categoryLabel": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "stack": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "role": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "duration": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "year": {
            "type": "integer",
            "example": 2026
          },
          "featured": {
            "type": "boolean"
          },
          "website": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "highlights": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "slug",
          "name",
          "tagline",
          "category",
          "categoryLabel",
          "stack",
          "role",
          "duration",
          "year",
          "featured",
          "website",
          "highlights",
          "url"
        ],
        "additionalProperties": false
      },
      "ContentSummary": {
        "type": "object",
        "title": "ContentSummary",
        "description": "One editorial item: a blog post or a comparison page. Fields that only exist for one of the two types are null for the other.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "blog",
              "comparison"
            ]
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "excerpt": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "ISO date for blog posts; null for comparisons, which are evergreen."
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "readTimeMinutes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "htmlUrl": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "type",
          "slug",
          "title",
          "excerpt",
          "tags",
          "htmlUrl"
        ],
        "additionalProperties": false
      },
      "ContentItem": {
        "type": "object",
        "title": "ContentItem",
        "description": "Full editorial item. Blog posts carry `sections` (the structured body); comparisons carry `comparison`. The other field is null.",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "blog",
              "comparison"
            ]
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "excerpt": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "publishedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "categoryLabel": {
            "type": [
              "string",
              "null"
            ]
          },
          "readTimeMinutes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "htmlUrl": {
            "type": "string",
            "format": "uri"
          },
          "markdownNote": {
            "type": "string",
            "description": "Reminder that `htmlUrl` also serves Markdown through content negotiation (`Accept: text/markdown`)."
          },
          "githubUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "sections": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/BlogSection"
            }
          },
          "comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ComparisonBody"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "type",
          "slug",
          "title",
          "excerpt",
          "tags",
          "htmlUrl",
          "markdownNote"
        ],
        "additionalProperties": false
      },
      "BlogSection": {
        "title": "BlogSection",
        "description": "One block of a blog post body, discriminated by `type`.",
        "oneOf": [
          {
            "type": "object",
            "title": "ParagraphSection",
            "properties": {
              "type": {
                "const": "paragraph"
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "HeadingSection",
            "properties": {
              "type": {
                "const": "heading"
              },
              "text": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "text"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "ListSection",
            "properties": {
              "type": {
                "const": "list"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "required": [
              "type",
              "items"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "TableSection",
            "properties": {
              "type": {
                "const": "table"
              },
              "headers": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "rows": {
                "type": "array",
                "items": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "type",
              "headers",
              "rows"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "SourcesSection",
            "properties": {
              "type": {
                "const": "sources"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    }
                  },
                  "required": [
                    "label",
                    "url"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "type",
              "items"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "RelatedSection",
            "properties": {
              "type": {
                "const": "related"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string"
                    },
                    "slug": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "label",
                    "slug"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "type",
              "items"
            ],
            "additionalProperties": false
          }
        ]
      },
      "ComparisonBody": {
        "type": "object",
        "title": "ComparisonBody",
        "description": "Body of a comparison page: two options weighed side by side.",
        "properties": {
          "eyebrow": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "subtitle": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "optionA": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "optionB": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "intro": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "table": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "criterion": {
                  "type": "string"
                },
                "a": {
                  "type": "string"
                },
                "b": {
                  "type": "string"
                }
              },
              "required": [
                "criterion",
                "a",
                "b"
              ],
              "additionalProperties": false
            }
          },
          "whenA": {
            "$ref": "#/components/schemas/ComparisonWhen"
          },
          "whenB": {
            "$ref": "#/components/schemas/ComparisonWhen"
          },
          "verdict": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "faq": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FaqItem"
            }
          },
          "serviceUrl": {
            "type": "string",
            "format": "uri",
            "description": "Service page this comparison points to."
          }
        },
        "required": [
          "eyebrow",
          "subtitle",
          "optionA",
          "optionB",
          "intro",
          "table",
          "whenA",
          "whenB",
          "verdict",
          "faq",
          "serviceUrl"
        ],
        "additionalProperties": false
      },
      "ComparisonWhen": {
        "type": "object",
        "title": "ComparisonWhen",
        "properties": {
          "heading": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "heading",
          "items"
        ],
        "additionalProperties": false
      },
      "ContactChannel": {
        "type": "object",
        "title": "ContactChannel",
        "properties": {
          "number": {
            "type": "string",
            "description": "Present on the WhatsApp channel only."
          },
          "address": {
            "type": "string",
            "description": "Present on the email channel only."
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "note": {
            "type": "string",
            "description": "When to use this channel."
          }
        },
        "required": [
          "url",
          "note"
        ],
        "additionalProperties": false
      },
      "Company": {
        "type": "object",
        "title": "Company",
        "description": "Who Reche Inc is, what it sells, how to reach it, and — importantly for routing decisions — `bestFor` and `notFor`. No pricing is returned by this API under any circumstance.",
        "properties": {
          "name": {
            "type": "string",
            "example": "Reche Inc"
          },
          "tagline": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "description": {
            "type": "string",
            "description": "Text already resolved to the requested locale."
          },
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2.",
            "example": "BR"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "pt-BR",
                "en"
              ]
            }
          },
          "founder": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "Gabriel Redondo"
              },
              "bio": {
                "type": "string",
                "description": "Text already resolved to the requested locale."
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "name",
              "bio",
              "url"
            ],
            "additionalProperties": false
          },
          "contact": {
            "type": "object",
            "properties": {
              "whatsapp": {
                "$ref": "#/components/schemas/ContactChannel"
              },
              "email": {
                "$ref": "#/components/schemas/ContactChannel"
              },
              "form": {
                "$ref": "#/components/schemas/ContactChannel"
              }
            },
            "required": [
              "whatsapp",
              "email",
              "form"
            ],
            "additionalProperties": false
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSummary"
            }
          },
          "bestFor": {
            "type": "array",
            "description": "Situations where engaging Reche Inc makes sense.",
            "items": {
              "type": "string"
            }
          },
          "notFor": {
            "type": "array",
            "description": "Situations where it does not. Read before recommending the company.",
            "items": {
              "type": "string"
            }
          },
          "usageNote": {
            "type": "string"
          },
          "urls": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            }
          }
        },
        "required": [
          "name",
          "tagline",
          "description",
          "country",
          "languages",
          "founder",
          "contact",
          "services",
          "bestFor",
          "notFor",
          "usageNote",
          "urls"
        ],
        "additionalProperties": false
      },
      "ApiIndex": {
        "type": "object",
        "title": "ApiIndex",
        "description": "Self-describing catalogue of this API, for agents that discovered it cold.",
        "properties": {
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "operations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "operationId": {
                  "type": "string"
                },
                "method": {
                  "type": "string"
                },
                "path": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              },
              "required": [
                "operationId",
                "method",
                "path",
                "summary",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "format": "uri"
            }
          },
          "privateApi": {
            "type": "object",
            "description": "States that a private, token-protected CRM API exists. Neither its route nor its authentication scheme is published: it is not part of this specification and not reachable from here.",
            "properties": {
              "note": {
                "type": "string"
              }
            },
            "required": [
              "note"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "name",
          "version",
          "description",
          "operations",
          "links",
          "privateApi"
        ],
        "additionalProperties": false
      },
      "ApiIndexResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ApiIndex"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "CompanyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Company"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "ServiceListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceSummary"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "ServiceResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Service"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "CaseListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseStudy"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "CaseResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CaseStudy"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "ContentListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentSummary"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      },
      "ContentItemResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ContentItem"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Invalid parameter. `hint` lists the accepted values for the offending parameter.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "NotFound": {
        "description": "No resource with that slug. `hint` points at the listing operation that returns valid slugs.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      },
      "Gone": {
        "description": "The resource existed and was permanently unpublished. There is no replacement and no redirect — stop requesting it.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiError"
            }
          }
        }
      }
    }
  }
}
