PKCE mandatory from 2026-09-14 Details
Employment Hero LogoEmployment Hero

Goal

Note

Goals (OKRs) are available to organisations with the OKRs entitlement. Access is governed by the same permission model that controls what users see in the Employment Hero platform.

This endpoint retrieves a paginated list of goals for the organisation.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals

Path Parameters

organisation_iduuidrequired

The UUID of the organisation to retrieve goals for.

Query Parameters

goal_typeenum<string>

Filter by goal type.

health_statusenum<string>

Filter by health status.

statusenum<string>

Filter goals by status.

owner_iduuid

Filter by the UUID of the goal owner.

group_iduuid

Filter by the UUID of the group (team) associated with the goal. Only relevant for goal_type=group.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100

Response Body

A hash with a data property that contains an array of up to the limit of goals. Each entry in the array is a separate goal object. If there are no more goals belonging to your organisation, the resulting array will be empty.

Note: Goals with visibility_type=participants are only returned to the owner and key result collaborators on that goal. Goals with visibility_type=groups are only returned to members of the associated group.

dataobject
itemsobject[]
iduuid

Unique identifier for the goal.

namestring

The name of the goal.

goal_typeenum<string>

The type of the goal.

descriptionstring

The description of the goal.

owner_iduuid

The UUID of the employee who owns the goal.

owner_namestring

The full name of the employee who owns the goal.

creator_iduuid

The UUID of the employee who created the goal.

creator_namestring

The full name of the employee who created the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the goal.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

parent_iduuid

The UUID of the parent goal this goal is aligned to.

parent_namestring

The name of the parent goal this goal is aligned to.

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

group_iduuid

The UUID of the group associated with this goal. Only populated for goal_type=group.

group_namestring

The name of the group associated with this goal. Only populated for goal_type=group.

statusenum<string>

Whether the goal is active or archived.

progressnumber

The percentage completion of the goal (0 to 100), rounded to two decimal places.

key_results_countnumber

The number of active key results on this goal.

children_countnumber

The number of active child goals aligned to this goal.

attachmentsobject[]

Files attached to the goal.

created_atdatetime

The date and time the goal was created in RFC 3339 format.

updated_atdatetime

The date and time the goal was last updated in RFC 3339 format.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
total_itemsnumber

Total items

total_pagesnumber

