> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://uploadcare.com/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://uploadcare.com/docs/_mcp/server.

# Store file

PUT https://api.uploadcare.com/files/{uuid}/storage/

Store a single file by UUID. When file is stored, it is available permanently. If not stored — it will only be available for 24 hours. If the parameter is omitted, it checks the `Auto file storing` setting of your Uploadcare project identified by the `public_key` provided in the `auth-param`.

Reference: https://uploadcare.com/docs/api/rest/file/store-file

## Authentication

- `Authorization` header (required) — Every request made to `https://api.uploadcare.com/` MUST be signed. HTTPS SHOULD be used with any authorization scheme. Requests MUST contain the `Authorization` header defining `auth-scheme` and `auth-param`: `Authorization: auth-scheme auth-param`. Every request MUST contain the `Accept` header identifying the REST API version: `Accept: application/vnd.uploadcare-v0.7+json`. There are two available authorization schemes: * For production: `Uploadcare`, a scheme where a `signature`, not your Secret API Key MUST be specified. Signatures SHOULD be generated on backend. * For quick tests: `Uploadcare.Simple`, a simple scheme where your [Secret API Key](https://app.uploadcare.com/projects/-/api-keys/) MUST be specified in every request's `auth-param`.

## Request

### Path parameters

- `uuid` (string, required) — File UUID.

### Headers

- `Accept` (string, required) — Version header.

## Response

### 200

File stored. File info in JSON.

- `datetime_removed` (datetime, required, nullable) — Date and time when a file was removed, if any.
- `datetime_stored` (datetime, required, nullable) — Date and time of the last store request, if any.
- `datetime_uploaded` (datetime, required) — Date and time when a file was uploaded.
- `is_image` (boolean, required) — Is file is image.
- `is_ready` (boolean, required) — Is file is ready to be used after upload.
- `mime_type` (string, required) — File MIME-type.
- `original_file_url` (string, required, nullable) — Publicly available file CDN URL. Available if a file is not deleted.
- `original_filename` (string, required) — Original file name taken from uploaded file.
- `size` (integer, required) — File size in bytes.
- `url` (string, required) — API resource URL for a particular file.
- `uuid` (string, required) — File UUID.
- `variations` (map from string to string, required, nullable) — Dictionary of other files that were created using this file as a source. It's used for video processing and document conversion jobs. E.g., `<conversion_path>: <uuid>`.
- `content_info` (contentInfo, required) — Information about file content.
- `metadata` (metadata, required) — Arbitrary metadata associated with a file.
- `appdata` (applicationDataObject, optional) — Dictionary of application names and data associated with these applications.
- `tags` (list of string, optional) — Ordered list of string tags associated with the file. Empty array if no tags are set.

## Errors

### 400 Bad Request Error

Simple authentication over HTTP is forbidden. Please, use HTTPS or signed requests instead.

- `detail` (string, optional, default: Simple authentication over HTTP is forbidden. Please, use HTTPS or signed requests instead.)

### 401 Unauthorized Error

Authorization errors.

- `detail` (enum, optional)
  - Allowed values: `Incorrect authentication credentials.`, `Public key {public_key} not found.`, `Secret key not found.`, `Invalid signature. Please check your Secret key.`

### 404 Not Found Error

File not found.

- `detail` (string, optional) — Not found.

### 406 Not Acceptable Error

Invalid version header `Accept` for this endpoint.

- `detail` (string, optional, default: Incorrect Accept header provided. Make sure to specify API version. Refer to REST API docs for details.)

### 429 Too Many Requests Error

Request was throttled.

- `detail` (string, optional)

## Types

### contentInfo

Information about file content.

- `mime` (ContentInfoMime, optional) — MIME type.
- `image` (imageInfo, optional) — Image metadata.
- `video` (videoInfo, optional) — Video metadata.

### metadata

Arbitrary metadata associated with a file.

### applicationDataObject

Dictionary of application names and data associated with these applications.

- `aws_rekognition_detect_labels` (awsRekognitionDetectLabels_v2016_06_27, optional)
- `aws_rekognition_detect_moderation_labels` (awsRekognitionDetectModerationLabels_v2016_06_27, optional)
- `remove_bg` (removeBg_v1_0, optional)
- `uc_clamav_virus_scan` (ucClamavVirusScan, optional)

### ContentInfoMime

MIME type.

- `mime` (string, required) — Full MIME type.
- `type` (string, required) — Type of MIME type.
- `subtype` (string, required) — Subtype of MIME type.

### imageInfo

Image metadata.

- `color_mode` (enum, required) — Image color mode.
  - Allowed values: `RGB`, `RGBA`, `RGBa`, `RGBX`, `L`, `LA`, `La`, `P`, `PA`, `CMYK`, `YCbCr`, `HSV`, `LAB`
- `orientation` (integer, required, nullable) — Image orientation from EXIF.
- `format` (string, required) — Image format.
- `sequence` (boolean, required) — Set to true if a file contains a sequence of images (GIF for example).
- `height` (integer, required) — Image height in pixels.
- `width` (integer, required) — Image width in pixels.
- `geo_location` (ImageInfoGeoLocation, required, nullable) — Geo-location of image from EXIF.
- `datetime_original` (datetime, required, nullable) — Image date and time from EXIF. Please be aware that this data is not always formatted and displayed exactly as it appears in the EXIF.
- `dpi` (list of double, required, nullable) — Image DPI for two dimensions.

### videoInfo

Video metadata.

- `duration` (integer, required, nullable) — Video file's duration in milliseconds.
- `format` (string, required) — Video file's format.
- `bitrate` (integer, required, nullable) — Video file's bitrate.
- `audio` (list of VideoInfoAudioItems, required)
- `video` (list of VideoInfoVideoItems, required)

### awsRekognitionDetectLabels_v2016_06_27

- `version` (enum, required) — An application version.
  - Allowed values: `2016-06-27`
- `datetime_created` (datetime, required) — Date and time when an application data was created.
- `datetime_updated` (datetime, required) — Date and time when an application data was updated.
- `data` (AwsRekognitionDetectLabelsV20160627Data, required) — Dictionary with a result of an aws rekognition detect labels execution result.

### awsRekognitionDetectModerationLabels_v2016_06_27

- `version` (enum, required) — An application version.
  - Allowed values: `2016-06-27`
- `datetime_created` (datetime, required) — Date and time when an application data was created.
- `datetime_updated` (datetime, required) — Date and time when an application data was updated.
- `data` (AwsRekognitionDetectModerationLabelsV20160627Data, required) — Dictionary with a result of an aws rekognition detect moderation labels execution result.

### removeBg_v1_0

- `version` (enum, required) — An application version.
  - Allowed values: `1.0`
- `datetime_created` (datetime, required) — Date and time when an application data was created.
- `datetime_updated` (datetime, required) — Date and time when an application data was updated.
- `data` (RemoveBgV10Data, required) — Dictionary with a result of an remove.bg information about an image.

### ucClamavVirusScan

- `version` (enum, required) — An application version.
  - Allowed values: `0.104.2`, `0.104.3`, `0.105.0`, `0.105.1`
- `datetime_created` (datetime, required) — Date and time when an application data was created.
- `datetime_updated` (datetime, required) — Date and time when an application data was updated.
- `data` (UcClamavVirusScanData, required) — Dictionary with a result of ClamAV execution result.

### ImageInfoGeoLocation

Geo-location of image from EXIF.

- `latitude` (double, required) — Location latitude.
- `longitude` (double, required) — Location longitude.

### VideoInfoAudioItems

Audio stream's metadata.

- `bitrate` (integer, required, nullable) — Audio stream's bitrate.
- `codec` (string, required, nullable) — Audio stream's codec.
- `sample_rate` (integer, required, nullable) — Audio stream's sample rate.
- `channels` (integer, required, nullable) — Audio stream's number of channels.

### VideoInfoVideoItems

Video stream's metadata.

- `height` (integer, required) — Video stream's image height.
- `width` (integer, required) — Video stream's image width.
- `frame_rate` (double, required) — Video stream's frame rate.
- `bitrate` (integer, required, nullable) — Video stream's bitrate.
- `codec` (string, required, nullable) — Video stream's codec.

### AwsRekognitionDetectLabelsV20160627Data

Dictionary with a result of an aws rekognition detect labels execution result.

- `LabelModelVersion` (string, required)
- `Labels` (list of AwsRekognitionDetectLabelsV20160627DataLabelsItems, required)

### AwsRekognitionDetectModerationLabelsV20160627Data

Dictionary with a result of an aws rekognition detect moderation labels execution result.

- `ModerationModelVersion` (string, required)
- `ModerationLabels` (list of AwsRekognitionDetectModerationLabelsV20160627DataModerationLabelsItems, required)

### RemoveBgV10Data

Dictionary with a result of an remove.bg information about an image.

- `foreground_type` (string, optional) — foreground classification type (present if type_level was set)

### UcClamavVirusScanData

Dictionary with a result of ClamAV execution result.

- `infected` (boolean, required)
- `infected_with` (string, optional)

### AwsRekognitionDetectLabelsV20160627DataLabelsItems

- `Confidence` (double, required)
- `Instances` (list of AwsRekognitionDetectLabelsV20160627DataLabelsItemsInstancesItems, required)
- `Name` (string, required)
- `Parents` (list of AwsRekognitionDetectLabelsV20160627DataLabelsItemsParentsItems, required)

### AwsRekognitionDetectModerationLabelsV20160627DataModerationLabelsItems

- `Confidence` (double, required)
- `Name` (string, required)
- `ParentName` (string, required)

### AwsRekognitionDetectLabelsV20160627DataLabelsItemsInstancesItems

- `BoundingBox` (AwsRekognitionDetectLabelsV20160627DataLabelsItemsInstancesItemsBoundingBox, optional)
- `Confidence` (double, optional)

### AwsRekognitionDetectLabelsV20160627DataLabelsItemsParentsItems

- `Name` (string, optional)

### AwsRekognitionDetectLabelsV20160627DataLabelsItemsInstancesItemsBoundingBox

- `Height` (double, optional)
- `Left` (double, optional)
- `Top` (double, optional)
- `Width` (double, optional)

## Examples

**Response**

```json
{
  "datetime_removed": null,
  "datetime_stored": "2018-11-26T12:49:10.477888Z",
  "datetime_uploaded": "2018-11-26T12:49:09.945335Z",
  "is_image": true,
  "is_ready": true,
  "mime_type": "image/jpeg",
  "original_file_url": "https://ucarecdn.com/22240276-2f06-41f8-9411-755c8ce926ed/pineapple.jpg",
  "original_filename": "pineapple.jpg",
  "size": 642,
  "url": "https://api.uploadcare.com/files/22240276-2f06-41f8-9411-755c8ce926ed/",
  "uuid": "22240276-2f06-41f8-9411-755c8ce926ed",
  "variations": null,
  "content_info": {
    "mime": {
      "mime": "image/jpeg",
      "type": "image",
      "subtype": "jpeg"
    },
    "image": {
      "color_mode": "RGB",
      "orientation": 6,
      "format": "JPEG",
      "sequence": false,
      "height": 500,
      "width": 500,
      "geo_location": {
        "latitude": 55.62013611111111,
        "longitude": 37.66299166666666
      },
      "datetime_original": "2018-08-20T08:59:50",
      "dpi": [
        72,
        72
      ]
    }
  },
  "metadata": {
    "pet": "cat",
    "subsystem": "uploader"
  },
  "appdata": {
    "aws_rekognition_detect_labels": {
      "version": "2016-06-27",
      "datetime_created": "2021-09-21T11:25:31.259763Z",
      "datetime_updated": "2021-09-21T11:27:33.359763Z",
      "data": {
        "LabelModelVersion": "2.0",
        "Labels": [
          {
            "Confidence": 93.41645812988281,
            "Instances": [],
            "Name": "Home Decor",
            "Parents": []
          },
          {
            "Confidence": 70.75951385498047,
            "Instances": [],
            "Name": "Linen",
            "Parents": [
              {
                "Name": "Home Decor"
              }
            ]
          },
          {
            "Confidence": 64.7123794555664,
            "Instances": [],
            "Name": "Sunlight",
            "Parents": []
          },
          {
            "Confidence": 56.264793395996094,
            "Instances": [],
            "Name": "Flare",
            "Parents": [
              {
                "Name": "Light"
              }
            ]
          },
          {
            "Confidence": 50.47153854370117,
            "Instances": [],
            "Name": "Tree",
            "Parents": [
              {
                "Name": "Plant"
              }
            ]
          }
        ]
      }
    },
    "aws_rekognition_detect_moderation_labels": {
      "version": "2016-06-27",
      "datetime_created": "2023-02-21T11:25:31.259763Z",
      "datetime_updated": "2023-02-21T11:27:33.359763Z",
      "data": {
        "ModerationModelVersion": "6.0",
        "ModerationLabels": [
          {
            "Confidence": 93.41645812988281,
            "Name": "Weapons",
            "ParentName": "Violence"
          }
        ]
      }
    },
    "remove_bg": {
      "version": "1.0",
      "datetime_created": "2021-07-25T12:24:33.159663Z",
      "datetime_updated": "2021-07-25T12:24:33.159663Z",
      "data": {
        "foreground_type": "person"
      }
    },
    "uc_clamav_virus_scan": {
      "version": "0.104.2",
      "datetime_created": "2021-09-21T11:24:33.159663Z",
      "datetime_updated": "2021-09-21T11:24:33.159663Z",
      "data": {
        "infected": true,
        "infected_with": "Win.Test.EICAR_HDB-1"
      }
    }
  }
}
```

**SDK Code**

```javascript JS
import {
  storeFile,
  UploadcareSimpleAuthSchema,
} from '@uploadcare/rest-client';

const uploadcareSimpleAuthSchema = new UploadcareSimpleAuthSchema({
  publicKey: 'YOUR_PUBLIC_KEY',
  secretKey: 'YOUR_SECRET_KEY',
});

const result = await storeFile(
  {
    uuid: '1bac376c-aa7e-4356-861b-dd2657b5bfd2',
  },
  { authSchema: uploadcareSimpleAuthSchema }
)

```

```php PHP
<?php
$configuration = Uploadcare\Configuration::create((string) $_ENV['UPLOADCARE_PUBLIC_KEY'], (string) $_ENV['UPLOADCARE_SECRET_KEY']);

$api = (new Uploadcare\Api($configuration))->file();
$result = $api->storeFile('1bac376c-aa7e-4356-861b-dd2657b5bfd2');
echo \sprintf('File %s is stored at %s', $result->getUuid(), $result->getDatetimeStored()->format(\DateTimeInterface::ATOM));

```

```python Python
from pyuploadcare import Uploadcare
uploadcare = Uploadcare(public_key='YOUR_PUBLIC_KEY', secret_key='YOUR_SECRET_KEY')

file = uploadcare.file("1bac376c-aa7e-4356-861b-dd2657b5bfd2")
file.store()

```

```ruby Ruby
require 'uploadcare'
Uploadcare.config.public_key = 'YOUR_PUBLIC_KEY'
Uploadcare.config.secret_key = 'YOUR_SECRET_KEY'

uuid = '1bac376c-aa7e-4356-861b-dd2657b5bfd2'
Uploadcare::File.store(uuid)

```

```swift Swift
import Uploadcare

let uploadcare = Uploadcare(withPublicKey: "YOUR_PUBLIC_KEY", secretKey: "YOUR_SECRET_KEY")

let file = try await uploadcare.storeFile(withUUID: "1bac376c-aa7e-4356-861b-dd2657b5bfd2")
print(file)

```

```kotlin Kotlin
import com.uploadcare.android.library.api.UploadcareClient

val uploadcare = UploadcareClient(publicKey = "YOUR_PUBLIC_KEY", secretKey = "YOUR_SECRET_KEY")

uploadcare.saveFile("1bac376c-aa7e-4356-861b-dd2657b5bfd2")

```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.uploadcare.com/files/21975c81-7f57-4c7a-aef9-acfe28779f78/storage/"

	req, _ := http.NewRequest("PUT", url, nil)

	req.Header.Add("Accept", "application/vnd.uploadcare-v0.7+json")
	req.Header.Add("Authorization", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.uploadcare.com/files/21975c81-7f57-4c7a-aef9-acfe28779f78/storage/")
  .header("Accept", "application/vnd.uploadcare-v0.7+json")
  .header("Authorization", "<apiKey>")
  .asString();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.uploadcare.com/files/21975c81-7f57-4c7a-aef9-acfe28779f78/storage/");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/vnd.uploadcare-v0.7+json");
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```