Query Projects
Retrieve a list of company projects
/projects
Parameters
| Name |
Required |
Default |
Type/Format |
Description |
| archived |
no |
False |
Boolean |
set to true to retrieve archived/closed projects |
| rootOnly |
no |
False |
Boolean |
if set to true returns only root projects |
Response
Sample response →
[
{
"id": "PROJECT-ID",
"name": "Client Projects",
"description": "",
"endDate": null,
"estimate": null,
"moment_created": "2015-11-14T14:52:57.26943",
"parentProjectId": "PARENT-ID",
"priority": 5,
"progress": null,
"startDate": null,
"status": "In Progress",
"systemStatus": 2
"statusComments": "comments",
"customFieldsData": {
"CUSTOM-FIELD-ID": "CUSTOM-FIELD-VALUE"
}
},
...
]
Get Project
Get project details
/project/PROJECT-ID
Response
Sample response →
{
"id": "PROJECT-ID",
"name": "Client Project",
"description": "",
"endDate": null,
"estimate": null,
"moment_created": "2015-11-14T14:52:57.26943",
"parentProjectId": "PARENT-PROJECT-ID",
"priority": 5,
"progress": null,
"startDate": null,
"status": "In Progress",
"statusComments": "",
"systemStatus": 2,
"customFieldsData": {
"CUSTOM-FIELD-ID": "CUSTOM-FIELD-VALUE"
}
}
Update Project
Update project properties. All the parameters are optional and won't be updated if not passed. Set to null to reset.
/project/PROJECT-ID
Parameters
| Name |
Required |
Type/Format |
Description |
| userId |
yes |
String |
User on behalf of whom API will execute update |
| name |
no |
String |
Project name |
| color |
no |
Integer |
Project color (1-24) |
| health |
no |
Integer |
Project health (0,1,2,null) |
| statusComments |
no |
String |
Project status comments |
| parentProjectId |
no |
String |
Move a project to a different project/folder |
| startDate |
no |
YYYY-MM-DD |
Project start date, 'null' to reset |
| endDate |
no |
YYYY-MM-DD |
Project end date, 'null' to reset |
| priority |
no |
Integer |
Project priority (1-10), 50 - Blocker, 100 - Emergency |
| estimate |
no |
Integer |
Project estimate in minutes, 'null' to reset |
| progress |
no |
Integer |
Project progress percentage (0-100) or 'null' to reset |
| systemStatus |
no |
Integer |
Pass 5 to archive, 2 to re-open |
Sample CURL →
curl -X PUT
https://api.goodday.work/2.0/project/PROJECT-ID
-H "Content-Type: application/json"
-H "gd-api-token: AUTH-TOKEN"
-d '{
"userId": "USER-ID",
"startDate":"2023-01-15",
"endDate":"2023-01-25",
"progress":70
}'
Create Folder
Create new workfolder
/projects/new-folder
Parameters
| Name |
Required |
Type/Format |
Description |
| createdByUserId |
yes |
String |
ID of a user, a new record is created on behalf of |
| parentProjectId |
no |
String |
Pass parent project ID to create a subfolder |
| name |
yes |
String |
Folder name |
| color |
no |
Integer |
Folder color (1..24) |
Sample CURL →
curl -X POST
https://api.goodday.work/2.0/projects/new-folder
-H "Content-Type: application/json"
-H "gd-api-token: AUTH-TOKEN"
-d '{
"createdByUserId": "USER-ID",
"name": "New Folder name",
"parentProjectId": "PROJECT-ID"
}'
Response
Sample response →
{
"id": "PROJECT-ID",
"name": "Folder Name",
"description": "",
"endDate": null,
"estimate": null,
"moment_created": "2015-11-14T14:52:57.26943",
"parentProjectId": "PARENT-PROJECT-ID",
"priority": 5,
"progress": null,
"startDate": null,
"status": "In Progress",
"statusComments": "",
"systemStatus": 2
}
Create Project
Create new project
/projects/new-project
Parameters
| Name |
Required |
Type/Format |
Description |
| createdByUserId |
yes |
String |
ID of a user, a new record is created on behalf of |
| projectTemplateId |
yes |
String |
Project template (type) ID you can find in Organization settings → Project templates |
| parentProjectId |
no |
String |
Pass parent project ID to create a sub project |
| name |
yes |
String |
Project name |
| color |
no |
Integer |
Folder color (1..24) |
| projectOwnerUserId |
no |
String |
Project owner user ID |
| startDate |
no |
YYYY-MM-DD |
Project start date |
| endDate |
no |
YYYY-MM-DD |
Project end date |
| deadline |
no |
YYYY-MM-DD |
Project deadline |
Sample CURL →
curl -X POST
https://api.goodday.work/2.0/projects/new-project
-H "Content-Type: application/json"
-H "gd-api-token: AUTH-TOKEN"
-d '{
"createdByUserId": "USER-ID",
"projectTemplateId": "TEMPLATE-ID",
"name": "New Project name",
"parentProjectId": "PARENT-PROJECT-ID",
"projectOwnerUserId": "PROJECT-OWNER-USER-ID",
"deadline": "2020-04-01"
}'
Response
Sample response →
{
"id": "PROJECT-ID",
"name": "New Project Name",
"description": "",
"endDate": null,
"estimate": null,
"moment_created": "2020-03-28T14:52:57.26943",
"parentProjectId": "PARENT-PROJECT-ID",
"priority": 5,
"progress": null,
"startDate": null,
"status": "In Progress",
"statusComments": "",
"systemStatus": 2
}
Query project tasks
Retrieve a list of project tasks
/project/PROJECT-ID/tasks
Parameters
| Name |
Required |
Default |
Type/Format |
Description |
| closed |
no |
False |
Boolean |
set to true to retrieve all open and closed tasks |
| subfolders |
no |
False |
Boolean |
if set to true returns tasks from project it's subfolders |
Response
Sample response →
[
{
"id": "TASK-ID",
"shortId": "75",
"actionRequiredUserId": USER-ID,
"assignedToUserId": "USER-ID",
"createdByUserId": "USER-ID",
"customFieldsData": {
"CUSTOM-FIELD-ID": "CUSTOM-FIELD-VALUE"
},
"deadline": null,
"endDate": null,
"estimate": null,
"momentClosed": null,
"momentCreated": "2018-09-07T19:35:32.09136",
"name": "Sample task name",
"parentTaskId": null,
"priority": 5,
"progress": null,
"projectId": "PROJECT-ID",
"recentActivityMoment": "2018-10-30T15:15:20.437519",
"reportedTime": null,
"scheduleDate": null,
"scheduleStatus": 0,
"startDate": null,
"status": {
"id": "STATUS-ID",
"name": "New"
},
"systemStatus": 1,
"systemType": 1,
"taskType": {
"id": "TASK-TYPE-ID",
"name": "Task"
},
"users": [
"USER-ID",
"USER-ID"
]
},
...
]
Query tag tasks
Retrieve a list of tag tasks
/tag/TAG-ID/tasks
Parameters
| Name |
Required |
Default |
Type/Format |
Description |
| closed |
no |
False |
Boolean |
set to true to retrieve all open and closed tasks |
Response
Sample response →
[
{
"id": "TASK-ID",
"shortId": "75",
"actionRequiredUserId": USER-ID,
"assignedToUserId": "USER-ID",
"createdByUserId": "USER-ID",
"customFieldsData": {
"CUSTOM-FIELD-ID": "CUSTOM-FIELD-VALUE"
},
"deadline": null,
"endDate": null,
"estimate": null,
"momentClosed": null,
"momentCreated": "2018-09-07T19:35:32.09136",
"name": "Sample task name",
"parentTaskId": null,
"priority": 5,
"progress": null,
"projectId": "PROJECT-ID",
"recentActivityMoment": "2018-10-30T15:15:20.437519",
"reportedTime": null,
"scheduleDate": null,
"scheduleStatus": 0,
"startDate": null,
"status": {
"id": "STATUS-ID",
"name": "New"
},
"systemStatus": 1,
"systemType": 1,
"taskType": {
"id": "TASK-TYPE-ID",
"name": "Task"
},
"users": [
"USER-ID",
"USER-ID"
]
},
...
]
Query project users
Retrieve project users list
/project/PROJECT-ID/users
Response
Sample response →
[
{
"access": "Standard",
"id": "USER-ID",
"name": "Alex Kim",
"primaryEmail": "alex@company.com",
"watchAll": false
},
...
]
Get Project History
Retrieve a list of history events for a projec
/projects/PROJECT-ID/history
Response
Sample response →
[
{
"eventType": "STATUS_COMMENTS_UPDATED",
"id": "HISTORY-EVENT-ID",
"momentCreated": "2025-09-22T09:56:59.118157",
"params": {
"newValue": "Status updated...",
"oldValue": null
},
"userId": "USER-ID"
},
...
]
Get Project Documents
Retrieve all documents for a specific project
/project/PROJECT-ID/documents
Parameters
| Name |
Required |
Default |
Type/Format |
Description |
| subfolders |
no |
false |
Boolean |
set to true to include documents from subfolders |
Response
Sample response →
[
{
"id": "DOCUMENT-ID",
"name": "Note",
"projectId": "PROJECT-ID",
"createdByUserId": "USER-ID",
"momentCreated": "2025-08-28T07:35:01.422492",
"momentUpdated": "2025-08-28T07:50:30.923357"
},
]
Get Document
Get document details and content by document ID
/document/DOCUMENT-ID
Response
Sample response →
{
"content": "Content in text format",
"createdByUserId": "USER-ID",
"id": "DOCUMENT-ID",
"momentCreated": "2025-08-28T07:35:01.422492",
"momentUpdated": "2025-08-28T07:50:30.923357",
"name": "Note",
"projectId": "PROJECT-ID"
}