Total pages

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "items": [      {        "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "name": "Improve customer satisfaction to 90%",        "goal_type": "company",        "description": "Drive NPS and CSAT scores by improving product quality and support response times.",        "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "owner_name": "Jane Smith",        "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",        "creator_name": "John Doe",        "due_date": "2026-12-31",        "health_status": "on_track",        "visibility_type": "everyone",        "parent_id": null,        "parent_name": null,        "feed_to_parent": false,        "group_id": null,        "group_name": null,        "status": "active",        "progress": 62.5,        "key_results_count": 3,        "children_count": 2,        "attachments": [],        "created_at": "2026-01-15T09:00:00+00:00",        "updated_at": "2026-06-01T14:30:00+00:00"      },      {        "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",        "name": "Launch APAC expansion into three new markets",        "goal_type": "group",        "description": null,        "owner_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",        "owner_name": "Alice Chen",        "creator_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",        "creator_name": "Alice Chen",        "due_date": "2026-09-30",        "health_status": "making_progress",        "visibility_type": "groups",        "parent_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "parent_name": "Improve customer satisfaction to 90%",        "feed_to_parent": true,        "group_id": "143ed07a-e7d1-4c19-ade6-b0ffe9123d19",        "group_name": "Business Development",        "status": "active",        "progress": 40,        "key_results_count": 2,        "children_count": 0,        "attachments": [          {            "id": 101,            "name": "APAC-expansion-plan.pdf",            "url": "https://example.com/attachments/APAC-expansion-plan.pdf"          }        ],        "created_at": "2026-02-01T10:00:00+00:00",        "updated_at": "2026-06-01T11:15:00+00:00"      }    ],    "page_index": 1,    "item_per_page": 20,    "total_items": 2,    "total_pages": 1  }}

This endpoint retrieves a specific goal.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to retrieve.

Response Body

dataobject
iduuid

Unique identifier for the goal.

namestring

The name of the goal.

goal_typeenum<string>

The type of the goal.

descriptionstring

The description of the goal.

owner_iduuid

The UUID of the employee who owns the goal.

owner_namestring

The full name of the employee who owns the goal.

creator_iduuid

The UUID of the employee who created the goal.

creator_namestring

The full name of the employee who created the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the goal.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

parent_iduuid

The UUID of the parent goal this goal is aligned to.

parent_namestring

The name of the parent goal this goal is aligned to.

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

group_iduuid

The UUID of the group associated with this goal. Only populated for goal_type=group.

group_namestring

The name of the group associated with this goal. Only populated for goal_type=group.

statusenum<string>

Whether the goal is active or archived.

progressnumber

The percentage completion of the goal (0 to 100), rounded to two decimal places.

key_results_countnumber

The number of active key results on this goal.

children_countnumber

The number of active child goals aligned to this goal.

attachmentsobject[]

Files attached to the goal.

created_atdatetime

The date and time the goal was created in RFC 3339 format.

updated_atdatetime

The date and time the goal was last updated in RFC 3339 format.

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Improve customer satisfaction to 90%",    "goal_type": "company",    "description": "Drive NPS and CSAT scores by improving product quality and support response times.",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "due_date": "2026-12-31",    "health_status": "on_track",    "visibility_type": "everyone",    "parent_id": null,    "parent_name": null,    "feed_to_parent": false,    "group_id": null,    "group_name": null,    "status": "active",    "progress": 62.5,    "key_results_count": 3,    "children_count": 2,    "attachments": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint creates a new goal within an organisation.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals

Path Parameters

organisation_iduuidrequired

The UUID of the organisation to create the goal in.

Request Body

namestringrequired

The title of the goal (max 255 characters).

goal_typeenum<string>required

The type of the goal.

owner_iduuidrequired

The UUID of the employee who owns this goal.

due_datestringrequired

The due date of the goal in ISO 8601 format (YYYY-MM-DD). Must be a future date.

descriptionstring

A longer description providing context or explanation for the goal.

parent_iduuid

The UUID of an existing goal to align this goal to.

group_iduuid

The UUID of the group to associate with this goal. Required when goal_type=group.

feed_to_parentboolean

When true, this goal's progress rolls up into the parent goal's progress calculation. Ignored if parent_id is not set. Default: false.

visibility_typeenum<string>

Who can see the goal.

  • everyone — visible to all organisation members
  • participants — visible only to the owner and key result collaborators
  • groups — visible only to members of the associated group (only valid when goal_type=group)

Default: participants

attachment_idsstring[]

An array of file IDs to attach to this goal. IDs are obtained from the Upload a File endpoint.

Response Body

Returns the newly created goal.

dataobject
iduuid

Unique identifier for the goal.

namestring

The name of the goal.

goal_typeenum<string>

The type of the goal.

descriptionstring

The description of the goal.

owner_iduuid

The UUID of the employee who owns the goal.

owner_namestring

The full name of the employee who owns the goal.

creator_iduuid

The UUID of the employee who created the goal.

creator_namestring

The full name of the employee who created the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the goal.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

parent_iduuid

The UUID of the parent goal this goal is aligned to.

parent_namestring

The name of the parent goal this goal is aligned to.

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

group_iduuid

The UUID of the group associated with this goal. Only populated for goal_type=group.

group_namestring

The name of the group associated with this goal. Only populated for goal_type=group.

statusenum<string>

Whether the goal is active or archived.

progressnumber

The percentage completion of the goal (0 to 100), rounded to two decimal places.

key_results_countnumber

The number of active key results on this goal.

children_countnumber

The number of active child goals aligned to this goal.

attachmentsobject[]

Files attached to the goal.

created_atdatetime

The date and time the goal was created in RFC 3339 format.

updated_atdatetime

The date and time the goal was last updated in RFC 3339 format.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "name": "Improve customer satisfaction to 90%",    "goal_type": "company",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "due_date": "2026-12-31",    "description": "Drive NPS and CSAT scores by improving product quality and support response times.",    "visibility_type": "everyone",    "feed_to_parent": false,    "attachment_ids": []  }'

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Improve customer satisfaction to 90%",    "goal_type": "company",    "description": "Drive NPS and CSAT scores by improving product quality and support response times.",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "due_date": "2026-12-31",    "health_status": "on_track",    "visibility_type": "everyone",    "parent_id": null,    "parent_name": null,    "feed_to_parent": false,    "group_id": null,    "group_name": null,    "status": "active",    "progress": 62.5,    "key_results_count": 3,    "children_count": 2,    "attachments": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint updates the details of an existing goal. You can update any combination of the goal's name, description, due date, type, owner, parent alignment, visibility, and attachments.

Attachments are replaced, not merged

When attachment_ids is provided, it replaces the goal's entire attachment set. Any attachment not listed is removed. To clear all attachments, pass an empty array ([]). To leave attachments unchanged, omit attachment_ids entirely.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to update.

Request Body

namestring

The name of the goal. Cannot be blank if provided.

descriptionstring

The description of the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD). Must not be earlier than the due date of any key result on this goal.

