---
updatedAt: 2025-07-23T11:34:18.000Z
---

Fetch the complete documentation index at: https://apidocs.hibob.com/llms.txt. Use this file to discover all available pages before exploring further.

# Update Key Results Details

Update the details of the key results of a given goal. This endpoint supports updating the details: title, measureType, target, currency, and currencySymbol fields only. Each key result update is processed independently with individual success/failure tracking.
<br><br>**Note:** To update the key result progress (check-in), use the `/goals/goals/{goalId}/key-results/progress` endpoint. <br>


# OpenAPI definition

```json
{
  "openapi": "3.1.1",
  "info": {
    "title": "Goals API",
    "description": "Public API for managing Goal Types, Goals, and Key Results with clean entity separation.",
    "license": {
      "name": "Proprietary",
      "url": "https://apidocs.hibob.com/docs/api-terms-of-use"
    },
    "contact": {
      "name": "Hi Bob, Inc."
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.hibob.com/v1",
      "description": "Production"
    },
    {
      "url": "https://api.sandbox.hibob.com/v1",
      "description": "Sandbox"
    }
  ],
  "x-readme": {
    "metrics-enabled": false
  },
  "tags": [
    {
      "name": "Goals",
      "description": "Operations for managing Goal Types, Goals, and Key Results"
    }
  ],
  "paths": {
    "/goals/goals/{goalId}/key-results": {
      "patch": {
        "operationId": "patch_goals-goals-goalid-key-results",
        "tags": [
          "Goals"
        ],
        "summary": "Update Key Results Details",
        "description": "Update the details of the key results of a given goal. This endpoint supports updating the details: title, measureType, target, startValue, currency, and currencySymbol fields only. Each key result update is processed independently with individual success/failure tracking.\n<br><br>**Note:** To update the key result progress (check-in), use the `/goals/goals/{goalId}/key-results/progress` endpoint. <br>\n",
        "parameters": [
          {
            "name": "goalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "The unique identifier of the goal containing the key results"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateKeyResultsRequest"
              },
              "example": {
                "items": [
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "keyResultId": {
                        "value": 123
                      },
                      "title": {
                        "value": "Updated Key Result Title"
                      },
                      "target": {
                        "value": 150
                      }
                    }
                  },
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "keyResultId": {
                        "value": 124
                      },
                      "measureType": {
                        "value": "currency"
                      },
                      "target": {
                        "value": 10000
                      },
                      "startValue": {
                        "value": 25000
                      },
                      "currency": {
                        "value": "USD"
                      },
                      "currencySymbol": {
                        "value": "$"
                      }
                    }
                  },
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "keyResultId": {
                        "value": 125
                      },
                      "title": {
                        "value": "Combined metadata update"
                      },
                      "target": {
                        "value": 200
                      },
                      "startValue": {
                        "value": 50
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Key results that were updated, and the errors if any failed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "description": "Whether the overall update was successful"
                    },
                    "goalId": {
                      "type": "integer",
                      "format": "int64",
                      "description": "The ID of the goal containing the key results"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "keyResultId": {
                            "type": "integer",
                            "format": "int64",
                            "description": "The ID of the key result"
                          },
                          "success": {
                            "type": "boolean",
                            "description": "Whether this specific key result update was successful"
                          },
                          "error": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Error message if update failed"
                          }
                        }
                      },
                      "description": "Array of individual update results"
                    }
                  }
                },
                "example": {
                  "success": true,
                  "goalId": 456,
                  "results": [
                    {
                      "keyResultId": 123,
                      "success": true
                    },
                    {
                      "keyResultId": 124,
                      "success": true
                    },
                    {
                      "keyResultId": 125,
                      "success": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request with structured error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Goal or key result not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": "NOT_FOUND",
                  "message": "Goal not found",
                  "statusCode": 404,
                  "timestamp": "2025-01-01T12:00:00Z"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ApiErrorResponse": {
        "type": "object",
        "required": [
          "error",
          "message",
          "statusCode",
          "timestamp"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Error type identifier",
            "enum": [
              "BAD_REQUEST",
              "NOT_FOUND",
              "INTERNAL_SERVER_ERROR",
              "TOO_MANY_REQUESTS",
              "UNAUTHORIZED",
              "FORBIDDEN"
            ],
            "example": "BAD_REQUEST"
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message",
            "example": "Invalid input provided"
          },
          "statusCode": {
            "type": "integer",
            "description": "HTTP status code",
            "enum": [
              400,
              401,
              403,
              404,
              429,
              500
            ],
            "example": 400
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "ISO timestamp when the error occurred",
            "example": "2025-01-01T12:00:00Z"
          }
        }
      },
      "UpdateKeyResultsRequest": {
        "type": "object",
        "description": "Request schema for updating key results",
        "properties": {
          "items": {
            "type": "array",
            "description": "List of key results to update",
            "items": {
              "type": "object",
              "properties": {
                "objectType": {
                  "type": "string",
                  "description": "Type of the object",
                  "enum": [
                    "keyResult"
                  ],
                  "default": "keyResult"
                },
                "fields": {
                  "type": "object",
                  "properties": {
                    "keyResultId": {
                      "type": "object",
                      "description": "The ID of the key result to update",
                      "properties": {
                        "value": {
                          "type": "integer",
                          "format": "int64"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    "title": {
                      "type": "object",
                      "description": "The title of the key result",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      }
                    },
                    "measureType": {
                      "type": "object",
                      "description": "The measure type of the key result",
                      "properties": {
                        "value": {
                          "type": "string",
                          "enum": [
                            "numeric",
                            "boolean",
                            "percentage",
                            "currency"
                          ]
                        }
                      }
                    },
                    "target": {
                      "type": "object",
                      "description": "The target value for this key result",
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "number",
                              "description": "For numeric, currency, and percentage measures"
                            },
                            {
                              "type": "boolean",
                              "description": "For boolean measures"
                            }
                          ]
                        }
                      }
                    },
                    "startValue": {
                      "type": "object",
                      "description": "The baseline start value for this key result. Applies to numeric, percentage, and currency measures. Depending on how the key result is defined, the target can be ascending or descending, so the start value can be lower or higher than the target value.\n",
                      "properties": {
                        "value": {
                          "type": "number"
                        }
                      }
                    },
                    "currency": {
                      "type": "object",
                      "description": "The currency code for currency-type key results (e.g., 'USD', 'EUR', 'GBP'). Required when measureType is 'currency'\n",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      }
                    },
                    "currencySymbol": {
                      "type": "object",
                      "description": "The currency symbol for currency-type key results (e.g., '$', '€', '£'). Required when measureType is 'currency'\n",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": [
                    "keyResultId"
                  ]
                }
              },
              "required": [
                "objectType",
                "fields"
              ]
            }
          }
        },
        "required": [
          "items"
        ]
      }
    },
    "securitySchemes": {
      "Basic": {
        "type": "http",
        "scheme": "basic"
      },
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "OAuth 2.0",
        "description": "OAuth 2.0 authentication using an Access Token is available for registered partners only.  Try It! does not support the full HiBob OAuth flow. You can follow <a href=\"https://apidocs.hibob.com/reference/oauth-20#testing-from-the-public-api-reference\" target=\"_blank\">these steps</a> to complete the OAuth 2.0 flow in Postman and then paste the token here."
      }
    }
  }
}
```