LinuxCommandLibrary

immich-go

Manage and upload assets to Immich server

TLDR

Upload a Google Photos takeout file to Immich server

$ immich-go -server=[server_url] -key=[server_key] upload [path/to/takeout_file.zip]
copy

Import photos captured on June 2019, while auto-generating albums
$ immich-go -server=[server_url] -key=[server_key] upload -create-albums -google-photos -date=[2019-06] [path/to/takeout_file.zip]
copy

Upload a takeout file using server and key from a configuration file
$ immich-go -use-configuration=[~/.immich-go/immich-go.json] upload [path/to/takeout_file.zip]
copy

Examine Immich server content, remove less quality images, and preserve albums
$ immich-go -server=[server_url] -key=[server_key] duplicate -yes
copy

Delete all albums created with the pattern "YYYY-MM-DD"
$ immich-go -server=[server_url] -key=[server_key] tool album delete [\d{4}-\d{2}-\d{2]}
copy

SYNOPSIS

immich-go [command] [global-options] [command-options] [arguments]

PARAMETERS

--server URL
    Immich server URL (required unless saved)

--key KEY
    API key for authentication (mutually exclusive with username/password)

--username USER
    Username for login (mutually exclusive with key)

--password PASS
    Password for login (mutually exclusive with key)

--insecure
    Skip TLS certificate verification

--help, -h
    Show help

--version, -v
    Print version info

DESCRIPTION

immich-go is the official command-line interface (CLI) for the Immich self-hosted photo and video backup solution. It enables users to interact with an Immich server directly from the terminal, supporting tasks like uploading assets, managing libraries, searching photos, handling metadata, and configuring system settings.

Key capabilities include bulk uploads with album assignment, facial recognition integration via machine-learning commands, external library scanning, partner sharing, and calendar queries. Authentication uses username/password or API keys, with support for insecure TLS for testing.

Ideal for automation scripts, headless servers, or users preferring terminal workflows over the web UI. It requires a running Immich server and is built in Go for cross-platform use (Linux, macOS, Windows). Always check server compatibility as features evolve with Immich releases.

CAVEATS

Requires running Immich server v1.100+; some commands experimental. Use --insecure only for self-signed certs. Stores credentials insecurely unless using API key.

INSTALLATION

Run go install github.com/immich-app/immich-go/cmd/immich-go@latest
Or download prebuilt binaries from GitHub releases.

COMMON WORKFLOW

immich-go login --server https://your-immich.com --username user --password pass
Then immich-go upload ~/Photos --album 'Vacation'

SUBCOMMANDS

Core: login, upload, search, libraries. Full list via immich-go --help.

HISTORY

Developed by Immich team starting 2023 as Go rewrite of earlier CLI. Actively maintained alongside Immich core (v1.121+ full parity). Initial release coincided with Immich v1.90 mobile API expansions.

SEE ALSO

curl(1), rclone(1), rsync(1)

Copied to clipboard