# Create a case manually Manually create a case from a list of previously uploaded files. Each file in the request must be accompanied by a type indicating the role the file plays in the case (e.g. main document, attachment). This is the manual case creation path, intended for API clients that determine case composition directly, as opposed to the AI-driven case creation triggered by POST /cases/process-file-batch. This is an asynchronous operation. A successful response confirms that the request has been accepted and returns the identifier of the case being created. The case will be processed in the background. The projectId in the request body is the identifier of the project in which the case will be created. Endpoint: POST /cases/create Version: 2.68.0 Security: OAuth2 ## Request fields (application/json): - `files` (array, required) List of files to include in the case, each with their assigned role. - `files.id` (string, required) Identifier of the file as returned by the upload endpoint. Example: "197c997c-4bab-41e7-b33d-bad287046914" - `files.type` (string, required) The role the file plays in the case (e.g. mainDocument, attachment). Must only contain letters from the Latin alphabet with no whitespace or special characters. Example: "salesOrder" - `files.mainFile` (boolean, required) Indicates whether this file is the main document of the case. Example: true - `projectId` (string, required) Identifier of the project in which the case will be created. Example: "69bbd1e18cab258833c9ecf8" - `externalId` (string) External identifier of the case. Can be used to link the case with an identifier in your system. Example: "case-0001" - `externalData` (object) Associated external data. Will be applied to the case or to all cases in a batch. Provided as a flat JSON object. The properties are case-insensitive. The maximum amount of properties is limited to 20. ## Response 202 fields (application/json): - `caseId` (string, required) Identifier of the case being created. Can be used to retrieve the case via GET /cases/{id} once processing is complete. Example: "8512a5dd-91b9-4363-a869-db17394a955d" - `projectId` (string, required) Identifier of the project in which the case is being created. Example: "69bbd20e5c155a70e763bc8d" ## Response 400 fields (application/json): - `detail` (string, required) A human readable explanation of the error. - `status` (integer, required) The HTTP status code. - `title` (string, required) A short summary of the error ## Response 404 fields (application/json): - `detail` (string, required) A human readable explanation of the error. - `status` (integer, required) The HTTP status code. - `title` (string, required) A short summary of the error ## Response 422 fields (application/json): - `detail` (string, required) A human readable explanation of the error. - `status` (integer, required) The HTTP status code. - `title` (string, required) A short summary of the error ## Response 429 fields