goal_typeenum<string>

The type of the goal.

owner_iduuid

The UUID of the member to set as the goal owner. Must be a member of the organisation; returns 404 if not found.

parent_iduuid

The UUID of the goal to align this goal under. Must be a visible goal within the organisation; returns 404 if not found or not accessible.

group_iduuid

The UUID of the group to associate with this goal. Only takes effect when goal_type is (or is already) group. Returns 404 if the group is not found in the organisation.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

attachment_idsuuid[]

The complete set of file UUIDs to attach to the goal. Replaces the existing attachment set — any attachment not included is removed. Pass an empty array ([]) to remove all attachments. Omit this field entirely to leave attachments unchanged.

Response Body

Returns HTTP 200 with the full updated goal object on success.

dataobject
iduuid

Unique identifier for the goal.

namestring

The name of the goal.

goal_typeenum<string>

The type of the goal.

descriptionstring

The description of the goal.

owner_iduuid

The UUID of the employee who owns the goal.

owner_namestring

The full name of the employee who owns the goal.

creator_iduuid

The UUID of the employee who created the goal.

creator_namestring

The full name of the employee who created the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the goal.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

parent_iduuid

The UUID of the parent goal this goal is aligned to.

parent_namestring

The name of the parent goal this goal is aligned to.

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

group_iduuid

The UUID of the group associated with this goal. Only populated for goal_type=group.

group_namestring

The name of the group associated with this goal. Only populated for goal_type=group.

statusenum<string>

Whether the goal is active or archived.

progressnumber

The percentage completion of the goal (0 to 100), rounded to two decimal places.

key_results_countnumber

The number of active key results on this goal.

children_countnumber

The number of active child goals aligned to this goal.

attachmentsobject[]

Files attached to the goal.

created_atdatetime

The date and time the goal was created in RFC 3339 format.

updated_atdatetime

The date and time the goal was last updated in RFC 3339 format.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "name": "Improve customer satisfaction to 90%",    "due_date": "2026-12-31",    "goal_type": "company",    "visibility_type": "everyone",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a"  }'

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Improve customer satisfaction to 90%",    "goal_type": "company",    "description": "Drive NPS and CSAT scores by improving product quality and support response times.",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "due_date": "2026-12-31",    "health_status": "on_track",    "visibility_type": "everyone",    "parent_id": null,    "parent_name": null,    "feed_to_parent": false,    "group_id": null,    "group_name": null,    "status": "active",    "progress": 62.5,    "key_results_count": 3,    "children_count": 2,    "attachments": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint retrieves a paginated list of comments for a goal.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/comments

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to retrieve comments for.

Query Parameters

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100

Response Body

A hash with a data property that contains an array of up to the limit of comments, ordered from most recent to oldest. Each entry is a separate comment object. If there are no more comments, the resulting array will be empty.

Each comment is one of two types: a plain text note (has content, checkin_changes is omitted) or a check-in update (has checkin_changes populated, content is omitted).

dataobject
itemsobject[]
iduuid

Unique identifier for the comment.

contentstring

The text content of the comment.

creator_iduuid

The UUID of the employee who authored the comment.

creator_namestring

The full name of the employee who authored the comment.

created_atdatetime

The date and time the comment was created in RFC 3339 format.

updated_atdatetime

The date and time the comment was last updated in RFC 3339 format.

checkin_changesobject

The check-in update associated with this comment. Omitted for plain text comments.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
total_itemsnumber

Total items

total_pagesnumber

