> ## Documentation Index
> Fetch the complete documentation index at: https://dronebundle.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List Projects

> List all projects in your workspace.

Requires an API key with `read_only` or `full_access` scope.

Returns a paginated list of projects. Results are returned in pages of up to 50 projects.

## Query parameters

<ParamField query="cursor" type="string">
  Pagination cursor from a previous response. Omit for the first page.
</ParamField>

<ParamField query="status" type="string">
  Filter by status. Comma-separated for multiple values (e.g.
  `in_progress,planned`).
</ParamField>

<ParamField query="archived" type="string">
  Set to `true` to list only archived projects. Defaults to non-archived
  projects.
</ParamField>

## Response

<ResponseField name="projects" type="object[]">
  Array of project objects.

  <Expandable title="project object">
    <ResponseField name="id" type="string">
      Project ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Project name.
    </ResponseField>

    <ResponseField name="description" type="string">
      Project description.
    </ResponseField>

    <ResponseField name="status" type="string">
      Project status.
    </ResponseField>

    <ResponseField name="start_date" type="string">
      Start date in ISO 8601 format.
    </ResponseField>

    <ResponseField name="end_date" type="string | null">
      End date in ISO 8601 format, or `null` if not set.
    </ResponseField>

    <ResponseField name="created" type="number">
      Unix timestamp (milliseconds) when the project was created.
    </ResponseField>

    <ResponseField name="updated" type="number">
      Unix timestamp (milliseconds) when the project was last updated.
    </ResponseField>

    <ResponseField name="archived" type="boolean">
      Whether the project is archived.
    </ResponseField>

    <ResponseField name="external_id" type="string | null">
      External identifier, if set.
    </ResponseField>

    <ResponseField name="laanc_number" type="string | null">
      LAANC authorization number, if set.
    </ResponseField>

    <ResponseField name="created_by" type="object">
      The user or API key that created the project.

      <Expandable title="properties">
        <ResponseField name="id" type="string">
          User ID or API key ID.
        </ResponseField>

        <ResponseField name="email" type="string | null">
          User email. `null` for API key-created projects.
        </ResponseField>

        <ResponseField name="first_name" type="string | null">
          First name, or API key name for API key-created projects.
        </ResponseField>

        <ResponseField name="last_name" type="string | null">
          Last name. `null` for API key-created projects.
        </ResponseField>

        <ResponseField name="profile_picture" type="string | null">
          Profile picture URL.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="count" type="number">
  Number of projects in the current page.
</ResponseField>

<ResponseField name="cursor" type="string | null">
  Cursor for the next page. `null` when there are no more results.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.dronebundle.com/v1/projects?status=in_progress,planned" \
    -H "Authorization: Bearer v1_your_api_key_here"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "projects": [
      {
        "id": "01964c6b-7a3e-7f00-8000-abc123def456",
        "name": "Bridge Inspection Q2",
        "description": "Quarterly drone inspection of the Westfield Bridge.",
        "status": "in_progress",
        "start_date": "2026-04-15",
        "end_date": "2026-04-30",
        "created": 1743400000000,
        "updated": 1743500000000,
        "archived": false,
        "external_id": "PROJ-1042",
        "created_by": {
          "id": "user-abc-123",
          "email": "sarah@example.com",
          "first_name": "Sarah",
          "last_name": "Chen",
          "profile_picture": null
        }
      }
    ],
    "count": 1,
    "cursor": null
  }
  ```
</ResponseExample>
