Create

  • POST
  • /workspaces
  • /:workspace
  • /projects

Create a new project

Request

REQUIRED SCOPES
WORKSPACE
URL PARAMETERS
workspacerequiredstring
The human-readable ID of the workspace

Example: "my-company"

POST PARAMETERS
namestring
The human-readable ID of the project
display_namerequiredstring
The Name of the project
accessstring enum
Indicates if this is a public project
Allowed enum:
PRIVATE,
PUBLIC
fetch_submodulesboolean
Defines whether the submodules are fetched during the runs in this project
fetch_submodules_env_keystring
Name of the key that will be used to authorize while fetching the submodules. Required when fetch_submodules is set to true
allow_pull_requestsboolean
Enables/disables pull requests in the project. Available only for projects synchronized with GitHub or GitHub Enterprise repository
without_repositoryboolean
If set to true, the project is created without any repository attached.

Response

RESPONSE BODY
urlread-onlystring
API endpoint to GET this object
html_urlread-onlystring
Web URL to view this object in Buddy.works
namestring
The human-readable ID of the project
display_namerequiredstring
The Name of the project
statusstring
The status of the project
accessstring enum
Indicates if this is a public project
Allowed enum:
PRIVATE,
PUBLIC
create_datestring
The creation date of the project
external_project_idstring
Repo slug of the Bitbucket, GitHub or GitLab project. Required when adding the integrated project
git_lab_project_idinteger
ID of the project in GitLab
custom_repo_urlstring
SSH or HTTPS url of the git repository. Required when adding the project integrated with custom git repository
custom_repo_userstring
Username used to authorize access to the git repository. Required when adding the project integrated with custom git repository
custom_repo_passstring
Password used to authorize access to the git repository. Required when adding the project integrated with custom git repository and the provided custom_repo_url is the HTTPS url
custom_repo_ssh_key_idinteger
The ID of the private SSH key used to authorize access to the git repository. Required when adding the project integrated with private git server by SSH url
created_byMemberView
User/member reference
http_repositorystring
The HTTP repository URL
ssh_repositorystring
The SSH repository URL
default_branchstring
The default branch name
integrationIntegrationIdView
Integration reference
fetch_submodulesboolean
Defines whether the submodules are fetched during the runs in this project
fetch_submodules_env_keystring
Name of the key that will be used to authorize while fetching the submodules. Required when fetch_submodules is set to true
allow_pull_requestsboolean
Enables/disables pull requests in the project. Available only for projects synchronized with GitHub or GitHub Enterprise repository
update_default_branch_from_externalboolean
If set to true, the default branch will be updated from GitHub/GitLab/Bitbucket.
without_repositoryboolean
If set to true, the project is created without any repository attached.

Last modified on Jan 26, 2026

Examples

Example: Create new Buddy project

curl -X POST "https://api.buddy.works/workspaces/:workspace/projects" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "name": "landing-page", "display_name": "Landing page", "access": "PUBLIC", "fetch_submodules": true, "fetch_submodules_env_key": "id_workspace", "allow_pull_requests": true }'

Example: Create integrated project (GitHub/GitLab/Bitbucket)

curl -X POST "https://api.buddy.works/workspaces/:workspace/projects" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "name": "landing-page", "display_name": "Landing page", "external_project_id": "buddy/landing-page", "integration": { "hash_id": "5ddb7c180fb38be67bd78a88a" }, "access": "PUBLIC", "fetch_submodules": true, "fetch_submodules_env_key": "id_workspace", "allow_pull_requests": true, "update_default_branch_from_external": true }'

Example: Create custom repository project

curl -X POST "https://api.buddy.works/workspaces/:workspace/projects" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "name": "custom-repo-project", "display_name": "Custom Repository Project", "custom_repo_url": "https://github.com/company/private-repo.git", "custom_repo_user": "deployment-user", "custom_repo_pass": "access-token", "access": "PRIVATE", "fetch_submodules": false }'
EXAMPLE RESPONSE
{ "url": "https://api.buddy.works/workspaces/my-workspace/projects/my-project", "html_url": "https://app.buddy.works/my-workspace/projects/my-project", "name": "my-project", "display_name": "My Project", "external_project_id": null, "gitlab_project_id": null, "custom_repo_url": null, "custom_repo_user": null, "custom_repo_pass": null, "custom_repo_ssh_key_id": null, "status": "ACTIVE", "access": "PRIVATE", "create_date": "2023-01-15T10:30:00Z", "created_by": { "url": "https://api.buddy.works/workspaces/my-workspace/members/123", "html_url": "https://app.buddy.works/my-workspace/profile/123", "id": 123, "name": "John Doe", "avatar_url": "https://app.buddy.works/image-server/user/0/0/0/0/0/0/123/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6/w/32/32/AVATAR.png?ts=1674644200000", "email": "john.doe@company.com", "admin": false, "workspace_owner": false }, "http_repository": "https://git.buddy.works/my-workspace/my-project.git", "ssh_repository": "git@git.buddy.works:my-workspace/my-project.git", "default_branch": "main", "integration": null, "fetch_submodules": true, "fetch_submodules_env_key": "id_workspace", "allow_pull_requests": true, "update_default_branch_from_external": false, "without_repository": false }
STATUS
201 Created