Total pages

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/comments" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "items": [      {        "id": "c1d2e3f4-a5b6-7890-cdef-123456789abc",        "creator_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "creator_name": "Jane Smith",        "created_at": "2026-06-01T14:30:00+00:00",        "updated_at": "2026-06-01T14:30:00+00:00",        "checkin_changes": {          "target_type": "key_result",          "title": "Increase NPS score to 70",          "health_status": {            "from": "making_progress",            "to": "on_track"          },          "metric": {            "from": 55,            "to": 68,            "unit_type": "numerical"          }        }      },      {        "id": "d2e3f4a5-b6c7-8901-defa-234567890bcd",        "content": "Great progress this quarter, keep it up!",        "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",        "creator_name": "John Doe",        "created_at": "2026-05-28T10:00:00+00:00",        "updated_at": "2026-05-28T10:00:00+00:00"      },      {        "id": "e3f4a5b6-c7d8-9012-efab-345678901cde",        "creator_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",        "creator_name": "Alice Chen",        "created_at": "2026-05-20T09:00:00+00:00",        "updated_at": "2026-05-20T09:00:00+00:00",        "checkin_changes": {          "target_type": "key_result",          "title": "Increase employee engagement score to 80%",          "metric": {            "from": 72.5,            "to": 78,            "unit_type": "percentage",            "unit": "%"          }        }      },      {        "id": "f4a5b6c7-d8e9-0123-fabc-456789012def",        "creator_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "creator_name": "Jane Smith",        "created_at": "2026-05-15T11:00:00+00:00",        "updated_at": "2026-05-15T11:00:00+00:00",        "checkin_changes": {          "target_type": "key_result",          "title": "Increase quarterly revenue",          "health_status": {            "from": "off_track",            "to": "making_progress"          },          "metric": {            "from": 800000,            "to": 950000,            "unit_type": "currency",            "unit": "AUD"          }        }      }    ],    "page_index": 1,    "item_per_page": 20,    "total_items": 4,    "total_pages": 1  }}

This endpoint retrieves a paginated list of key results for a goal.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to retrieve key results for.

Query Parameters

statusenum<string>

Filter key results by status.

health_statusenum<string>

Filter by health status.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100

Response Body

A hash with a data property that contains an array of up to the limit of key results for the goal, ordered by creation date ascending. Each entry is a separate key result object. If there are no more key results, the resulting array will be empty.

dataobject
itemsobject[]
iduuid

Unique identifier for the key result.

namestring

The name of the key result.

unit_typeenum<string>

The unit type used to measure this key result.

unitstring

The display unit symbol (e.g. % or a currency code like AUD). Only present when unit_type is percentage or currency.

start_valuenumber

The starting value of the key result.

target_valuenumber

The target value to achieve.

current_valuenumber

The current value of the key result. Omitted when no check-in has been recorded.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the key result. Omitted when no status has been set.

statusenum<string>

Whether the key result is active or archived.

progressnumber

The percentage completion of the key result (0 to 100), rounded to two decimal places.

owner_iduuid

The UUID of the employee who owns the key result. Omitted when no owner is set.

owner_namestring

The full name of the employee who owns the key result. Omitted when no owner is set.

creator_iduuid

The UUID of the employee who created the key result. Omitted when no creator is recorded.

creator_namestring

The full name of the employee who created the key result. Omitted when no creator is recorded.

goal_iduuid

The UUID of the goal this key result belongs to.

goal_namestring

The name of the goal this key result belongs to.

collaboratorsobject[]

Employees collaborating on this key result.

created_atdatetime

The date and time the key result was created in RFC 3339 format.

updated_atdatetime

The date and time the key result was last updated in RFC 3339 format.

page_indexnumber

Current page index

Default1
Min1
item_per_pagenumber

Number of items per page

Default20
Max100
total_itemsnumber

Total items

total_pagesnumber

Total pages

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "items": [      {        "id": "k1r2s3t4-u5v6-7890-klmn-op1234567890",        "name": "Increase NPS score to 70",        "unit_type": "numerical",        "start_value": 45,        "target_value": 70,        "current_value": 60,        "due_date": "2026-12-31",        "health_status": "on_track",        "status": "active",        "progress": 60,        "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "owner_name": "Jane Smith",        "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",        "creator_name": "John Doe",        "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "goal_name": "Improve customer satisfaction to 90%",        "collaborators": [],        "created_at": "2026-01-15T09:00:00+00:00",        "updated_at": "2026-06-01T14:30:00+00:00"      },      {        "id": "l2m3n4o5-p6q7-8901-lmno-pq2345678901",        "name": "Increase employee engagement score to 80%",        "unit_type": "percentage",        "unit": "%",        "start_value": 65,        "target_value": 80,        "current_value": 72.5,        "due_date": "2026-09-30",        "health_status": "making_progress",        "status": "active",        "progress": 50,        "owner_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",        "owner_name": "Alice Chen",        "creator_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",        "creator_name": "Alice Chen",        "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",        "goal_name": "Improve customer satisfaction to 90%",        "collaborators": [          {            "id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",            "name": "Jane Smith"          }        ],        "created_at": "2026-02-01T10:00:00+00:00",        "updated_at": "2026-06-01T11:15:00+00:00"      },      {        "id": "m3n4o5p6-q7r8-9012-mnop-qr3456789012",        "name": "Launch product in two new markets",        "start_value": 0,        "target_value": 2,        "status": "active",        "progress": 0,        "goal_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",        "goal_name": "Launch APAC expansion into three new markets",        "collaborators": [],        "created_at": "2026-03-01T08:00:00+00:00",        "updated_at": "2026-03-01T08:00:00+00:00"      }    ],    "page_index": 1,    "item_per_page": 20,    "total_items": 3,    "total_pages": 1  }}

