This endpoint is organization-scoped and is not filtered by SQL project permissions. A restricted user may see project names they cannot query; turn scope can only narrow access, and SQL permissions are still enforced by the server.
string
required
Bearer token obtained from the authenticate endpoint.
Response
array
required
List of projects visible to the organization.
Show Project object
Show Project object
string
required
Unique identifier for the project.
string
required
Name of the project.
string | null
Optional description of the project’s contents.
string[] | null
List of tags associated with the project.
string | null
A presigned URL to the project’s thumbnail image, or
null if one can’t be signed. The URL is always returned for the canonical key without an existence check — fall back to a placeholder if the image 404s.string
required
Identifier of the member who created the project.
string
required
ISO 8601 timestamp when the project was created.
string
required
ISO 8601 timestamp when the project was last modified.
curl -X GET https://api.trellis.sh/v1/projects \
-H "Authorization: Bearer YOUR_TOKEN"
import requests
response = requests.get(
"https://api.trellis.sh/v1/projects",
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
projects = response.json()["projects"]
const response = await fetch("https://api.trellis.sh/v1/projects", {
headers: { Authorization: "Bearer YOUR_TOKEN" },
});
const { projects } = await response.json();
{
"projects": [
{
"id": "33333333-3333-4333-8333-333333333333",
"name": "Harbor District",
"description": "Development documents and media",
"tags": ["development", "active"],
"thumbnail_url": "https://storage.example/.../projects/33333333-3333-4333-8333-333333333333/thumbnail.webp?...",
"created_by": "44444444-4444-4444-8444-444444444444",
"created_at": "2026-07-01T09:00:00+00:00",
"updated_at": "2026-08-08T14:30:00+00:00"
}
]
}
{
"detail": "Invalid or expired token"
}