Developer guides
How to build a client against the LFF Assessment API — from signing a user in to rendering a fourteen-form assessment battery in two languages.
React
A complete integration: auth, schema-driven rendering, all nine question types, conditional logic and submission.
Vue planned
The same walkthrough in Vue 3. The concepts transfer directly — only the rendering layer differs.
Flutter planned
For a mobile client. The schema and payload rules are identical.
What this API is
The assessment battery is data, not code. Forms, sections, questions, choice lists and their translations all live in the database, and the API hands your client a schema describing what to render. An administrator can add a fifteenth form, or a third language, without anyone shipping a release.
The practical consequence for you: do not hard-code forms. Write one renderer per question type — there are nine — and every form that exists now or later is covered.
The essentials
| Thing | Value |
|---|---|
| Base URL | https://api.sortingout.theoslogion.org/v1 |
| Auth | Bearer token (Laravel Sanctum) |
| Body format | JSON, camelCase (snake_case also accepted on input) |
| Errors | RFC 9457 application/problem+json |
| Languages | en, yo |
| Rate limit | 120 req/min authenticated; auth/* is 10/min |
There is no /api in the path. The host already
says api, so the version is the whole prefix —
/v1/auth/login, not /api/v1/auth/login.
Three endpoints need no token
POST /v1/auth/registerPOST /v1/auth/loginGET /v1/option-sets/{code}— public so a signup form can render its dropdowns before an account exists to authenticate with
Everything else requires Authorization: Bearer <token>.
Try it without writing code
The OpenAPI reference lists every endpoint with
request and response schemas, and lets you call them from the browser. A
Postman collection with pre-filled requests and real captured examples lives
in the repository under postman/.