## Upload File

`FileCreateResponse files().create(FileCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())`

**post** `/api/v1/beta/files`

Upload a file using multipart/form-data.

Set `purpose` to indicate how the file will be used:
`user_data`, `parse`, `extract`, `classify`, `split`,
`sheet`, or `agent_app`.

Returns the created file metadata including its ID for use
in subsequent parse, extract, or classify operations.

### Parameters

- `FileCreateParams params`

  - `Optional<String> organizationId`

  - `Optional<String> projectId`

  - `String file`

    The file to upload

  - `String purpose`

    The intended purpose of the file. Valid values: 'user_data', 'parse', 'extract', 'split', 'classify', 'sheet', 'agent_app'. This determines the storage and retention policy for the file.

  - `Optional<String> externalFileId`

    The ID of the file in the external system

### Returns

- `class FileCreateResponse:`

  An uploaded file.

  - `String id`

    Unique file identifier

  - `String name`

    File name including extension

  - `String projectId`

    Project this file belongs to

  - `Optional<PresignedUrl> downloadUrl`

    Schema for a presigned URL.

    - `LocalDateTime expiresAt`

      The time at which the presigned URL expires

    - `String url`

      A presigned URL for IO operations against a private file

    - `Optional<FormFields> formFields`

      Form fields for a presigned POST request

  - `Optional<LocalDateTime> expiresAt`

    When the file expires and may be automatically removed. Null means no expiration.

  - `Optional<String> externalFileId`

    Optional ID for correlating with an external system

  - `Optional<String> fileType`

    File extension (pdf, docx, png, etc.)

  - `Optional<LocalDateTime> lastModifiedAt`

    When the file was last modified (ISO 8601)

  - `Optional<String> purpose`

    How the file will be used: user_data, parse, extract, classify, split, sheet, or agent_app

### Example

```java
package com.llamacloud_prod.api.example;

import com.llamacloud_prod.api.client.LlamaCloudClient;
import com.llamacloud_prod.api.client.okhttp.LlamaCloudOkHttpClient;
import com.llamacloud_prod.api.models.files.FileCreateParams;
import com.llamacloud_prod.api.models.files.FileCreateResponse;
import java.io.ByteArrayInputStream;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        LlamaCloudClient client = LlamaCloudOkHttpClient.fromEnv();

        FileCreateParams params = FileCreateParams.builder()
            .file(new ByteArrayInputStream("Example data".getBytes()))
            .purpose("purpose")
            .build();
        FileCreateResponse file = client.files().create(params);
    }
}
```

#### Response

```json
{
  "id": "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "name": "invoice.pdf",
  "project_id": "123e4567-e89b-12d3-a456-426614174000",
  "download_url": {
    "expires_at": "2019-12-27T18:11:19.117Z",
    "url": "https://example.com",
    "form_fields": {
      "foo": "string"
    }
  },
  "expires_at": "2019-12-27T18:11:19.117Z",
  "external_file_id": "ext-12345",
  "file_type": "pdf",
  "last_modified_at": "2019-12-27T18:11:19.117Z",
  "purpose": "parse"
}
```
