---
updatedAt: 2025-09-14T10:19:00.000Z
---

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

# Create Key Results

Creates one or more key results for a specific goal. <br>
Each key result will be created with the specified title, `measureBy` properties, and automatically associated with the given goal.<br><br>
**Limitations:**<br> - You can create up to 25 key results per request.<br> - If the request includes more than 25 items, it will return a 400 error.<br><br>
The response includes an array of the created key result IDs.  <br> If any key result fails to be created, a structured error response will be returned with details for each failed item. <br><br>
**Testing notes:** <br> - Use the testing widget's **Try It!** option to test this endpoint.<br> - Use the **Examples > Request Example** option to see how to initiate body parameters.<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": {
      "post": {
        "operationId": "post_goals-goals-goalid-key-results",
        "tags": [
          "Goals"
        ],
        "summary": "Create Key Results",
        "description": "Creates one or more key results for a specific goal. <br>\nEach key result will be created with the specified title, `measureBy` properties, and automatically associated with the given goal.<br><br>\n**Limitations:**<br> - You can create up to 25 key results per request.<br> - If the request includes more than 25 items, it will return a 400 error.<br><br>\nThe response includes an array of the created key result IDs.  <br> If any key result fails to be created, a structured error response will be returned with details for each failed item. <br><br>\n**Testing notes:** <br> - Use the testing widget's **Try It!** option to test this endpoint.<br> - Use the **Examples > Request Example** option to see how to initiate body parameters.<br>\n",
        "parameters": [
          {
            "name": "goalId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "The unique identifier of the goal to create key results for"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateKeyResultsRequest"
              },
              "example": {
                "items": [
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "title": {
                        "value": "Increase revenue by 25%"
                      },
                      "description": {
                        "value": "Focus on new customer acquisition"
                      },
                      "measureType": {
                        "value": "percentage"
                      },
                      "target": {
                        "value": 25
                      },
                      "startValue": {
                        "value": 0
                      },
                      "currentValue": {
                        "value": 0
                      }
                    }
                  },
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "title": {
                        "value": "Launch 3 new features"
                      },
                      "description": {
                        "value": "Complete feature development"
                      },
                      "measureType": {
                        "value": "numeric"
                      },
                      "target": {
                        "value": 3
                      },
                      "startValue": {
                        "value": 0
                      },
                      "currentValue": {
                        "value": 0
                      }
                    }
                  },
                  {
                    "objectType": "keyResult",
                    "fields": {
                      "title": {
                        "value": "Reduce costs by $50,000"
                      },
                      "description": {
                        "value": "Optimize operational expenses"
                      },
                      "measureType": {
                        "value": "currency"
                      },
                      "target": {
                        "value": 50000
                      },
                      "startValue": {
                        "value": 100000
                      },
                      "currentValue": {
                        "value": 100000
                      },
                      "currency": {
                        "value": "USD"
                      },
                      "currencySymbol": {
                        "value": "$"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key results created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "keyResultIds": {
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "format": "int64"
                      },
                      "description": "Array of created key result IDs"
                    }
                  }
                },
                "example": {
                  "keyResultIds": [
                    200,
                    201,
                    202
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request with structured error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Goal 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"
          }
        }
      },
      "CreateKeyResultsRequest": {
        "type": "object",
        "description": "Request schema for creating new key results",
        "properties": {
          "items": {
            "type": "array",
            "maxItems": 25,
            "description": "List of key results to create",
            "items": {
              "type": "object",
              "properties": {
                "objectType": {
                  "type": "string",
                  "description": "Type of the object",
                  "enum": [
                    "keyResult"
                  ],
                  "default": "keyResult"
                },
                "fields": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "object",
                      "description": "The title of the key result",
                      "properties": {
                        "value": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    "description": {
                      "type": "object",
                      "description": "A brief description 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"
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    "target": {
                      "type": "object",
                      "description": "The target value - accepts typed values (number for numeric/currency/percentage, boolean for boolean) or strings\n",
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "number",
                              "description": "For numeric, currency, and percentage measures"
                            },
                            {
                              "type": "boolean",
                              "description": "For boolean measures"
                            }
                          ]
                        }
                      },
                      "required": [
                        "value"
                      ]
                    },
                    "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"
                        }
                      }
                    },
                    "currentValue": {
                      "type": "object",
                      "description": "The current value of the key result",
                      "properties": {
                        "value": {
                          "oneOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        }
                      }
                    },
                    "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",
                          "example": "USD"
                        }
                      }
                    },
                    "currencySymbol": {
                      "type": "object",
                      "description": "The currency symbol for currency-type key results (e.g., '$', '€', '£'). Required when measureType is 'currency'\n",
                      "properties": {
                        "value": {
                          "type": "string",
                          "example": "$"
                        }
                      }
                    }
                  },
                  "required": [
                    "title",
                    "measureType",
                    "target"
                  ]
                }
              },
              "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."
      }
    }
  }
}
```