---
title: "List projects"
method: GET
path: "/projects"
tags: ["Projects"]
---

# List projects

`GET /projects`

## Request

- Base URL: `https://api.propertypixel.app/v1`
- URL: `https://api.propertypixel.app/v1/projects`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://llflgtovnkrsjqydycyu.supabase.co/auth/v1/oauth/authorize`, token URL `https://llflgtovnkrsjqydycyu.supabase.co/auth/v1/oauth/token`)

List the property projects in the connected workspace, newest first by default. Each project groups the photos of one listing. Use `search` to find a project by name or address before asking the user for an ID. Returns project IDs, photo counts, a cover image and a Studio link; page with `next_cursor`.

Works with view-only access.

## Query parameters

- `search` string: Case-insensitive match on project name or address.
- `sort` 'newest' | 'oldest' | 'name_asc' | 'name_desc': Sort order.
- `cursor` string: Opaque cursor from a previous page's next_cursor.
- `limit` integer: Page size (1–100).

## Response `200`

List projects

- object
  - `data` Project[], required
    - `object` 'project', required
    - `id` string, uuid, required
    - `name` string, required
    - `address` string, nullable, required
    - `property_type` string, nullable, required
    - `photo_count` integer, required
    - `completed_job_count` integer, required
    - `cover` MediaUrl, required
      - `url` string, uri, required
      - `expires_at` string, date-time, required: Signed URL expiry (about 1 hour). Re-fetch for a fresh URL.
    - `studio_url` string, uri, required: Open this project in the PropertyPixel Studio.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, nullable, required
  - `next_cursor` string, nullable, required

## Other responses

- `400`: The request is invalid. Codes: `validation_failed`.
- `401`: Missing, invalid or revoked credential. Codes: `unauthorized`.
- `403`: The credential can't do this. View-only connections get forbidden_scope on writes. Codes: `forbidden_scope`, `forbidden`.
- `404`: The resource doesn't exist in this workspace. Codes: `not_found`.
- `429`: Too many requests for this connection. Codes: `rate_limited`.
- `500`: Something failed on our side. Retry later. Codes: `internal`.

---

[API](https://skmtc.dev/propertypixel/apis/propertypixel-api.md) · [All operations](https://skmtc.dev/propertypixel/apis/propertypixel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/propertypixel/apis/propertypixel-api/revisions/8f7baef701cc?raw)
