Keys
Squally has two keys - one sends test results, the other reads them.
Squally uses two kinds of key, each for one job:
| Key | Starts with | Belongs to | Used by | For |
|---|---|---|---|---|
| Ingest key | sqly_ |
a project | squally-reporter | sending test results |
| Read key | sqly_ro_ |
an organization | the read API and the MCP server | reading results |
The ingest key
Section titled “The ingest key”Every project has one ingest key. Squally shows it once, when the project is created, and stores only a hash of it - it cannot be shown again. Put it straight into your CI secrets.
If it is lost or leaked, an organization admin generates a new one in the project’s settings. The new key is shown once, and the old one stops working immediately: CI jobs still using it send nothing until you update them, and their builds still pass.
Give it to the reporter
Section titled “Give it to the reporter”Set the key, for example as a CI secret:
SQUALLY_INGEST_KEY=your-project-ingest-keyThe reporter sends to https://app.squally.dev; set SQUALLY_INGEST_URL only
for another host (before squally-reporter 0.12.0 both variables were
required). Without the key it prints a warning and sends nothing; your tests
run as usual.
The reporter also accepts apiUrl and apiKey as options in
playwright.config.ts, and they win over the variables. Keep the key in the
environment anyway: Playwright’s json and blob reporters write your
resolved config, options included, into their output files.
Before squally-reporter 0.9.0 the variables were SQUALLY_API_KEY and
SQUALLY_API_URL. Both still work, with a deprecation warning in the CI log.
SQUALLY_API_URL is only used together with SQUALLY_API_KEY.
The wrong key
Section titled “The wrong key”| Where | Key given | What happens |
|---|---|---|
Reporter, SQUALLY_API_KEY |
a read key | The reporter refuses it: “SQUALLY_API_KEY holds a read key; set SQUALLY_INGEST_KEY to the project’s ingest key.” Nothing from the run is sent. |
Reporter, SQUALLY_INGEST_KEY or apiKey |
a read key | The reporter refuses it before sending anything: “SQUALLY_INGEST_KEY holds a read key (sqly_ro_…); reporting needs the project’s ingest key (Settings › Project › Ingest key). Nothing from this run will be sent.” A reporter before 0.12.0 sends it, and Squally answers 401 with the code read_api_key. |
| Read API | an ingest key | 401 with the code wrong_key_type. |
| MCP server | an ingest key | The server refuses to start and says that it needs a read key. |
A wrong or missing key never changes your test run’s exit code.
The read key
Section titled “The read key”A read key gives scripts, CI jobs and coding agents read access to every project of an organization, through the read API and the MCP server. Organization admins create read keys on the Standard and Pro plans - see Read keys.