The REST API
Talk to the QA engine from your own systems: the QA adapter for a check, the LQA API for a scored review, Eval for an engine comparison. Webhooks tell your system when a job is done instead of polling. Calls authenticate with a workspace API key sent as a bearer token. This page shows the shape of a call. The API guide explains each call with its fields, limits and errors. The API reference lists every endpoint with its request and response schema.
Keys
A workspace admin issues keys in Settings, Developer, where the webhooks are too. API keys and webhooks are available on Team and above. A key looks like snah_..., binds its own workspace so a caller only ever sees its own runs, and carries scopes:
| Scope | What it allows |
|---|---|
qa:write | Submit a check or a batch of segments, run a file into a report, compare two versions, mark findings fixed or ignored, make or revoke a share link. |
qa:read | Read a result, a change report, the run list, a stored report and its files, the profiles and the month's usage. |
lqa:write, lqa:read | Create, submit and read LQA scorecards. |
eval:write, eval:read | Start and read engine evaluations. |
webhooks:manage | Register and manage outbound webhooks. |
The base URL is https://app.stillneedsahuman.com.
Submit a check, then poll it
Submit the file, get a checkId back, then poll it until status is completed or failed. Your file is never modified: only findings come back.
curl -X POST https://app.stillneedsahuman.com/qa-adapter/v1/check \
-H "Authorization: Bearer snah_..." \
# -> {"checkId":"ww_ab12...","status":"pending"}
curl https://app.stillneedsahuman.com/qa-adapter/v1/check/ww_ab12... \
-H "Authorization: Bearer snah_..."
# -> {"checkId":"ww_ab12...","status":"completed","errors":[...],"qualityScore":97.5}
Run a file into a full report
POST /qa-adapter/v1/runs runs a file the way the app does and gives you a report you can list, download (HTML, Excel, CSV, JSON, JUnit or SARIF), decide on, share or delete, as the Reports page does.
curl -X POST https://app.stillneedsahuman.com/qa-adapter/v1/runs \
-H "Authorization: Bearer snah_..." \
curl -o report.xlsx \
"https://app.stillneedsahuman.com/qa-adapter/v1/reports/a1b2c3d4e5f6/download?format=xlsx" \
-H "Authorization: Bearer snah_..."
To check files on every pull request and fail the build on the findings you choose, see CI pipelines.
Compare two versions
POST /qa-adapter/v1/compare with an earlier and an edited version of the same file answers a change report: which target segments were edited, added or removed. GET /qa-adapter/v1/compare/{compareId} reads it back. Compare two versions.
Webhooks
Register a webhook with a key that holds webhooks:manage and your system is told when a run finishes (run.completed), a check completes (qa.completed), a scorecard is finalized (lqa.finalized) or a change report finishes (compare.completed). Deliveries are signed with your workspace's own secret and carry a timestamp; verify both, as Webhooks shows.
Limits
Each workspace has a rate limit per minute for writes and a higher one for reads; the numbers are in Rates and ceilings. A 429 answer carries Retry-After. Uploads take the same formats and the same 200 MB ceiling as the app.
The result and the score
The result the API returns is the result of the rules, so a provider outage never turns a clean file into a failed delivery; the AI status is reported beside it. The score is the report's own. If you compute your own score from the findings, use the report's weights or the two numbers will disagree.
The guide and the reference
The API guide, a page per part of the API:
- API keys and authentication: the Bearer token, the scopes, the base URL and workspaces.
- QA checks, runs and reports: a check, a full report, decisions, share links and version compare.
- LQA API and Eval API, for the workspaces that have them.
- Rates and ceilings, Term lists and Status codes and webhooks.
The API reference renders the OpenAPI document: every endpoint with its fields, its schemas and its answers, and a Try it panel that calls the API with the key you paste. To generate a client, fetch the document itself from https://app.stillneedsahuman.com/openapi.json with your key as a Bearer token. Signed in, you can open it in the browser too. These pages and the document are for signed-in people and API keys only: the API documentation lives here and nowhere else.