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

# Projects

> The unit everything in Hookie belongs to: what a project holds, the Default project, and who can create, rename and delete one.

A **project** is the unit everything in Hookie belongs to. Endpoints, ingest keys, datasets and their records, rules, destinations and their deliveries, database sources, AI triggers, cron and WebSocket triggers, workflows, the customer portal and Data API keys each belong to exactly one project.

A project lives in a **workspace**, which is your account. The workspace holds the plan and billing, API keys, connected agents, the network allowlist and the audit log. Use projects to keep apart what should not see each other's events: staging and production, say, or one customer's pipeline and another's.

## What stays inside a project

* **An event fans out only inside its project.** A record is sent to its own project's destinations, starts its own project's workflows and AI triggers, and appears on its own project's live stream.
* **Rules see only their project's events.** A rule never routes, reshapes or stores an event sent to another project.
* **Credentials are pinned to one project.** An ingest key sends into, and streams from, its own project only, and a Data API key reads its own project's datasets. An endpoint's URL names its project.
* **Datasets are per project.** Two projects can each have an `orders` dataset, and they are two different datasets.

Plan limits are the exception: most are counted across the whole workspace. See [Limits in a project](#limits-in-a-project).

## The Default project

Every workspace is created with a project called **Default**, whose slug is `default`. It starts empty: add an endpoint to it, or create projects of your own and leave it alone. The Default project cannot be deleted, so a workspace always has somewhere for events to land.

The admin API's top-level routes, such as `/admin/api/rules`, are shortcuts to the Default project. Everywhere else, name the project: `/admin/api/projects/{project_id}/…`.

## Create a project

Open **Projects** and choose **Create a project**. Give it a **Name** (up to 80 characters) and pick an option under **Start with**:

| Choice | What you get |
| - | - |
| **Endpoints — one endpoint, ready to receive events** | The project and one endpoint, named after the project with "endpoint" added (`Orders endpoint` for a project named `Orders`), that stores into the dataset `default`. The project opens on its **Endpoints** tab with that endpoint's URL and **Send test event** in view. |
| **AI trigger — an empty project, for running a model against events** | The project, with nothing in it yet. It opens on **Overview**. |

The choice only decides what the project starts with: either kind can have endpoints, AI triggers and workflows added later. It is shown as the project's **Type**, **Endpoints** or **AI trigger**, on **Home**, in the **Projects** list and in the project's **Settings**. The API and the MCP tools keep the stored values `webhook` and `ai_trigger`.

Only owners and admins can create projects. Over the API, send `POST /admin/api/projects` with `{"name": "Orders", "type": "webhook"}`, or `"type": "ai_trigger"`. A connected agent with `hookie:manage` uses `create_project`. Hookie does not limit how many projects a workspace has.

## The project slug

Hookie makes a slug from the name, with a short random suffix, such as `orders-x7k2qa`. It is the second segment of every endpoint URL in the project:

```http theme={"dark"}
https://app.hookie.ai/{workspace}/{project}/{webhook}
```

Renaming a project keeps its slug, so no sender needs a new URL. Owners and admins rename a project in its **Settings**, with the pencil icon (**Rename project**).

## Project settings

A project's **Settings** tab holds:

* its **Name**, **Slug** and **Type**;
* **Configuration**: **Export JSON**, **Export YAML**, **Import configuration (JSON)** and **Clone project**. These copy the project's endpoints, rules, destinations, workflows, triggers and record views, but never its secrets, keys or endpoint URLs. See [Export, import and clone a project](/api-reference#export-import-and-clone-a-project);
* the project's [customer portal](/customer-portal) and its [Data API](/data-api);
* **Delete this project**.

A project can also carry its own IP allowlist, set over the API with `ip_allowlist` on `PATCH /admin/api/projects/{project_id}`. Ingest enforces it together with the endpoint's or ingest key's own list and the workspace's: a request must pass every list that is set.

## Delete a project

Only the workspace owner can delete a project. Choose **Delete project** in its **Settings** and type the project's name to confirm.

Deleting removes the project's configuration: its endpoints, ingest keys, rules, destinations, sources, triggers, workflows, portal and Data API keys. Any workflow run still going is stopped. What the project received is kept as history: its records, raw submissions and deliveries stay, no longer belonging to any project, until your plan's retention window prunes them. To delete data itself, see [Delete, export and close](/data-deletion).

## Limits in a project

| Limit | Counted | Free | Pro | Team |
| - | - | - | - | - |
| Endpoints, versions included | per project | 10 | 10 | 10 |
| Cron triggers | per project | 10 | 10 | 10 |
| WebSocket triggers | per project | 5 | 5 | 5 |
| Destinations | per workspace | 1 | 10 | 25 |
| Database sources | per workspace | 0 | 3 | 10 |

The monthly event, delivery and AI quotas are counted per workspace too. [Limits and plans](/limits-and-plans) has every number.

## Who can do what

* Everyone in a workspace can read every project.
* Owners, admins and developers create and change what is inside a project: endpoints, ingest keys, rules, destinations, workflows, sources and AI triggers.
* Owners and admins create and rename projects, and manage cron and WebSocket triggers.
* Only the owner deletes a project.

See [Roles, API keys and connected agents](/roles-and-agents).
