Skip to main content
POST
/
api
/
assets
Upload a new asset
curl --request POST \
  --url https://api.example.com/api/assets \
  --header 'Content-Type: multipart/form-data' \
  --form asset_data='@example-file' \
  --form 'device_asset_id=<string>' \
  --form 'device_id=<string>' \
  --form file_created_at=2023-11-07T05:31:56Z \
  --form file_modified_at=2023-11-07T05:31:56Z \
  --form 'library_id=<string>'
{
  "id": "<string>",
  "device_asset_id": "<string>",
  "device_id": "<string>",
  "mime_type": "<string>",
  "original_file_name": "<string>",
  "file_created_at": "2023-11-07T05:31:56Z",
  "file_modified_at": "2023-11-07T05:31:56Z",
  "local_datetime": "2023-11-07T05:31:56Z",
  "checksum": "<string>",
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z",
  "checksum_sha1": "<string>",
  "exif": {
    "asset_id": "<string>",
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "make": "<string>",
    "model": "<string>",
    "orientation": 123,
    "modified_datetime": "2023-11-07T05:31:56Z",
    "original_datetime": "2023-11-07T05:31:56Z",
    "digitized_datetime": "2023-11-07T05:31:56Z",
    "lens_model": "<string>",
    "f_number": 123,
    "focal_length": 123,
    "iso": 123,
    "exposure_time": 123,
    "exposure_bias": 123,
    "latitude": 123,
    "longitude": 123,
    "altitude": 123,
    "city": "<string>",
    "state": "<string>",
    "country": "<string>",
    "description": "<string>",
    "fps": 123,
    "live_photo_cid": "<string>",
    "projection_type": "<string>",
    "profile_description": "<string>",
    "auto_stack_id": "<string>",
    "rating": 123
  },
  "metrics": {},
  "download_url": "<string>",
  "thumbnail_url": "<string>",
  "faces": [
    {
      "id": "<string>",
      "asset_id": "<string>",
      "bounding_box": {},
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "person_id": "<string>",
      "timestamp_ms": 123,
      "thumbnail_url": "<string>"
    }
  ],
  "people": [
    {
      "id": "<string>",
      "is_hidden": true,
      "is_favorite": true,
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "name": "<string>",
      "birth_date": "2023-12-25",
      "thumbnail_face_id": "<string>",
      "thumbnail_face_url": "<string>"
    }
  ],
  "width": 0,
  "height": 0,
  "file_size_bytes": 0
}

Body

multipart/form-data
asset_data
file
required
device_asset_id
string
required
device_id
string
required
file_created_at
string<date-time>
required
file_modified_at
string<date-time>
required
library_id
string | null

Library to upload asset to (optional)

Response

Successful Response

Represents a photo or video asset with metadata and access URLs.

id
string
required

Unique asset identifier with 'asset_' prefix

device_asset_id
string
required

Original asset identifier from the device that uploaded this asset

device_id
string
required

Identifier of the device that uploaded this asset

mime_type
string
required

MIME type of the file (e.g., 'image/jpeg', 'video/mp4')

original_file_name
string
required

Original filename when the asset was uploaded

file_created_at
string<date-time>
required

When the file was created on the uploading device

file_modified_at
string<date-time>
required

When the file was last modified on the uploading device

local_datetime
string<date-time>
required

When the photo/video was taken, in the device's local timezone

checksum
string
required

Base64-encoded SHA-256 hash of the asset contents for duplicate detection and integrity

created_at
string<date-time>
required

When this asset record was created in the database

updated_at
string<date-time>
required

When this asset record was last updated

checksum_sha1
string | null

Base64-encoded SHA-1 hash for Immich client compatibility. May be null for older assets.

exif
ExifResponse · object

EXIF metadata if available (images/videos only)

metrics
Metrics · object

ML-generated quality scores and other metrics

download_url
string | null

If you need to download the full asset, use this URL. Otherwise, use the thumbnail_url.

thumbnail_url
string | null

Use this URL to display the asset. Never download the full asset unless you absolutely have to; prefer the thumbnail instead.

faces
FaceResponse · object[]

All faces detected in this asset

people
PersonResponse · object[]

All unique people identified in this asset (deduplicated from faces)

width
integer
default:0

Width of the asset in pixels

height
integer
default:0

Height of the asset in pixels

file_size_bytes
integer
default:0

File size of the asset in bytes