Changelog
Changes to the public API, newest first. Anything that would break an existing integration is called out explicitly.
2026-08-03
Releases now report the languages they actually shipped. No endpoint, parameter or response body changed — the languages array has the same shape, and the values in it are now correct.
GET /releases/{release_id}no longer lists languages a release does not contain. It previously returned the project’s languages as they are now, so a language added after a release was published appeared in that release’slanguageswith download URLs that returned404. It now returns the set captured when the release was published. If you were filtering the array by probing each URL, you can stop.is_base_languageis the base language as of publish, not as of now. Changing a project’s base language no longer relabels releases published before the change./r/latest/drops languages the newest release does not ship. Previously a language removed from a project kept being served fromlatestindefinitely, with the previous release’s content, because publishing only overwrote files and never removed them. A hard-codedlatest/{language}path for such a language now returns404instead of stale strings. Pinned release URLs are unaffected — they were always immutable.
2026-07-27
Documentation and response metadata. No endpoint, parameter or response body changed.
- The API description moved to OpenAPI 3.1. The reference now documents every response header, lists both environments as selectable servers, and carries realistic examples.
429responses are now JSON. They previously returned a plain-textToo Many Requestsbody, which was the only response that did not follow the documented{"error": "..."}shape. Clients matching on the body of a429should now expect{"error": "rate limit exceeded"}; clients branching on the status code — as recommended — are unaffected.- These developer docs were published at
docs.localeo.app.
Known limitations
- List responses carry no pagination metadata.
GET /releasesreturnsitemswith no total or page count, and because drafts are filtered out after a page is read, a short page does not reliably indicate the end of the collection. Pagination documents the reliable approach in the meantime. A fix is planned.