# Málstaður API

Icelandic language services from Miðeind: grammar correction (Málfríður), speech recognition (Hreimur) and translation (Erlendur).

**Authentication.** Send an API key in the `x-api-key` header. Keys are created by an organization administrator at `https://malstadur.is/hopar/forritaskil` and carry scopes (`grammar`, `asr`, `translation`); a missing scope returns `403`. The organization must be on a pay-as-you-go plan.

**Tasks.** `POST /v1/grammar` and `POST /v1/translate` return their result directly. Every other operation creates a task: the `POST` returns a `taskId`, poll the matching `GET …/{id}` every 1–2 seconds until `status` is `completed` or `failed`.

**Errors** are JSON with an `error` string; `400` responses add `details` naming the offending field.

**Machine-readable documentation.** `GET /openapi.external.json` is this specification, `GET /llms.txt` is a short overview for AI agents, and `GET /llms-full.txt` is the complete reference as Markdown.

**Compatibility.** Within v1 fields are only added, never removed or renamed. String fields that look like enums are open sets; ignore values you do not recognize.

## Reference

- Base URL: https://api.malstadur.is
- OpenAPI 3.1 specification: https://api.malstadur.is/openapi.external.json
- Full reference as Markdown: https://api.malstadur.is/llms-full.txt
- Interactive reference: https://api.malstadur.is/

## Endpoints

- GET /v1/asr/tasks — Get all ASR tasks
- POST /v1/asr/tasks — Create ASR task
- GET /v1/asr/tasks/{id} — Get ASR task status
- POST /v1/grammar — Correct grammar
- POST /v1/translate — Translate text
- GET /v1/translate/glossaries — Get all glossaries
- GET /v1/translate/glossaries/{id} — Get glossary by ID
- POST /v1/translate/segments — Create segment translation task
- GET /v1/translate/segments/{id} — Get segment translation task status
- GET /v1/translate/tasks — List all translation tasks
- POST /v1/translate/text — Create text translation task
- GET /v1/translate/text/{id} — Get text translation task status
- POST /v1/uploads/presign — Get a presigned URL for uploading a file
