Project
Each project represents a logical grouping of builds executed on Percy. Use our REST API to manage your projects and fetch the project details in real-time.
Get project details
Retrieves the details of the project associated with the given token. If no token is provided, this API returns details of all public projects.
Request parameters
No parameters required.
Curl Request
curl --request GET \
--url https://percy.io/api/v1/projects \
--header 'Authorization: Token token=<PROJECT_TOKEN>'
Response attributes 200 OK JSON
Response
{
"data": {
"type": "projects",
"id": "4xxxxxx",
"attributes": {
"name": "test-auto",
"slug": "test-auto",
"type": "automate",
"full-slug": "9xxxxxxxx/test-auto",
"is-enabled": true,
"diff-base": "automatic",
"auto-approve-branch-filter": "",
"approval-required-branch-filter": "*",
"default-base-branch": "master",
"created-at": "2020-12-25T11:24:41.000Z",
"updated-at": "2023-10-03T10:17:51.000Z",
"publicly-readable": false,
"is-demo": false,
"is-auto-browser-upgrade": true,
"wait-for-base-build": false,
"current-period-usage": 5,
"screenshot-limit": null,
"workflow": "git",
"intelli-ignore-enabled": false,
"intelli-ignore-diff-ignore-percentage": 0,
"default-ignore-diff-ignore-percentage": 0.2,
"diff-sensitivity-level": 2,
"delay-seconds": "3.0",
"visual-monitoring-urls-count": null,
"schedule": null,
"next-schedule-time": null,
"latest-build-stat": null,
"visual-monitoring-urls": [],
"vm-staging-base-url": null,
"vm-last-build-baseline": false,
"vm-diff-ignore-enabled": null,
"vm-diff-ignore-percentage": null,
"auth-type": null,
"auth-config-name": null,
"auth-params": null,
"sitemap-ids": null,
"cron": null,
"schedule-start": null,
"schedule-end": null,
"tag-ids": []
},
"links": {
"self": "/api/v1/projects/9xxxxxxxx/test-auto"
},
"relationships": {
"repo": {
"links": {
"related": "/api/v1/projects/9xxxxxxx/test-auto/repo"
},
"data": {
"type": "repos",
"id": "39xxxx"
}
},
"organization": {
"links": {
"related": "/api/v1/projects/9xxxxxxxx/test-auto/organization"
},
"data": {
"type": "organizations",
"id": "30xxx"
}
},
"builds": {
"links": {
"related": "/api/v1/builds?project_id=4xxxxxx"
}
},
"tokens": {
"links": {
"related": "/api/v1/projects/9xxxxxxxx/test-auto/tokens"
}
},
"browser-targets": {
"data": [
{
"type": "browser-targets",
"id": "6x"
}
]
},
"project-browser-targets": {
"data": [
{
"type": "project-browser-targets",
"id": "7xxxxxx"
}
]
},
"webhook-configs": {
"data": []
}
}
},
"included": [
{
"type": "repos",
"id": "39xxxx",
"attributes": {
"name": "example",
"slug": "browserstack/example",
"html-url": "https://github.com/browserstack/example",
"hostname": "github.com",
"source": "github"
},
"relationships": {
"version-control-integration": {
"links": {
"self": "/relationships/version-control-integration",
"related": "/version-control-integration"
},
"data": {
"type": "version-control-integrations",
"id": "49xx"
}
}
}
},
{
"type": "browser-targets",
"id": "60",
"attributes": {
"version-target": "121.0.6167.85",
"deprecation-period-start": null,
"deprecation-period-end": null
},
"relationships": {
"operating-system": {},
"browser-family": {
"data": {
"type": "browser-families",
"id": "2"
}
}
}
},
{
"type": "browser-families",
"id": "2",
"attributes": {
"name": "Chrome",
"slug": "chrome"
}
},
{
"type": "project-browser-targets",
"id": "74xxxxx",
"relationships": {
"browser-target": {
"data": {
"type": "browser-targets",
"id": "6x"
}
},
"project": {
"data": {
"type": "projects",
"id": "1xxxxx"
}
}
}
}
]
}
-
attributes Object
▶ SHOW VALUESDetails of test session.
-
name String
Name of the project.
-
slug String
Slug of the project.
-
type String
Web or App project.
-
full-slug String
Path of full slug.
-
is-enabled Boolean
Project is archieved or not.
-
diff-base String
(Can be ignored. Used for projects prior to 2019).
-
auto-approve-branch-filter String
Specifies the name of the branches for auto-approval.
-
approval-required-branch-fitler String
Specifies the name of the branches where manual approval is required.
-
default-base-branch String
Specifies the name of the default baseline branch.
-
updated-at Integer
Time stamp when the project was last updated.
-
publicly-readable Boolean
Specifies if the project is publicly viewable.
-
is-demo Boolean
Specifies if the project is a demo project.
-
is-auto-browser-upgrade Boolean
Specifies if the browser version is set to auto-upgrade.
-
wait-for-base-build Boolean
Specifies if the “wait for base build” option has been configured in the project settings.
-
current-period-usage Boolean
Specifies the current period usage for a project.
-
screenshot-limit Boolean
Specifies the screenshot limit for a project.
-
workflow Boolean
Specifies workflow that has been configured in the project settings.
-
diff-sensitivity-levels Integer
Specifies the diff-sensitivity-levels based on your project settings.
-
visual-monitoring-urls String
Specifies the URLs targetted for visual monitoring.
-
latest-build-stat String
Specifies the latest build stats.
-
vm-last-build-baseline String
Specifies the baseline for a monitoring project.
-
created-at Integer
Specifies the project creation time stamp.
-
-
links Object
▶ SHOW VALUESDetails of test session.
-
self String
Time stamp when the build was last updated.
-
-
relationships Object
▶ SHOW VALUESDetails of test session.
-
organisation Object
Specifies details of the org and the API endpoint.
-
repo Object
Specifies details of the repo and URL path for the API endpoint.
-
builds Object
Specifies API endpoint to fetch builds.
-
tokens Object
Specifies API endpoint to fetch the token.
-
browser-targets Object
Specifies browser-targets and respective IDs
-
project-browser-targets Object
Specifies project-browser-targets and respective IDs.
-
webhook-configs Object
Specifies on what events would we be notified, » project settings.
-
Create a project
Create a web or app project programmatically. Use this API to provision projects from your own tooling instead of creating them manually in the Percy dashboard.
Note: Authentication
This endpoint requires your BrowserStack username and access key passed through HTTP Basic auth. The project tokens shown in Project Settings are scoped to an existing project and cannot create a new one. The authenticating user must be a member, admin, or owner of the organization with project-creation rights.
Request parameters
Curl Request
curl --user "<BROWSERSTACK_USERNAME>:<BROWSERSTACK_ACCESS_KEY>" \
--request POST \
--url https://percy.io/api/v1/projects \
--header 'Content-Type: application/json' \
--data '{"data":{"attributes":{"name":"My Project","type":"web"}}}'
-
data* Object
▶ SHOW VALUESTop-level resource object for the project to create.
-
attributes* Object
▶ SHOW VALUESAttributes that define the project to create.
-
name* String
Name of the project to create.
-
type* String
Type of the project. Accepts
weborapp. -
slug String
Custom slug for the project. If omitted, Percy generates a slug from the name.
-
workflow String
Workflow configured for the project, such as
git. -
auto-approve-branch-filter String
Branch filter that specifies which branches are auto-approved.
-
ai-enabled Boolean
Specifies whether AI-powered features are enabled for the project.
-
tags Array
List of tags to associate with the project.
-
-
relationships Object
▶ SHOW VALUESRelationships to associate with the project, such as a linked repository.
-
repo Object
Repository relationship to link to the project.
-
-
Response attributes 201 Created JSON
Response
{
"data": {
"type": "projects",
"id": "4xxxxxx",
"attributes": {
"name": "My Project",
"slug": "my-project",
"type": "web",
"full-slug": "9xxxxxxxx/my-project",
"is-enabled": true,
"auto-approve-branch-filter": "",
"workflow": "git",
"ai-enabled": false,
"created-at": "2026-06-08T11:24:41.000Z",
"updated-at": "2026-06-08T11:24:41.000Z"
},
"links": {
"self": "/api/v1/projects/9xxxxxxxx/my-project"
},
"relationships": {
"organization": {
"links": {
"related": "/api/v1/projects/9xxxxxxxx/my-project/organization"
},
"data": {
"type": "organizations",
"id": "30xxx"
}
},
"builds": {
"links": {
"related": "/api/v1/builds?project_id=4xxxxxx"
}
},
"tokens": {
"links": {
"related": "/api/v1/projects/9xxxxxxxx/my-project/tokens"
}
}
}
}
}
The 201 Created response does not return the project token. To retrieve the write token, make a follow-up request to the tokens relationship link, /api/v1/projects/<full-slug>/tokens.
-
attributes Object
▶ SHOW VALUESAttributes of the created project.
-
name String
Name of the project.
-
slug String
Slug of the project.
-
type String
Type of the project, either web or app.
-
full-slug String
Full slug of the project, prefixed with the organization ID.
-
is-enabled Boolean
Specifies whether the project is enabled.
-
auto-approve-branch-filter String
Branch filter that specifies which branches are auto-approved.
-
workflow String
Workflow configured for the project.
-
ai-enabled Boolean
Specifies whether AI-powered features are enabled for the project.
-
created-at String
ISO-8601 time stamp when the project was created.
-
updated-at String
ISO-8601 time stamp when the project was last updated.
-
-
links Object
▶ SHOW VALUESLinks related to the created project.
-
self String
API path of the created project.
-
-
relationships Object
▶ SHOW VALUESRelationships associated with the created project.
-
organization Object
Specifies details of the organization and the related API endpoint.
-
repo Object
Specifies details of the linked repository and the related API endpoint.
-
builds Object
Specifies the API endpoint to fetch builds for the project.
-
tokens Object
Specifies the API endpoint to fetch the project tokens, including the write token.
-
Update project settings
Updates one or more settings on an existing Percy project. Only the attributes you include in the request body are changed. Any attribute you omit is left untouched. Use this endpoint to manage project configuration programmatically, for example to apply the same setting across many projects, sync settings from source control, or apply standard guardrails when you onboard new teams.
Note:
{id}is either the project’s full slug (org-slug/project-slug) or its numeric ID.- Find your username and access key on the BrowserStack profile page.
- Project tokens are not accepted on this endpoint. Use BrowserStack Basic authentication.
- The authenticated user must be a member of the project’s organization with the role admin, owner, or member, and must have the permission that gates each attribute being changed. See the Permissions section.
Permissions
Each attribute is gated by an org-level permission. If you lack any required permission, the request returns 403 and no changes are applied.
| Permission | Attributes gated |
|---|---|
PROJECT_ARCHIVE |
name, slug, type, is-enabled
|
PROJECT_SETTINGS_SCREENSHOT_LIMIT |
screenshot-limit |
PROJECT_SETTINGS_ALLOW_PUBLIC_VIEW |
publicly-readable |
PROJECT_SETTINGS_OTHER |
All other attributes and the repo relationship |
Request parameters
Curl Request
curl --location --request PATCH 'https://percy.io/api/v1/projects/my-org/web-app?product=web' \
--header 'Content-Type: application/vnd.api+json' \
--header "Authorization: Basic $(echo -n '<username>:<accesskey>' | base64)" \
--data '{
"data": {
"type": "projects",
"attributes": {
"default-base-branch": "main",
"auto-approve-branch-filter": "main release/*",
"approval-required-branch-filter": "qa qa-*",
"wait-for-base-build": true,
"intelli-ignore-enabled": true,
"intelli-ignore-diff-ignore-percentage": 0.4,
"autofinalize": true,
"auto-finalization-timeout-minutes": 120,
"publicly-readable": false
},
"relationships": {
"repo": { "data": { "type": "repos", "id": "12" } }
}
}
}'
-
id* String
Project full slug (org-slug/project-slug) or numeric project ID. Path parameter.
-
product String
Optional query parameter. Accepts web, app, automate, or visual_scanner. Disambiguates when an org has projects of multiple products sharing the same slug.
-
data* Object
▶ SHOW VALUESTop-level request object.
Response attributes 200 OK JSON
Response
{
"data": {
"type": "projects",
"id": "1656",
"attributes": {
"name": "Web App",
"slug": "web-app",
"full-slug": "my-org/web-app",
"is-enabled": true,
"default-base-branch": "main",
"auto-approve-branch-filter": "main release/*",
"approval-required-branch-filter": "qa qa-*",
"wait-for-base-build": true,
"intelli-ignore-enabled": true,
"intelli-ignore-diff-ignore-percentage": 0.4,
"autofinalize": true,
"publicly-readable": false,
"updated-at": "2026-06-01T10:14:22.000Z"
},
"links": { "self": "/api/v1/projects/my-org/web-app" },
"relationships": {
"repo": { "data": { "type": "repos", "id": "12" } },
"organization": { "data": { "type": "organizations", "id": "1862" } },
"builds": { "links": { "related": "/api/v1/builds?project_id=1656" } },
"tokens": { "links": { "related": "/api/v1/projects/my-org/web-app/tokens" } }
}
}
}
-
attributes Object
▶ SHOW VALUESThe updated project attributes.
-
name String
Display name of the project.
-
slug String
URL-safe slug of the project.
-
full-slug String
Full slug of the project in the form org-slug/project-slug.
-
is-enabled Boolean
Whether the project is enabled.
-
default-base-branch String
Default baseline branch.
-
auto-approve-branch-filter String
Branch patterns that auto-approve.
-
approval-required-branch-filter String
Branch patterns that require explicit approval.
-
wait-for-base-build Boolean
Whether builds wait for a finished base build.
-
intelli-ignore-enabled Boolean
Whether Intelli-Ignore is enabled.
-
intelli-ignore-diff-ignore-percentage Float
Intelli-Ignore diff threshold from 0.0 to 1.0.
-
autofinalize Boolean
Whether stalled builds auto-finalize.
-
publicly-readable Boolean
Whether the project is publicly viewable.
-
updated-at Integer
Time stamp when the project was last updated.
-
-
links Object
▶ SHOW VALUESCanonical link to the project resource.
-
self String
Canonical link to the project resource.
-
-
relationships Object
▶ SHOW VALUESLinks and identifiers for the project’s organization, repo, builds, tokens, and browser targets.
-
repo Object
The project’s linked source-code repository.
-
organization Object
The project’s organization.
-
builds Object
API endpoint to fetch the project’s builds.
-
tokens Object
Summary of AI analysis findings.
-
We're sorry to hear that. Please share your feedback so we can do better
Contact our Support team for immediate help while we work on improving our docs.