This endpoint retrieves the full details of a single key result for a goal.

GET
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal the key result belongs to.

key_result_iduuidrequired

The UUID of the key result to retrieve.

Response Body

dataobject
iduuid

Unique identifier for the key result.

namestring

The name of the key result.

unit_typeenum<string>

The unit type used to measure this key result.

unitstring

The display unit symbol (e.g. % or a currency code like AUD). Only present when unit_type is percentage or currency.

start_valuenumber

The starting value of the key result.

target_valuenumber

The target value to achieve.

current_valuenumber

The current value of the key result. Omitted when no check-in has been recorded.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the key result. Omitted when no status has been set.

statusenum<string>

Whether the key result is active or archived.

progressnumber

The percentage completion of the key result (0 to 100), rounded to two decimal places.

owner_iduuid

The UUID of the employee who owns the key result. Omitted when no owner is set.

owner_namestring

The full name of the employee who owns the key result. Omitted when no owner is set.

creator_iduuid

The UUID of the employee who created the key result. Omitted when no creator is recorded.

creator_namestring

The full name of the employee who created the key result. Omitted when no creator is recorded.

goal_iduuid

The UUID of the goal this key result belongs to.

goal_namestring

The name of the goal this key result belongs to.

collaboratorsobject[]

Employees collaborating on this key result.

created_atdatetime

The date and time the key result was created in RFC 3339 format.

updated_atdatetime

The date and time the key result was last updated in RFC 3339 format.

Example

curl -X GET \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

{  "data": {    "id": "l2m3n4o5-p6q7-8901-lmno-pq2345678901",    "name": "Increase employee engagement score to 80%",    "unit_type": "percentage",    "unit": "%",    "start_value": 65,    "target_value": 80,    "current_value": 72.5,    "due_date": "2026-09-30",    "health_status": "making_progress",    "status": "active",    "progress": 50,    "owner_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",    "owner_name": "Alice Chen",    "creator_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",    "creator_name": "Alice Chen",    "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "goal_name": "Improve customer satisfaction to 90%",    "collaborators": [      {        "id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "name": "Jane Smith"      }    ],    "created_at": "2026-02-01T10:00:00+00:00",    "updated_at": "2026-06-01T11:15:00+00:00"  }}

This endpoint creates a new key result under a goal.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to create the key result under.

Request Body

namestringrequired

The name of the key result.

descriptionstring

A longer description providing context for the key result.

unitenum<string>required

The unit type used to measure progress. Determines how start_value, target_value, and check-in values are interpreted.

  • numerical — a plain number
  • percentage — a percentage from 0-100
  • monetary — a currency amount; requires sub_unit
  • complete — a boolean-style 0/1 completion marker
sub_unitstring

The ISO currency code (e.g. AUD, USD) used to display the value. Required when unit is monetary.

start_valuenumberrequired

The starting value of the key result. Must differ from target_value.

target_valuenumberrequired

The target value to achieve. Must differ from start_value.

due_datestringrequired

The due date of the key result in ISO 8601 format (YYYY-MM-DD). Must be a future date, and cannot be after the due date of the parent goal.

owner_iduuidrequired

The UUID of the employee who owns this key result.

collaboratorsstring[]

The UUIDs of employees collaborating on this key result.

Response Body

Returns the newly created key result.

dataobject
iduuid

Unique identifier for the key result.

namestring

The name of the key result.

unit_typeenum<string>

The unit type used to measure this key result.

unitstring

The display unit symbol (e.g. % or a currency code like AUD). Only present when unit_type is percentage or currency.

start_valuenumber

The starting value of the key result.

target_valuenumber

The target value to achieve.

current_valuenumber

The current value of the key result. Omitted when no check-in has been recorded.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the key result. Omitted when no status has been set.

statusenum<string>

Whether the key result is active or archived.

progressnumber

The percentage completion of the key result (0 to 100), rounded to two decimal places.

owner_iduuid

The UUID of the employee who owns the key result. Omitted when no owner is set.

owner_namestring

The full name of the employee who owns the key result. Omitted when no owner is set.

creator_iduuid

The UUID of the employee who created the key result. Omitted when no creator is recorded.

creator_namestring

