# Files

## 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"
}
```

## Query Files

`FileQueryResponse files().query(FileQueryParamsparams = FileQueryParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

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

Query files with filtering and pagination. Deprecated: use `GET /files`.

### Parameters

- `FileQueryParams params`

  - `Optional<String> organizationId`

  - `Optional<String> projectId`

  - `Optional<Filter> filter`

    Filter parameters for file queries.

    - `Optional<String> dataSourceId`

      Filter by data source ID

    - `Optional<String> externalFileId`

      Filter by external file ID

    - `Optional<List<String>> fileIds`

      Filter by specific file IDs

    - `Optional<String> fileName`

      Filter by file name

    - `Optional<Boolean> onlyManuallyUploaded`

      Filter only manually uploaded files (data_source_id is null)

    - `Optional<String> projectId`

      Filter by project ID

  - `Optional<String> orderBy`

    A comma-separated list of fields to order by, sorted in ascending order. Use 'field_name desc' to specify descending order.

  - `Optional<Long> pageSize`

    The maximum number of items to return. The service may return fewer than this value. If unspecified, a default page size will be used. The maximum value is typically 1000; values above this will be coerced to the maximum.

  - `Optional<String> pageToken`

    A page token, received from a previous list call. Provide this to retrieve the subsequent page.

### Returns

- `class FileQueryResponse:`

  Paginated list of files.

  - `List<Item> items`

    The list of items.

    - `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

  - `Optional<String> nextPageToken`

    A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.

  - `Optional<Long> totalSize`

    The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only.

### 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.FileQueryParams;
import com.llamacloud_prod.api.models.files.FileQueryResponse;

public final class Main {
    private Main() {}

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

        FileQueryResponse response = client.files().query();
    }
}
```

#### Response

```json
{
  "items": [
    {
      "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"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## List Files

`FileListPage files().list(FileListParamsparams = FileListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/beta/files`

List files with optional filtering and pagination.

Filter by `file_name`, `file_ids`, or `external_file_id`.
Supports cursor-based pagination and custom ordering.

### Parameters

- `FileListParams params`

  - `Optional<List<String>> expand`

    Fields to expand on each file.

  - `Optional<String> externalFileId`

    Filter by external file ID.

  - `Optional<List<String>> fileIds`

    Filter by specific file IDs.

  - `Optional<String> fileName`

    Filter by file name (exact match).

  - `Optional<String> orderBy`

    A comma-separated list of fields to order by, sorted in ascending order. Use 'field_name desc' to specify descending order.

  - `Optional<String> organizationId`

  - `Optional<Long> pageSize`

    The maximum number of items to return. Defaults to 50, maximum is 1000.

  - `Optional<String> pageToken`

    A page token received from a previous list call. Provide this to retrieve the subsequent page.

  - `Optional<String> projectId`

### Returns

- `class FileListResponse:`

  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.FileListPage;
import com.llamacloud_prod.api.models.files.FileListParams;

public final class Main {
    private Main() {}

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

        FileListPage page = client.files().list();
    }
}
```

#### Response

```json
{
  "items": [
    {
      "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"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## Delete File

`files().delete(FileDeleteParamsparams = FileDeleteParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**delete** `/api/v1/beta/files/{file_id}`

Delete a file from the project.

### Parameters

- `FileDeleteParams params`

  - `Optional<String> fileId`

  - `Optional<String> organizationId`

  - `Optional<String> projectId`

### 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.FileDeleteParams;

public final class Main {
    private Main() {}

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

        client.files().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

## Read File Content

`PresignedUrl files().get(FileGetParamsparams = FileGetParams.none(), RequestOptionsrequestOptions = RequestOptions.none())`

**get** `/api/v1/beta/files/{file_id}/content`

Get a presigned URL to download the file content.

### Parameters

- `FileGetParams params`

  - `Optional<String> fileId`

  - `Optional<Long> expiresAtSeconds`

  - `Optional<String> organizationId`

  - `Optional<String> projectId`

### Returns

- `class PresignedUrl:`

  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

### 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.FileGetParams;
import com.llamacloud_prod.api.models.files.PresignedUrl;

public final class Main {
    private Main() {}

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

        PresignedUrl presignedUrl = client.files().get("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
    }
}
```

#### Response

```json
{
  "expires_at": "2019-12-27T18:11:19.117Z",
  "url": "https://example.com",
  "form_fields": {
    "foo": "string"
  }
}
```

## Domain Types

### File

- `class File:`

  Schema for a file.

  - `String id`

    Unique identifier

  - `String name`

  - `String projectId`

    The ID of the project that the file belongs to

  - `Optional<LocalDateTime> createdAt`

    Creation datetime

  - `Optional<String> dataSourceId`

    The ID of the data source that the file belongs to

  - `Optional<LocalDateTime> expiresAt`

    The expiration date for the file. Files past this date can be deleted.

  - `Optional<String> externalFileId`

    The ID of the file in the external system

  - `Optional<Long> fileSize`

    Size of the file in bytes

  - `Optional<String> fileType`

    File type (e.g. pdf, docx, etc.)

  - `Optional<LocalDateTime> lastModifiedAt`

    The last modified time of the file

  - `Optional<PermissionInfo> permissionInfo`

    Permission information for the file

    - `class UnionMember0:`

    - `List<JsonValue>`

    - `String`

    - `double`

    - `boolean`

  - `Optional<String> purpose`

    The intended purpose of the file (e.g., 'user_data', 'parse', 'extract', 'split', 'classify')

  - `Optional<ResourceInfo> resourceInfo`

    Resource information for the file

    - `class UnionMember0:`

    - `List<JsonValue>`

    - `String`

    - `double`

    - `boolean`

  - `Optional<LocalDateTime> updatedAt`

    Update datetime

### Presigned URL

- `class PresignedUrl:`

  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
