Skip to content

List the organization's projects

GET
/projects
curl --request GET \
--url https://app.squally.dev/api/v1/projects \
--header 'Authorization: Bearer <token>'

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

OK

Media typeapplication/json
object
projects
required
Array<object>
object
id
required
string
name
required
string
stableBranch
required
string
createdAt
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/
Examplegenerated
{
"projects": [
{
"id": "example",
"name": "example",
"stableBranch": "example",
"createdAt": "2026-04-15T12:00:00Z"
}
]
}
Squally-Key-Expires-At
string format: date-time

When the read key expires (ISO-8601). Present only from 7 days before expiry.

Error: invalid_key, key_expired, key_revoked, missing_key, wrong_key_type

Media typeapplication/json
object
error
required

A sentence for a human. May be reworded.

string
code
required

Stable slug - match on this, not on the sentence.

string
Allowed values: missing_key invalid_key wrong_key_type key_revoked key_expired tier_too_low project_not_found invalid_period rate_limited test_not_found ambiguous_test internal_error invalid_parameter run_not_found error_not_found
code
required
Allowed values: invalid_key key_expired key_revoked missing_key wrong_key_type
Example
{
"code": "invalid_key"
}

Error: tier_too_low

Media typeapplication/json
object
error
required

A sentence for a human. May be reworded.

string
code
required

Stable slug - match on this, not on the sentence.

string
Allowed values: missing_key invalid_key wrong_key_type key_revoked key_expired tier_too_low project_not_found invalid_period rate_limited test_not_found ambiguous_test internal_error invalid_parameter run_not_found error_not_found
code
required
Allowed values: tier_too_low
Example
{
"code": "tier_too_low"
}

Rate limited by the edge firewall. No JSON body and no Retry-After - back off for at least 60 s.

Error: internal_error

Media typeapplication/json
object
error
required

A sentence for a human. May be reworded.

string
code
required

Stable slug - match on this, not on the sentence.

string
Allowed values: missing_key invalid_key wrong_key_type key_revoked key_expired tier_too_low project_not_found invalid_period rate_limited test_not_found ambiguous_test internal_error invalid_parameter run_not_found error_not_found
code
required
Allowed values: internal_error
Example
{
"code": "internal_error"
}