OwlMetry
API Reference

Projects

CRUD endpoints for managing projects — create, list, get, update, and delete projects within teams.

Create, list, get, update, and delete projects. Projects group related apps across platforms (e.g., a "MyApp" project containing iOS, Android, and web apps).

GET /v1/projects

List all projects the caller has access to.

Auth required: Yes (projects:read permission or JWT)

ParameterTypeDescription
team_idstringOptional. Filter to a specific team.
// Response (200)
{
  "projects": [
    {
      "id": "uuid",
      "team_id": "uuid",
      "name": "My App",
      "slug": "my-app",
      "created_at": "2024-01-01T00:00:00.000Z"
    }
  ]
}

GET /v1/projects/:id

Get a single project with its apps.

Auth required: Yes (projects:read permission or JWT)

// Response (200)
{
  "id": "uuid",
  "team_id": "uuid",
  "name": "My App",
  "slug": "my-app",
  "created_at": "2024-01-01T00:00:00.000Z",
  "apps": [
    {
      "id": "uuid",
      "team_id": "uuid",
      "project_id": "uuid",
      "name": "iOS App",
      "platform": "apple",
      "bundle_id": "com.example.myapp",
      "client_key": "owl_client_abc123...",
      "created_at": "2024-01-01T00:00:00.000Z"
    }
  ]
}

POST /v1/projects

Create a new project within a team.

Auth required: Yes (projects:write permission or JWT, admin role required)

// Request
{
  "team_id": "uuid",
  "name": "My App",
  "slug": "my-app"
}

// Response (201)
{
  "id": "uuid",
  "team_id": "uuid",
  "name": "My App",
  "slug": "my-app",
  "created_at": "2024-01-01T00:00:00.000Z"
}

Field reference

FieldTypeRequiredDescription
team_idstringYesThe team this project belongs to.
namestringYesDisplay name.
slugstringYesURL-friendly identifier. Must match ^[a-z0-9-]+$. Unique within a team.

Slug reuse: if a soft-deleted project exists with the same slug in the same team, it is hard-deleted to free the slug.

Returns 409 if an active project with the same slug already exists.

PATCH /v1/projects/:id

Update a project. Only the name field can be changed.

Auth required: Yes (projects:write permission or JWT, admin role required)

// Request
{
  "name": "Renamed Project"
}

// Response (200)
{
  "id": "uuid",
  "team_id": "uuid",
  "name": "Renamed Project",
  "slug": "my-app",
  "created_at": "2024-01-01T00:00:00.000Z"
}

DELETE /v1/projects/:id

Soft-delete a project and cascade to its apps, API keys, metric definitions, and funnel definitions.

Auth required: Yes (JWT only, admin role required. Agent keys receive 403.)

// Response (200)
{
  "deleted": true
}

Ready to get started?

Install the CLI and let your agent handle the rest.