Skip to content
Getting started

Quickstart

From a read key to your first answer, in three calls.

Get a read key

Every request carries an organization read key as Authorization: Bearer sqly_ro_…. A read key is organization-wide (every project), created by an organization admin in Settings → API keys, and expires after 30, 60, 90, 180 days as chosen at creation. There is no renewal: create a new key and revoke the old one. Project ingest keys (sqly_…) are refused with wrong_key_type.

List the organization's projects

List the organization’s projects. The projects of the key’s organization, oldest first. Start here: every other route takes a project id from this list. Cheap.

curl "https://app.squally.dev/api/v1/projects" \
-H "Authorization: Bearer $SQUALLY_API_KEY"

The answer looks like this (invented data):

{
"projects": [
{
"id": "3f7c2a91-5b8e-4d0a-9c61-2e4b7f0d8a15",
"name": "storefront-web",
"stableBranch": "main",
"createdAt": "2026-06-02T09:14:00.000Z"
},
{
"id": "a8d4e1c7-6f20-4b93-8e5a-1c7d3b9f0e42",
"name": "admin-console",
"stableBranch": "develop",
"createdAt": "2026-07-18T13:40:00.000Z"
}
]
}

Ask about one project - here, its runs

Runs in a period, newest first - one row per logical run (a sharded CI run is one row). Filter by branch, commit SHA prefix or outcome; page with the cursors. Cheap to moderate: one bounded scan.

curl "https://app.squally.dev/api/v1/projects/$PROJECT/runs" \
-H "Authorization: Bearer $SQUALLY_API_KEY"

Next: Conventions for errors and retries, and the API reference for every endpoint.