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

# Projects

> Projects group your agents within an organization.

A **project** groups agents within your organization — typically one project
per product, environment, or team. All management endpoints accept a Bearer
token from a login session or your organization API key
(see [Authentication](/api/authentication)).

***

## Create a project

```bash cURL theme={"dark"}
curl -X POST "https://api-v3.aui.io/apollo-api/management/v1/projects" \
  -H "Content-Type: application/json" \
  -H "x-organization-api-key: <org_api_key>" \
  -d '{ "name": "Support agents" }'
```

### POST `/management/v1/projects`

<ParamField body="name" type="string" required>
  Project name — 2 to 100 characters, and not only whitespace.
</ParamField>

<ResponseExample>
  ```json 201 theme={"dark"}
  {
    "id": "5f2b8c1a9d4e3f0012ab34cd",
    "name": "Support agents",
    "created_at": "2026-07-13T14:02:11Z",
    "updated_at": "2026-07-13T14:02:11Z"
  }
  ```
</ResponseExample>

***

## List projects

```bash cURL theme={"dark"}
curl "https://api-v3.aui.io/apollo-api/management/v1/projects?page[size]=20" \
  -H "x-organization-api-key: <org_api_key>"
```

### GET `/management/v1/projects`

Returns your organization's projects as a paginated list (see
[Pagination](#pagination) below).

***

## Get a project

### GET `/management/v1/projects/{projectId}`

Returns one project.

## Delete a project

### DELETE `/management/v1/projects/{projectId}`

Deletes a project; it disappears from listings immediately. Returns `204`.

## Project usage

### GET `/management/v1/projects/{projectId}/usage`

Usage metrics aggregated across every agent in the project — see
[Usage](/api/management/usage).

***

## Pagination

Every list endpoint on the management surface shares one cursor-based
envelope:

#### Query parameters

<ParamField query="page[size]" type="integer">
  Items per page.
</ParamField>

<ParamField query="page[after]" type="string">
  Cursor from a previous response's `meta.after_cursor` — fetches the next
  page. Mutually exclusive with `page[before]`.
</ParamField>

<ParamField query="page[before]" type="string">
  Cursor from `meta.before_cursor` — fetches the previous page.
</ParamField>

<ParamField query="sort_by" type="string">
  Field to sort by.
</ParamField>

<ParamField query="sort_order" type="string">
  `asc` or `desc`.
</ParamField>

#### Response envelope

```json theme={"dark"}
{
  "results": [ ... ],
  "meta": {
    "has_more": true,
    "after_cursor": "b2Zmc2V0PTIw",
    "before_cursor": null
  },
  "links": {
    "next": "/management/v1/projects?page[size]=20&page[after]=b2Zmc2V0PTIw",
    "prev": null
  }
}
```

Always echo back the cursor you were given (`meta.after_cursor` /
`meta.before_cursor` or the ready-made `links`) rather than constructing your
own.
