Goals
Public API
Create Goal
Create a new goal for an employee. To create a simple goal without milestones, omit the milestones field; the goal's progress can then be changed with update-goal-progress. To create a milestone-based goal, provide milestones as a non-empty array of { "title": string } objects; the goal's percent complete is then derived from milestone completion and should be changed via update-goal-milestone-progress. Sending milestones: null is treated as omitted (creates a simple goal).
OAuth Scopes: goal.write
post/api/v1/performance/employees/{employeeId}/goals
Request
- Base URLhttps://companySubDomain.bamboohr.com
- Auth
- HTTP basic
- or OAuth 2Authorization code/authorize.phpToken URL/token.phpScopesgoal.write
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
employeeIdstring required
The internal employee ID of the employee who owns the new goal.
Request body
Example request
{
"title": "New Goal To update",
"description": "This should be fun!",
"dueDate": "2025-12-17",
"sharedWithEmployeeIds": [
1234,
5678
],
"milestones": [
{
"title": "Surprise, it is a milestone"
},
{
"title": "Now there are two of them!"
}
]
}Response
A goal object that includes the new goal.
Example response
{
"goal": {
"id": "4",
"title": "Complete Documentation Epic",
"description": "Document every endpoint for the goals API.",
"percentComplete": 78,
"dueDate": "2025-12-31",
"completionDate": "2025-12-17T10:30:00Z",
"lastChangedDateTime": "2025-12-17T10:30:00Z",
"status": "in_progress",
"milestones": [
{
"id": 2,
"employeeGoalId": 12,
"title": "Sell 15 Doohickeys",
"completedDateTime": "2025-04-10T15:36:38Z",
"lastUpdateDateTime": "2025-04-10T15:36:38Z",
"lastUpdateUserId": 24
}
],
"actions": {
"canEditGoalProgressBar": true
}
}
}Changes
No recorded changes to this operation across all 2 revisions of this API.