> ## Documentation Index
> Fetch the complete documentation index at: https://developer.onecodex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Uploading Documents Overview

Documents may be uploaded via the REST API or by using the One Codex CLI or Python client library.

The latter two options are simpler and thus recommended. In every case, we replace spaces in filenames with underscores. To upload with the CLI, simply:

<CodeGroup>
  ```shell shell theme={null}
  # If you haven't previously logged in, the following command
  # will prompt you for your username and password and then
  # save a ~/.onecodex file with your API key
  onecodex login

  onecodex documents upload $LIST_OR_GLOB_OF_YOUR_DOCUMENTS
  ```
</CodeGroup>

Uploading via the REST API consists of 3 steps:

* (1) Initiating an upload by POSTing to [`/documents/init_upload`](/api-reference/document-resource-upload-file)
* (2) Uploading the document to the provided `upload_url` and with any `additional_fields` provided. See the [Starting an Upload](/api-reference/document-resource-upload-file) documentation for more details.
* (3) Confirming the upload by POSTing to [`/documents/confirm_upload`](/api-reference/document-resource-confirm-upload)

## Documents over 20GB

The above upload mechanisms currently only allow document uploads up to 20GB (optionally compressed with `gzip`). If you need to upload a compressed file *over* 20GB, please contact us at [support@onecodex.com](mailto:support@onecodex.com) and we can provide an alternative upload or file import mechanism for your situation.
