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

# List projects

`GET /v1/projects`

## Request

- Base URL: `https://serp-agent.com`
- URL: `https://serp-agent.com/v1/projects`
- Auth: HTTP bearer

All projects on the account, newest first, each with keyword/article/audit counts.

## Response `200`

The account's projects.

- ProjectList
  - `projects` Project[], required
    - `project_id` string, required
    - `url` string, uri, required
    - `name` string, required
    - `status` 'setup' | 'running' | 'completed' | 'paused', required: Lifecycle of the project's background processing.
    - `language` string, required
    - `country` string, required
    - `sandbox` boolean, required: True for projects created with a sandbox key (draft-only articles, trial budgets).
    - `access` 'active' | 'pending_payment' | 'sandbox', required: Billing gate: audits/articles require "active" or "sandbox". "pending_payment" projects return 402 on work endpoints.
    - `created_at` string, date-time, required
    - `counts` object: Present on list/detail responses.
      - `keywords` integer
      - `articles` integer
      - `audits` integer

## Other responses

- `401`: Missing, malformed, unknown, revoked, or expired API key. Codes: `unauthorized`, `key_revoked`, `key_expired`.
- `429`: Rate limit exceeded (600 requests/minute per API key). Honor `Retry-After`.

---

[API](https://skmtc.dev/serp-agent/apis/serp-agent-api.md) · [All operations](https://skmtc.dev/serp-agent/apis/serp-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/serp-agent/apis/serp-agent-api/revisions/438a943019ac?raw)
