For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Dashboard
GuidesIntegrationsAPI ReferencesRelease notes
GuidesIntegrationsAPI ReferencesRelease notes
    • APIs overview
  • Upload API
      • POSTDirect uploads
      • POSTStart multipart upload
      • PUTUpload individual file parts
      • POSTComplete multipart upload
      • POSTUpload files from URLs
      • GETCheck the status of a task to fetch/upload a file from a URL
      • GETGet information about an uploaded file
    • Errors
  • REST API
    • Authentication
    • File Metadata
    • Add Ons
    • Changelog
    • Versioning
  • URL API
    • File groups
    • Image processing limitations
    • Image compression
    • Image resize and crop
    • Image rotation
    • Image overlays
    • Image colors
    • Image definition
    • Image recognition
    • Other image operations
    • Proxy
    • Signed URLs
    • CDN settings
    • Integrations
Dashboard
LogoLogo
Upload APIUpload

Direct uploads

POST
https://upload.uploadcare.com/base/
POST
/base/
$curl -X POST https://upload.uploadcare.com/base/ \
> -H "Content-Type: multipart/form-data" \
> -F UPLOADCARE_PUB_KEY="YOUR_PUBLIC_KEY" \
> -F UPLOADCARE_STORE="auto" \
> -F "string"=@string
200Two Files
1{
2 "my_file.jpg": "17be4678-dab7-4bc7-8753-28914a22960a"
3}
Direct file uploads comply with the [RFC 7578](https://www.rfc-editor.org/rfc/rfc7578) standard. In other words, you can perform a direct upload by making an HTTP POST request with the Content-Type header set to `multipart/form-data`. **Note**: Direct file uploads support files smaller than 100 megabytes only. If you would like to upload larger files, please use [Multipart Uploads](/docs/api/upload/upload/multipart-file-upload-start) instead. File upload example with curl: ``` curl -X POST https://upload.uploadcare.com/base/ \ -F UPLOADCARE_PUB_KEY="demopublickey" \ -F UPLOADCARE_STORE="auto" \ -F "metadata[subsystem]"="uploader" \ -F "metadata[pet]"="cat" \ -F file=@"my file.jpeg" ```
Was this page helpful?
Previous

Start multipart upload

Next
Built with

Direct file uploads comply with the RFC 7578 standard. In other words, you can perform a direct upload by making an HTTP POST request with the Content-Type header set to multipart/form-data.

Note: Direct file uploads support files smaller than 100 megabytes only. If you would like to upload larger files, please use Multipart Uploads instead.

File upload example with curl:

curl -X POST https://upload.uploadcare.com/base/ \
-F UPLOADCARE_PUB_KEY="demopublickey" \
-F UPLOADCARE_STORE="auto" \
-F "metadata[subsystem]"="uploader" \
-F "metadata[pet]"="cat" \
-F file=@"my file.jpeg"

Request

This endpoint expects a multipart form with multiple files.
UPLOADCARE_PUB_KEYstringRequired
Public key identifying an Uploadcare project your uploads will go to.
UPLOADCARE_STOREenumOptionalDefaults to auto

Determines if an uploaded file should be marked as temporary or permanent.

The parameter can have the following values:

  • 0 - do not mark an uploaded file as stored and remove it after 24 hours
  • 1 - mark the uploaded file as stored
  • auto - delegate the choice of the file-storing behavior to a project-wide setting called auto-store.

The default value depends on the user registration date.

For all users registered after February 12, 2024 (UTC 13:30), the default value is auto. File-storing behavior depends entirely on what is set in the storage settings in the Dashboard.

For users registered before February 12, 2024, the default value is 0. To ensure that file storage in the project matches the settings in the Dashboard, change the value to auto.

Allowed values:
{filename}filesRequired
File's content
metadata[{key}]stringOptional1-512 characters

Arbitrary metadata associated with the file. See docs and REST API v0.7 for more information.

signaturestringOptional

signature must be sent along with your upload request if you would like to use signed uploads. The signature should be generated on your backend. Note: the process requires knowledge of your Uploadcare Project’s Secret key. See signed uploads for details.

expireintegerOptional

expire must be sent along with your upload request if you would like to use signed uploads. The parameter defines the time during which your signature is valid. It’s a UNIX timestamp. See signed uploads for details.

Response

The file was uploaded successfully.
filenamestringformat: "uuid"