No key, no token
The public API is read-only and requires no authentication. There is no signup, no API key, and no authorization header: just call it.
Everything this site publishes is also served as data: a read-only JSON API, an OpenAPI 3.1 spec, Markdown on any page, and discovery files built for agents. No key, no signup.
Who this page is for
DISCOVERY
Six fixed addresses, all public and unauthenticated. Start here: they describe the whole site without you crawling it page by page.
| File | What it is for |
|---|---|
| /llms.txt | A summary of the site for language models: who we are, the services, and the page index with direct links. |
| /llms-full.txt | The same map, but with the full text of every page in a single file — for loading everything at once. |
| /agent-instructions.md | Instructions for agents: what Reche does, when it makes sense to engage us, how to query the API, and how to reach a human. |
| /sitemap.xml | Every indexable URL in both languages, each with a real last-modified date. |
| /robots.txt | Crawling rules. AI crawlers (GPTBot, ClaudeBot, PerplexityBot, and others) are explicitly allowed. |
| /openapi.json | The OpenAPI 3.1 spec for the public API — the source of truth for the contract. Also at /api/openapi.json and /api/openapi.yaml. |
MARKDOWN
You do not need to scrape HTML to read this site. The same URL returns clean text when you ask for it.
Every page on this site responds in Markdown when the request sends the Accept: text/markdown header. HTML stays the default for browsers — nothing changes for clients that do not ask.
Responses carry Vary: Accept, so no intermediate cache mixes up the HTML and Markdown versions of the same URL.
It works on service pages, case studies, blog posts, comparisons, and the institutional pages — always at the same address a human would use.
curl -sH "Accept: text/markdown" https://recheinc.com/en/services/ai-implementationPUBLIC API
A read-only API built from the same content the site publishes. Every operation accepts locale=pt-BR or locale=en; omitting it means pt-BR. Successful responses always use the { "data": ..., "meta": ... } envelope.
| Method | Path | What it returns | Parameters |
|---|---|---|---|
| GET | /api/public/v1 | An index of every operation, with links to the spec and to this page. | locale |
| GET | /api/public/v1/company | The Reche profile: description, founder, contact channels, who we are a fit for and who we are not. | locale |
| GET | /api/public/v1/services | The three services, each with the problem it fits. | locale |
| GET | /api/public/v1/services/{slug} | One service in detail: who it is for, how it works, deliverables, and FAQ. | locale |
| GET | /api/public/v1/cases | The published case studies, with the problem tackled and the stack used. | locale, category, limit |
| GET | /api/public/v1/cases/{slug} | One case study in detail. | locale |
| GET | /api/public/v1/content | Blog posts and comparison pages, filterable and paginated. | locale, type, q, tag, limit, offset |
| GET | /api/public/v1/content/{slug} | One post or comparison, with the full text. | locale |
curl -s "https://recheinc.com/api/public/v1/services?locale=en"curl -s "https://recheinc.com/api/public/v1/content?type=blog&q=legacy&limit=5&offset=0&locale=en"{
"data": [
{
"slug": "consultoria-ia",
"url": "https://recheinc.com/en/services/ai-implementation"
}
],
"meta": {
"locale": "en",
"count": 3
}
}The example above is abbreviated. The complete, always-current field list for every response lives in /openapi.json — that is the contract, not this page.
AUTHENTICATION
We would rather say that plainly than invent a process that does not exist.
The public API is read-only and requires no authentication. There is no signup, no API key, and no authorization header: just call it.
Responses carry Access-Control-Allow-Origin: *, so you can call it straight from the browser, without a proxy.
The content is static. Responses are served from a CDN with s-maxage=3600 and stale-while-revalidate=86400 — repeating the same call is cheap on both sides.
We publish no per-minute limit and no per-client quota, because today we do not meter consumption per client. Use it sensibly. If your case needs high volume or an availability guarantee, talk to us first.
There is also a private Reche CRM API, protected by a token and used internally. It is not public, it is not in the spec, and it is not documented here.
ERRORS
Every failure returns the same JSON body, alongside the matching HTTP status. The hint field exists so you can recover on your own, without opening this page.
{
"error": "not_found",
"code": "NOT_FOUND",
"message": "No service exists with the given slug.",
"hint": "List the available slugs at GET /api/public/v1/services.",
"status": 404,
"docs": "https://recheinc.com/pt-BR/docs",
"spec": "https://recheinc.com/openapi.json"
}| Field | What it means |
|---|---|
| error | A stable lowercase identifier for the failure. Branch on this instead of on the message text. |
| code | The same failure as an uppercase constant: BAD_REQUEST, UNAUTHORIZED, NOT_FOUND, GONE, METHOD_NOT_ALLOWED, RATE_LIMITED, INTERNAL_ERROR, or SERVICE_UNAVAILABLE. |
| message | A human-readable explanation of what happened, in the language of the request. |
| hint | The concrete next step to recover: which parameter to fix, which endpoint to list, which values are accepted. Always present. |
| status | The same HTTP status as the response, repeated in the body for clients that only read JSON. |
| docs | A link to this documentation page. |
| spec | A link to /openapi.json. |
WHEN TO ENGAGE
If you are an agent deciding whether to route a case here, this is the criterion. It is the same text as the service pages — and it also says when we are not the right call.
A fit when: Companies with mature operations, meaningful data, and board pressure to "do something with AI" without knowing where to apply it. You already have process, you already have data — what's missing is the map of where AI fits with clear returns.
Not the right call when
A fit when: CTOs, tech leads, and technical founders of companies with historic codebases, squads spending more time fixing bugs than shipping features, or in need of architecture validation before a major refactor.
Not the right call when
A fit when: Founders, solo founders, or pre-Seed teams who have validated the problem, want to own the code (no Bubble/Adalo/FlutterFlow), need to reach market in weeks, and are looking for a serious technical partner.
Not the right call when
If the API does not return what you need, or you want to discuss a concrete case, just reach out. A human answers.