# Projects & DSN keys > https://docs.errora.org/en/account/projects-and-keys A **project** is one application whose data you want kept together: its issues, logs, replays, monitors, metrics, profiles and feedback. ## Create a project **Projects → New project**: name and platform. ```bash curl -X POST "$ERRORA/api/v1/organizations/$ORG_ID/projects" \ -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \ -d '{"name":"Checkout API","platform":"python"}' ``` Platforms: `python`, `php`, `php-laravel`, `node`, `javascript`, `go`, `other`. The platform only drives the icon and the suggested snippet. The slug is derived from the name and is unique within the organization. ### How many projects? One per deployable service. Use **environments** (`production`, `staging`) inside a project rather than separate projects — filters work across environments, and a staging project that nobody watches just hides bugs. ## DSN keys Each project gets a key on creation: ```text https://@/ ``` - Create additional keys (labelled) to rotate without downtime: ship the new DSN, wait for traffic to move, then deactivate the old key. - Deactivating a key (`is_active: false`) makes ingestion with it fail `401` immediately. - The public key is not a secret in the "never expose it" sense — browser SDKs ship it — but anyone holding it can write events to your project. Rotate if it leaks somewhere that invites abuse. ```text GET /api/v1/organizations/{org_id}/projects/{project_id}/keys POST /api/v1/organizations/{org_id}/projects/{project_id}/keys ``` ## Project settings | Setting | Effect | | --- | --- | | Name / slug | Display and URLs | | Platform | Icon and setup snippet | | **Sample rate** | Fraction of *arriving* events that get stored (`1.0` keeps everything). Server-side cost control, independent of SDK sampling. | | **Repository** | The linked source repo, used by [AI auto-fix](/en/products/ai-autofix) — see [Integrations](/en/products/integrations) | ```text GET/PATCH/DELETE /api/v1/organizations/{org_id}/projects/{project_id} GET /api/v1/organizations/{org_id}/projects/stats ``` Project settings require the **`project:manage`** capability. ## Deleting a project Deletes every event, issue, log, replay, monitor, profile, metric and feedback item it owns. Irreversible — export anything you need first. ## Troubleshooting | Symptom | Cause / fix | | --- | --- | | `401` from ingestion | Wrong public key, or the key was deactivated | | `404` from ingestion | Wrong project id in the DSN path | | Events accepted but missing | Sample rate below `1.0`, or retention already purged them | | Wrong project got the events | Two DSNs in your environment files — check the one actually loaded at runtime |