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

# Projects

> Read and create projects with the BidEngine Project API.

Projects are reached at `/rest/v1/project`. All requests need the headers described in [Authentication](/api-reference/authentication).

## List projects

Returns the projects belonging to your company.

```text theme={null}
GET /rest/v1/project
```

<ParamField query="select" default="*" type="string">
  Columns to return. Use `*` for all columns, or a comma-separated list such as `id,project_name` to reduce the payload.
</ParamField>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET "https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project?select=*" \
    -H "apikey: YOUR_API_KEY" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "X-API-Secret: YOUR_API_SECRET"
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch(
    'https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project?select=*',
    {
      headers: {
        apikey: process.env.BIDENGINE_API_KEY,
        Authorization: `Bearer ${process.env.BIDENGINE_API_KEY}`,
        'X-API-Secret': process.env.BIDENGINE_API_SECRET,
      },
    }
  );

  const projects = await res.json();
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.get(
      "https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project",
      params={"select": "*"},
      headers={
          "apikey": os.environ["BIDENGINE_API_KEY"],
          "Authorization": f"Bearer {os.environ['BIDENGINE_API_KEY']}",
          "X-API-Secret": os.environ["BIDENGINE_API_SECRET"],
      },
  )

  print(response.json())
  ```
</CodeGroup>

The response is a JSON array of project objects.

## Create a project

```text theme={null}
POST /rest/v1/project
```

<ParamField body="bid_id" type="string" required>
  UUID of the bid this project belongs to.
</ParamField>

<ParamField body="project_name" type="string" required>
  Human-readable name for the project.
</ParamField>

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project" \
    -H "apikey: YOUR_API_KEY" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "X-API-Secret: YOUR_API_SECRET" \
    -H "Content-Type: application/json" \
    -d '{
      "bid_id": "some-uuid-for-bid",
      "project_name": "New Kitchen Remodel"
    }'
  ```

  ```javascript JavaScript theme={null}
  const res = await fetch(
    'https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project',
    {
      method: 'POST',
      headers: {
        apikey: process.env.BIDENGINE_API_KEY,
        Authorization: `Bearer ${process.env.BIDENGINE_API_KEY}`,
        'X-API-Secret': process.env.BIDENGINE_API_SECRET,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        bid_id: 'some-uuid-for-bid',
        project_name: 'New Kitchen Remodel',
      }),
    }
  );
  ```

  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://fqtlkdttexdbenjqgdzg.supabase.co/rest/v1/project",
      headers={
          "apikey": os.environ["BIDENGINE_API_KEY"],
          "Authorization": f"Bearer {os.environ['BIDENGINE_API_KEY']}",
          "X-API-Secret": os.environ["BIDENGINE_API_SECRET"],
          "Content-Type": "application/json",
      },
      json={
          "bid_id": "some-uuid-for-bid",
          "project_name": "New Kitchen Remodel",
      },
  )
  ```
</CodeGroup>

<Note>
  `bid_id` must reference an existing bid. Posting a UUID that doesn't resolve will be rejected.
</Note>
