Projects

Projects are containers that group together your journeys, agents, schedules, and other resources. They are simple organizational buckets with no behavior of their own.

Overview

A project is an organizational bucket. It groups journeys, agents, schedules, and other resources together. Projects have no behavior of their own. They exist so you can scope your work in whatever way makes sense for your team: by environment (staging, production), by application, by team, or however you prefer.

Every agent must belong to a project. When you create a journey or a schedule, you assign it to a project. The project's health board gives you an at-a-glance view of all journeys and their current pass/fail state.

POST /api/v1/projects

Create a new project

Parameters

ParameterTypeInRequiredDescription
namestringbodyYesProject name
descriptionstringbodyNoProject description

Status Codes

CodeDescription
201Project created
400Validation error
401Unauthorized

Response Body

{
  "id": "660e8400-e29b-41d4-a716-446655440000",
  "tenant_id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "My Web App",
  "description": "Testing the checkout flow",
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-01-15T10:30:00Z"
}
POST /api/v1/projects
cURL
Response
GET /api/v1/projects

List projects

Parameters

ParameterTypeInRequiredDescription
limitintegerqueryNoNumber of results to return (default: 20)
cursoruuidqueryNoCursor for pagination

Status Codes

CodeDescription
200OK
401Unauthorized

Response Body

{
  "projects": [
    {
      "id": "660e8400-e29b-41d4-a716-446655440000",
      "tenant_id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "My Web App",
      "description": "Testing the checkout flow",
      "created_at": "2025-01-15T10:30:00Z",
      "updated_at": "2025-01-15T10:30:00Z"
    }
  ],
  "next_cursor": "770e8400-e29b-41d4-a716-446655440000"
}
GET /api/v1/projects
cURL
Response
GET /api/v1/projects/{id}

Get project by ID

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID

Status Codes

CodeDescription
200OK
400Invalid UUID
401Unauthorized
404Project not found

Response Body

{
  "id": "660e8400-e29b-41d4-a716-446655440000",
  "tenant_id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "My Web App",
  "description": "Testing the checkout flow",
  "created_at": "2025-01-15T10:30:00Z",
  "updated_at": "2025-01-15T10:30:00Z"
}
GET /api/v1/projects/{id}
cURL
Response
PATCH /api/v1/projects/{id}

Update a project

Update project name and/or description. All fields optional.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID
namestringbodyNoNew project name
descriptionstringbodyNoNew project description
PATCH /api/v1/projects/{id}
cURL
Response
DELETE /api/v1/projects/{id}

Delete a project

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID

Status Codes

CodeDescription
204Project deleted
400Invalid UUID
401Unauthorized
404Project not found
DELETE /api/v1/projects/{id}
cURL
Response
PUT /api/v1/projects/{id}/webhook

Set project webhook

Configures a per-project webhook URL. Notifications for test runs and site discoveries in this project will be sent here instead of the global webhook.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID
urlstringbodyYesWebhook URL (e.g. Slack Incoming Webhook)
secretstringbodyNoOptional HMAC signing secret

Status Codes

CodeDescription
204Webhook configured
400Validation error
401Unauthorized
404Project not found
PUT /api/v1/projects/{id}/webhook
cURL
Response
GET /api/v1/projects/{id}/webhook

Get project webhook

Returns whether the project has a webhook configured and its URL. The secret is never returned.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID

Status Codes

CodeDescription
200OK
400Invalid UUID
401Unauthorized
404Project not found

Response Body

{
  "has_webhook": true,
  "url": "https://hooks.slack.com/services/T.../B.../xxx"
}
GET /api/v1/projects/{id}/webhook
cURL
Response
DELETE /api/v1/projects/{id}/webhook

Delete project webhook

Removes the per-project webhook. Notifications will fall back to the global webhook if configured.

Parameters

ParameterTypeInRequiredDescription
iduuidpathYesProject ID

Status Codes

CodeDescription
204Webhook removed
400Invalid UUID
401Unauthorized
404Project not found
DELETE /api/v1/projects/{id}/webhook
cURL
Response