API · Projects

A project is the container for events and API keys. Every endpoint on this page authenticates with a personal access token.

The project object

{
  "id": "5d1c0e7a-3f2b-4c8e-9a61-0d4f2b7c9e10",
  "account_id": "a8e3f1c2-7b4d-4e2a-9c5f-6d1b0e8a3f47",
  "name": "billing-service",
  "retention_days": 30,
  "last_purged_at": "0001-01-01T00:00:00Z",
  "last_purged_count": 0,
  "created_at": "2026-10-30T14:03:11.402Z",
  "updated_at": "2026-10-30T14:03:11.402Z"
}
Field Description
id Project ID (UUID).
account_id The account that owns the project. You need it for integrations.
name Display name, unique within the account.
retention_days How many days events are kept. New projects start at 30. 0 means no project limit, though your plan's retention cap still applies.
last_purged_at When retention last deleted events. Zero time if never.
last_purged_count How many events that purge deleted.
created_at, updated_at Timestamps.

List projects

GET /v1/projects

Returns every project you own. Projects other people have shared with you aren't included, but you can still fetch them by ID.

curl https://api.everscribe.io/v1/projects \
  -H "Authorization: Bearer $EVERSCRIBE_PAT"
{ "projects": [ { "id": "5d1c0e7a-...", "name": "billing-service", "...": "..." } ] }

Create a project

POST /v1/projects
Body field Required Description
name yes 1 to 100 bytes after trimming whitespace (fewer characters if the name isn't ASCII).

Returns 201 with {"project": {...}}.

curl -X POST https://api.everscribe.io/v1/projects \
  -H "Authorization: Bearer $EVERSCRIBE_PAT" \
  -H "Content-Type: application/json" \
  -d '{"name":"billing-service"}'
Status Body When
400 name is required / name must be 100 characters or fewer Bad name.
409 project name already taken You already have a project with this name.

Get a project

GET /v1/projects/{id}

Requires viewer. Returns {"project": {...}}, or 404 project not found.

curl https://api.everscribe.io/v1/projects/$PROJECT_ID \
  -H "Authorization: Bearer $EVERSCRIBE_PAT"

Rename a project

PUT /v1/projects/{id}

Requires admin. The name is the only field you can change.

Body field Required Description
name yes Same rules as on create.

Returns {"project": {...}} with the new name. Errors are the same as Create a project, plus 404 and 403.

curl -X PUT https://api.everscribe.io/v1/projects/$PROJECT_ID \
  -H "Authorization: Bearer $EVERSCRIBE_PAT" \
  -H "Content-Type: application/json" \
  -d '{"name":"billing"}'

Delete a project

DELETE /v1/projects/{id}

Requires admin. Returns 204 with no body. The project disappears from lists and lookups, and its API keys stop working right away: ingest with one of them returns 401.

curl -X DELETE https://api.everscribe.io/v1/projects/$PROJECT_ID \
  -H "Authorization: Bearer $EVERSCRIBE_PAT"