# Elenjical Developer Resources

Source: https://www.elenjical.com/developers

Read-only, unauthenticated access to everything on this site. No API key, sandbox or write API: Elenjical is a consultancy, not a software product.

## Start here

- [llms.txt](https://www.elenjical.com/llms.txt): what the company does, when to use it, every page worth reading
- [llms-full.txt](https://www.elenjical.com/llms-full.txt): the whole site as one Markdown document
- [openapi.json](https://www.elenjical.com/openapi.json): OpenAPI 3.1 for the endpoints below, with operation IDs and typed schemas
- [sitemap.xml](https://www.elenjical.com/sitemap.xml) · [robots.txt](https://www.elenjical.com/robots.txt)

## Every page as Markdown

Send `Accept: text/markdown` to any public URL, or append `.md` to the path. Responses carry `Vary: Accept`; unsatisfiable Accept returns 406; unknown paths return a Markdown 404.

## Endpoints

- **POST /api/search** - JSON `{"q":"..."}`; up to 8 results with site-relative URLs. 30 requests/min per IP.
- **GET /api/search** - index status (configured, chunk count, last indexed).
- **POST /api/chat** - JSON `{"messages":[{"role":"user","content":"..."}]}`; streamed plain-text answer citing [n]; sources in the base64 `X-Sources` header. 10 requests/min per IP.

## Errors

Every /api error is JSON: `{"error": "<message>", "code": "<stable code>", "hint": "<what to do>"}`. 429 carries `Retry-After`. Unknown /api paths return a JSON 404.

## Contact

Engagements are scoped with people: info@elenjical.com · [Contact page](https://www.elenjical.com/contact)