The full name of the employee who created the key result. Omitted when no creator is recorded.

goal_iduuid

The UUID of the goal this key result belongs to.

goal_namestring

The name of the goal this key result belongs to.

collaboratorsobject[]

Employees collaborating on this key result.

created_atdatetime

The date and time the key result was created in RFC 3339 format.

updated_atdatetime

The date and time the key result was last updated in RFC 3339 format.

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "name": "Increase NPS score to 70",    "unit": "numerical",    "start_value": 45,    "target_value": 70,    "due_date": "2026-12-31",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "collaborators": []  }'

Response

{  "data": {    "id": "k1r2s3t4-u5v6-7890-klmn-op1234567890",    "name": "Increase NPS score to 70",    "unit_type": "numerical",    "start_value": 45,    "target_value": 70,    "current_value": 60,    "due_date": "2026-12-31",    "health_status": "on_track",    "status": "active",    "progress": 60,    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "goal_name": "Improve customer satisfaction to 90%",    "collaborators": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint updates an existing key result. All fields are optional — only the fields provided are updated.

Progress is not editable here

current_value cannot be changed via this endpoint. Progress is recorded through the check-in flow instead.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal the key result belongs to.

key_result_iduuidrequired

The UUID of the key result to update.

Request Body

namestring

The name of the key result.

descriptionstring

A longer description providing context for the key result.

unitenum<string>

The unit type used to measure progress. Determines how start_value, target_value, and check-in values are interpreted.

  • numerical — a plain number
  • percentage — a percentage from 0-100
  • monetary — a currency amount; requires sub_unit
  • complete — a boolean-style 0/1 completion marker
sub_unitstring

The ISO currency code (e.g. AUD, USD) used to display the value.

start_valuenumber

The starting value of the key result. Must differ from the effective target_value.

target_valuenumber

The target value to achieve. Must differ from the effective start_value.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD). Must be a future date, and cannot be after the due date of the parent goal.

owner_iduuid

The UUID of the employee who owns this key result.

collaboratorsstring[]

The UUIDs of employees collaborating on this key result. This is a full replacement of the existing collaborators list.

current_valuenumber

Not updatable via this endpoint — use the check-in flow to record progress. Including this field returns a 422 error.

Response Body

Returns the updated key result.

dataobject
iduuid

Unique identifier for the key result.

namestring

The name of the key result.

unit_typeenum<string>

The unit type used to measure this key result.

unitstring

The display unit symbol (e.g. % or a currency code like AUD). Only present when unit_type is percentage or currency.

start_valuenumber

The starting value of the key result.

target_valuenumber

The target value to achieve.

current_valuenumber

The current value of the key result. Omitted when no check-in has been recorded.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the key result. Omitted when no status has been set.

statusenum<string>

Whether the key result is active or archived.

progressnumber

The percentage completion of the key result (0 to 100), rounded to two decimal places.

owner_iduuid

The UUID of the employee who owns the key result. Omitted when no owner is set.

owner_namestring

The full name of the employee who owns the key result. Omitted when no owner is set.

creator_iduuid

The UUID of the employee who created the key result. Omitted when no creator is recorded.

creator_namestring

The full name of the employee who created the key result. Omitted when no creator is recorded.

goal_iduuid

The UUID of the goal this key result belongs to.

goal_namestring

The name of the goal this key result belongs to.

collaboratorsobject[]

Employees collaborating on this key result.

created_atdatetime

The date and time the key result was created in RFC 3339 format.

updated_atdatetime

The date and time the key result was last updated in RFC 3339 format.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "target_value": 80,    "due_date": "2026-09-30"  }'

Response

