Skip to main content

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:

ScopeWhat it allows
qa:writeSubmit 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:readRead a result, a change report, the run list, a stored report and its files, the profiles and the month's usage.
lqa:write, lqa:readCreate, submit and read LQA scorecards.
eval:write, eval:readStart and read engine evaluations.
webhooks:manageRegister 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_..." \
-F "[email protected]" -F "sourceLang=en" -F "targetLang=tr"
# -> {"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_..." \
-F "[email protected]" -F "profile=northwind_en_tr"

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:

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.