---
updatedAt: 2025-12-16T09:38:48.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 Project(s)

Create one or more projects with the specified fields. Supports bulk creation of up to 100 projects in a single request.
<p><b>Project Tracking</b>:</p> <ul> <li><b>By Project</b>: Use `/project/billable` field, do not pass `/project/taskIds`</li> <li><b>By Task</b>: Use `/project/taskIds` field, do not pass `/project/billable`</li> </ul> <p><b>Note</b>: Projects are created as `active` by default. To update the status, use <a href="/reference/post_attendance-project-archive" target="_blank">archive</a>/<a href="/reference/post_attendance-project-restore" target="_blank">restore</a> endpoints</p>
<p><b>Testing notes</b>:</p>
  <ul>
  <li>Use the testing widget's <b>Try It!</b> option to test this endpoint.</li>
  <li>Use the <b>Examples > Request Example</b> option to see how to initiate body parameters.</li>
  <li>For custom fields, use the <b>Examples > Request Example > Create project with custom fields</b> and copy to an external API client tool to change parameters.</li>
  </ul>


# OpenAPI definition

```json
{
  "openapi": "3.1.1",
  "info": {
    "title": "Attendance API",
    "contact": {
      "name": "Hi Bob, Inc."
    },
    "description": "Public API for importing attendance entries and managing attendance projects, tasks, and clients. Supports detailed field metadata and flexible filtering.",
    "license": {
      "name": "Proprietary",
      "url": "https://apidocs.hibob.com/docs/api-terms-of-use"
    },
    "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": "Projects",
      "description": "Operations for managing attendance projects, tasks and clients"
    }
  ],
  "paths": {
    "/attendance/projects": {
      "post": {
        "operationId": "post_attendance-projects",
        "tags": [
          "Projects"
        ],
        "summary": "Create Project(s)",
        "description": "Create one or more projects with the specified fields. Supports bulk creation of up to 100 projects in a single request.\n<p><b>Project Tracking</b>:</p> <ul> <li><b>By Project</b>: Use `/project/billable` field, do not pass `/project/taskIds`</li> <li><b>By Task</b>: Use `/project/taskIds` field, do not pass `/project/billable`</li> </ul> <p><b>Note</b>: Projects are created as `active` by default. To update the status, use <a href=\"/reference/post_attendance-project-archive\" target=\"_blank\">archive</a>/<a href=\"/reference/post_attendance-project-restore\" target=\"_blank\">restore</a> endpoints</p>\n<p><b>Testing notes</b>:</p>\n  <ul>\n  <li>Use the testing widget's <b>Try It!</b> option to test this endpoint.</li>\n  <li>Use the <b>Examples > Request Example</b> option to see how to initiate body parameters.</li>\n  <li>For custom fields, use the <b>Examples > Request Example > Create project with custom fields</b> and copy to an external API client tool to change parameters.</li>\n  </ul>\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectCreateRequest"
              },
              "examples": {
                "projectTrackingCreate": {
                  "summary": "Create project tracked by a billable project",
                  "value": {
                    "items": [
                      {
                        "objectType": "project",
                        "fields": {
                          "/project/name": {
                            "value": "Mobile App Redesign"
                          },
                          "/project/description": {
                            "value": "Complete redesign of mobile application UI/UX"
                          },
                          "/project/billable": {
                            "value": true
                          },
                          "/project/clientReference": {
                            "value": 42
                          },
                          "/project/audienceSelector": {
                            "value": {
                              "mode": "all"
                            }
                          }
                        }
                      }
                    ]
                  }
                },
                "customFieldsCreate": {
                  "summary": "Create project with custom fields",
                  "description": "Create a project including custom fields",
                  "value": {
                    "items": [
                      {
                        "objectType": "project",
                        "fields": {
                          "/project/name": {
                            "value": "Enterprise Integration"
                          },
                          "/project/description": {
                            "value": "Integration with enterprise systems"
                          },
                          "/project/billable": {
                            "value": true
                          },
                          "/project/clientReference": {
                            "value": 45
                          },
                          "/project/field_591": {
                            "value": 50000
                          },
                          "/project/field_203": {
                            "value": "high"
                          },
                          "/project/audienceSelector": {
                            "value": {
                              "mode": "all"
                            }
                          }
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Project created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCreateResponse"
                },
                "examples": {
                  "singleProject": {
                    "summary": "Single project created",
                    "description": "Response when creating a single project",
                    "value": {
                      "ids": [
                        123456789
                      ]
                    }
                  },
                  "multipleProjects": {
                    "summary": "Multiple projects created",
                    "description": "Response when creating multiple projects in bulk",
                    "value": {
                      "ids": [
                        123456789,
                        123456790
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is malformed or includes invalid parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Check your service user credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The service user or token is missing the required permissions to access the requested data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded - see <a href=\"https://apidocs.hibob.com/reference/projects#rate-limiting\">Rate limits</a>",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Try again or contact support if the issue persists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "basic": []
          },
          {
            "Bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "basic": {
        "type": "http",
        "scheme": "basic",
        "description": "Basic HTTP authentication using service user credentials"
      },
      "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."
      }
    },
    "schemas": {
      "ApiErrorResponse": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Error key identifier"
          },
          "error": {
            "type": "string",
            "description": "Human-readable error message"
          },
          "args": {
            "type": "array",
            "description": "Optional error arguments providing additional context",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ProjectCreateRequestObject": {
        "type": "object",
        "properties": {
          "objectType": {
            "type": "string",
            "enum": [
              "project"
            ],
            "description": "Type of the object"
          },
          "fields": {
            "type": "object",
            "properties": {
              "/project/name": {
                "type": "object",
                "description": "The project name must be unique",
                "properties": {
                  "value": {
                    "type": "string"
                  }
                }
              },
              "/project/description": {
                "type": "object",
                "description": "The description of this project to explain what the project is about",
                "properties": {
                  "value": {
                    "type": "string"
                  }
                }
              },
              "/project/billable": {
                "type": "object",
                "description": "If tracking by project, this field is mandatory. It determines Whether this project is billable when tracking billing by project. If tracking by task, you must not pass this field.",
                "properties": {
                  "value": {
                    "type": "boolean"
                  }
                }
              },
              "/project/clientReference": {
                "type": "object",
                "description": "This is a reference to a project client. Use the <a href=\"/reference/post_attendance-project-clients-search\" target=\"_blank\">project client search endpoint</a> to get the client ID you should pass here.",
                "properties": {
                  "value": {
                    "type": "integer",
                    "format": "int64"
                  }
                }
              },
              "/project/audienceSelector": {
                "type": "object",
                "description": "Employees assigned to this project. Only assigned employees can log attendance entries for the project. Use `mode=all` to allow all employees or `mode=explicit` to specify employees in `employeeIds`. See <a href=\"/reference/post_people-search\" target=\"_blank\">Search for employees</a> to get the employee IDs.",
                "properties": {
                  "value": {
                    "type": "object",
                    "properties": {
                      "mode": {
                        "type": "string",
                        "enum": [
                          "all",
                          "explicit"
                        ]
                      },
                      "employeeIds": {
                        "description": "An array of employee IDs to assign. Note that if using `mode=all` this array will be ignored.",
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "/project/taskIds": {
                "type": "object",
                "description": "Required for tracking billing by task. When `taskIds` is provided, project's `billable` parameter in not allowed. The attendance entries are tracked at the task level, and the billable flag of the task determines whether the attendance entry is billable or not. Employees assigned to the project must select a task when logging attendance entries. Use the <a href=\"/reference/post_attendance-project-tasks-search\" target=\"_blank\">project task search endpoint</a> to get the task IDs.",
                "properties": {
                  "value": {
                    "type": "array",
                    "items": {
                      "type": "integer",
                      "format": "int64"
                    }
                  }
                }
              }
            },
            "required": [
              "/project/name",
              "/project/audienceSelector"
            ],
            "description": "Project fields for create request"
          }
        },
        "required": [
          "objectType",
          "fields"
        ]
      },
      "ProjectCreateResponse": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Array of unique identifiers of the created projects"
          }
        }
      },
      "ProjectCreateRequest": {
        "type": "object",
        "description": "Request schema for creating projects",
        "properties": {
          "items": {
            "type": "array",
            "description": "List of projects to create (1-100 items)",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "$ref": "#/components/schemas/ProjectCreateRequestObject"
            }
          }
        },
        "required": [
          "items"
        ]
      }
    }
  }
}
```