{  "data": {    "id": "l2m3n4o5-p6q7-8901-lmno-pq2345678901",    "name": "Increase employee engagement score to 80%",    "unit_type": "percentage",    "unit": "%",    "start_value": 65,    "target_value": 80,    "current_value": 72.5,    "due_date": "2026-09-30",    "health_status": "making_progress",    "status": "active",    "progress": 50,    "owner_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",    "owner_name": "Alice Chen",    "creator_id": "36bd330e-3a6b-4539-8c86-a414fc3b485e",    "creator_name": "Alice Chen",    "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "goal_name": "Improve customer satisfaction to 90%",    "collaborators": [      {        "id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",        "name": "Jane Smith"      }    ],    "created_at": "2026-02-01T10:00:00+00:00",    "updated_at": "2026-06-01T11:15:00+00:00"  }}

This endpoint permanently deletes a key result.

Irreversible

This action cannot be undone. The key result cannot be recovered after deletion.

DELETE
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal the key result belongs to.

key_result_iduuidrequired

The UUID of the key result to delete.

Response Body

Returns HTTP 204 No Content on success. No response body is included.

Example

curl -X DELETE \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

This endpoint does not return a response body.

This endpoint archives or unarchives a key result. Archiving a key result excludes it from the parent goal's progress calculation without permanently deleting it.

Idempotent

Archiving an already-archived key result, or unarchiving an already-active key result, returns HTTP 200 with no error.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id/archive_status

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal the key result belongs to.

key_result_iduuidrequired

The UUID of the key result to archive or unarchive.

Request Body

statusenum<string>required

The desired archive state of the key result. Use archived to archive the key result, or active to unarchive it.

Response Body

dataobject
successboolean

true when the archive status was updated successfully.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id/archive_status" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "status": "archived"  }'

Response

{  "data": {    "success": true  }}

This endpoint records a check-in on a key result, updating its current value and health status.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id/status

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal the key result belongs to.

key_result_iduuidrequired

The UUID of the key result to check in on.

Request Body

current_valuenumberrequired

The new current value for the key result. For key results using the complete unit type, only 0 or 1 is accepted.

health_statusenum<string>required

The health status to record for this check-in. Allowed values: on_track, making_progress, off_track.

commentstring

An optional comment to include with the check-in. Maximum 5,000 characters.

Response Body

Returns HTTP 200 with the updated key result on success.

dataobject
iduuid

Unique identifier for the key result.

namestring

The name of the key result.

unit_typeenum<string>

The unit type used to measure this key result.

unitstring

The display unit symbol (e.g. % or a currency code like AUD). Only present when unit_type is percentage or currency.

start_valuenumber

The starting value of the key result.

target_valuenumber

The target value to achieve.

current_valuenumber

The current value of the key result. Omitted when no check-in has been recorded.

due_datestring

The due date of the key result in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the key result. Omitted when no status has been set.

statusenum<string>

Whether the key result is active or archived.

progressnumber

The percentage completion of the key result (0 to 100), rounded to two decimal places.

owner_iduuid

The UUID of the employee who owns the key result. Omitted when no owner is set.

owner_namestring

The full name of the employee who owns the key result. Omitted when no owner is set.

creator_iduuid

The UUID of the employee who created the key result. Omitted when no creator is recorded.

creator_namestring

The full name of the employee who created the key result. Omitted when no creator is recorded.

goal_iduuid

The UUID of the goal this key result belongs to.

goal_namestring

The name of the goal this key result belongs to.

collaboratorsobject[]

Employees collaborating on this key result.

created_atdatetime

The date and time the key result was created in RFC 3339 format.

updated_atdatetime

The date and time the key result was last updated in RFC 3339 format.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/key_results/:key_result_id/status" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "current_value": 60,    "health_status": "on_track",    "comment": "Behind schedule due to resource constraints in Q2."  }'

Response

{  "data": {    "id": "k1r2s3t4-u5v6-7890-klmn-op1234567890",    "name": "Increase NPS score to 70",    "unit_type": "numerical",    "start_value": 45,    "target_value": 70,    "current_value": 60,    "due_date": "2026-12-31",    "health_status": "on_track",    "status": "active",    "progress": 60,    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "goal_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "goal_name": "Improve customer satisfaction to 90%",    "collaborators": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint archives or unarchives a goal. Archiving a goal removes it from active views without permanently deleting it. Key results belonging to the goal are not affected.

Idempotent

Archiving an already-archived goal, or unarchiving an already-active goal, returns HTTP 200 with no error.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/archive_status

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to archive or unarchive.

Request Body

statusenum<string>required

The desired archive state of the goal. Use archived to archive the goal, or active to unarchive it.

reasonstring

An optional reason for archiving the goal. When provided, the reason is recorded as a comment on the goal. Ignored when status is active.

Response Body

dataobject
successboolean

true when the archive status was updated successfully.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/archive_status" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "status": "archived",    "reason": "Goal superseded by Q3 strategy"  }'

Response

{  "data": {    "success": true  }}

This endpoint records a health-status check-in on a goal. Every successful call creates an activity entry visible in the goal's feed, regardless of whether the health status changed.

Activity always recorded

Unlike a manual check-in in the platform, every API call records an activity entry — even if the health status is unchanged. This ensures integrations always produce a visible audit trail.

PATCH
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/status

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to check in on.

Request Body

health_statusenum<string>required

The health status to record for this check-in. Allowed values: on_track, making_progress, off_track.

commentstring

An optional comment to include with the check-in. Maximum 5,000 characters.

Response Body

Returns HTTP 200 with the updated goal on success.

dataobject
iduuid

Unique identifier for the goal.

namestring

The name of the goal.

goal_typeenum<string>

The type of the goal.

descriptionstring

The description of the goal.

owner_iduuid

The UUID of the employee who owns the goal.

owner_namestring

The full name of the employee who owns the goal.

creator_iduuid

The UUID of the employee who created the goal.

creator_namestring

The full name of the employee who created the goal.

due_datestring

The due date of the goal in ISO 8601 format (YYYY-MM-DD).

health_statusenum<string>

The health status of the goal.

visibility_typeenum<string>

Who can see the goal. everyone is visible to all organisation members; participants is visible only to the owner and key result collaborators; groups is visible only to members of the associated group (only valid for goal_type=group).

parent_iduuid

The UUID of the parent goal this goal is aligned to.

parent_namestring

The name of the parent goal this goal is aligned to.

feed_to_parentboolean

Whether progress on this goal feeds into the parent goal's progress.

group_iduuid

The UUID of the group associated with this goal. Only populated for goal_type=group.

group_namestring

The name of the group associated with this goal. Only populated for goal_type=group.

statusenum<string>

Whether the goal is active or archived.

progressnumber

The percentage completion of the goal (0 to 100), rounded to two decimal places.

key_results_countnumber

The number of active key results on this goal.

children_countnumber

The number of active child goals aligned to this goal.

attachmentsobject[]

Files attached to the goal.

created_atdatetime

The date and time the goal was created in RFC 3339 format.

updated_atdatetime

The date and time the goal was last updated in RFC 3339 format.

Example

curl -X PATCH \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id/status" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -H "Content-Type: application/json" \  -d '{    "health_status": "on_track",    "comment": "Behind schedule due to resource constraints in Q2."  }'

Response

{  "data": {    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",    "name": "Improve customer satisfaction to 90%",    "goal_type": "company",    "description": "Drive NPS and CSAT scores by improving product quality and support response times.",    "owner_id": "724ec1f7-ebe9-4af6-84bf-7f071167007a",    "owner_name": "Jane Smith",    "creator_id": "0139ebb7-6f3e-4bc0-954e-9e50614fccd1",    "creator_name": "John Doe",    "due_date": "2026-12-31",    "health_status": "on_track",    "visibility_type": "everyone",    "parent_id": null,    "parent_name": null,    "feed_to_parent": false,    "group_id": null,    "group_name": null,    "status": "active",    "progress": 62.5,    "key_results_count": 3,    "children_count": 2,    "attachments": [],    "created_at": "2026-01-15T09:00:00+00:00",    "updated_at": "2026-06-01T14:30:00+00:00"  }}

This endpoint permanently deletes a goal. All of the goal's key results are permanently deleted along with it. Child goals aligned to the deleted goal are not deleted — they become root-level goals with no parent.

Irreversible

This action cannot be undone. The goal and its key results cannot be recovered after deletion.

Requires the Goals - Delete scope, and either the Goals and OKRs Delete permission for the goal's type, or that the caller is the owner or creator of the goal.

DELETE
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id

Path Parameters

organisation_iduuidrequired

The UUID of the organisation the goal belongs to.

goal_iduuidrequired

The UUID of the goal to delete.

Response Body

Returns HTTP 204 No Content on success. No response body is included.

Example

curl -X DELETE \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/:goal_id" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ"

Response

This endpoint does not return a response body.

Upload files for use as goal attachments. The returned file ids can then be passed as attachment_ids when creating or updating a goal.

POST
https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/file_uploads

Path Parameters

organisation_iduuidrequired

The ID of the organisation

Request Body

filesfile[]required

Files to upload via multipart/form-data.

Note

Maximum 3 files per request, each up to 10 MB.
Allowed formats: JPG, JPEG, PNG, PDF, DOC, DOCX.

Response Body

Returns a list of successfully uploaded file details on HTTP 201.

dataobject
filesobject[]

List of uploaded file details

Example

curl -X POST \  "https://api.employmenthero.com/api/v1/organisations/:organisation_id/goals/file_uploads" \  -H "Authorization: Bearer AUXJ3123xyrj123fdsjkl124aAJKQ" \  -F "files=/path/to/receipt.pdf"

Response

{  "data": {    "files": [      {        "id": "c580adfd-c0f6-4544-85a8-b366c4c79251",        "url": "https://cdn.employmenthero.com/files/goal-attachment.pdf",        "name": "goal-attachment.pdf"      }    ]  }}