Every da command and flag, generated from build_parser() in the dacli package (version 0.1.1).
For settings that live in a config file rather than on the command line, see configuration. For what each exit code means, see exit codes.
usage: da [-h] [--version] [-v | -q] [--color {auto,always,never}]
[--config PATH]
{auth,whoami,refresh,config,sync,search,user,deviation,daily,index,diagnose,bench,watch} ...
DeviantArt CLI
positional arguments:
{auth,whoami,refresh,config,sync,search,user,deviation,daily,index,diagnose,bench,watch}
auth OAuth 2.1 PKCE flow / log out
whoami Verify token + show identity
refresh Force-refresh the access token
config Manage configuration
sync Sync DA content into the local destination
search Search/browse DA content
user User-related queries
deviation Deviation-level queries
daily DA Daily Deviation picks for a date
index Manage the synced-deviation index (powers fast
incremental sync)
diagnose End-to-end self-test: config, auth, scope,
destination, index, last sync, schedule. Exits 0
if all OK, 1 on warnings, 2 on critical.
bench Run a synthetic sync benchmark against a fully
mocked HTTP layer to measure CLI overhead. No
network. Useful for perf regression checks.
watch Your watch list
options:
-h, --help show this help message and exit
--version show program's version number and exit
-v, --verbose Emit debug-level log lines (HTTP retry traces,
internal decisions).
-q, --quiet Suppress info-level output; only warn and error
reach the log. Cron / launchd-friendly.
--color {auto,always,never}
Color output for warn/error markers. 'auto'
(default) enables color on a TTY that doesn't
set NO_COLOR; 'never' forces plain; 'always'
forces color even when piped.
--config PATH Override the config file path (default:
$XDG_CONFIG_HOME/da-cli/config.json or
~/.config/da-cli/config.json). This moves the
config file only — tokens, the sync checkpoint
and the index stay where they are. For a fully
separate second account, set XDG_CONFIG_HOME and
XDG_STATE_HOME instead.
usage: da auth [-h] [--redirect-uri REDIRECT_URI] [--paste] [--scope SCOPE]
{logout,status} ...
positional arguments:
{logout,status}
logout Delete local token state
status Print JSON describing the refresh_token chain's
remaining lifetime, having first confirmed with
DeviantArt that the credentials still work.
Exits 0 (ok), 1 (warn), or 2
(crit/unknown/revoked/unreachable). Suitable for
cron / launchd health checks. Use `da diagnose`
for a TTL reading without network.
options:
-h, --help show this help message and exit
--redirect-uri REDIRECT_URI
OAuth redirect URI. Loopback
(http://localhost:PORT/) runs a local listener;
anything else uses paste-back mode (DA now
requires HTTPS for non-localhost). Must be
whitelisted on the OAuth app.
--paste Force paste-back flow even for a loopback
redirect_uri.
--scope SCOPE
usage: da auth logout [-h]
options:
-h, --help show this help message and exit
usage: da auth status [-h]
options:
-h, --help show this help message and exit
usage: da whoami [-h]
options:
-h, --help show this help message and exit
usage: da refresh [-h]
options:
-h, --help show this help message and exit
usage: da config [-h] {show,path,set,get,unset} ...
positional arguments:
{show,path,set,get,unset}
show Print config (secrets masked)
path Print config + state file paths
set Set a config field
get Read a config field (secrets masked)
unset Remove a config field
options:
-h, --help show this help message and exit
usage: da config show [-h]
options:
-h, --help show this help message and exit
usage: da config path [-h]
options:
-h, --help show this help message and exit
usage: da config set [-h] key value
positional arguments:
key
value
options:
-h, --help show this help message and exit
usage: da config get [-h] [--unmask] key
positional arguments:
key
options:
-h, --help show this help message and exit
--unmask Print secrets in plaintext (don't pipe to logs / shared
terminals)
usage: da config unset [-h] key
positional arguments:
key
options:
-h, --help show this help message and exit
usage: da sync [-h] {feed,artist,watched} ...
positional arguments:
{feed,artist,watched}
feed Walk watch feed top-down (incremental)
artist Walk a single artist's gallery
watched Walk every watched user's gallery
options:
-h, --help show this help message and exit
usage: da sync feed [-h] [--limit LIMIT] [--mature | --no-mature]
[--time-budget SECONDS] [--delay-api DELAY_API]
[--delay-image DELAY_IMAGE] [--jitter JITTER]
[--concurrency CONCURRENCY] [--dry-run]
options:
-h, --help show this help message and exit
--limit LIMIT
--mature, --no-mature
--time-budget SECONDS Wall-clock cap for the whole walk (default: 540).
The walk stops cleanly a few seconds early so the
page in flight can finish. A run cut short here
does not advance the checkpoint, and `da
diagnose` reports it as a warning rather than a
clean sync.
--delay-api DELAY_API
--delay-image DELAY_IMAGE
--jitter JITTER Randomise each sleep by ±PCT of base (0-0.95).
0.4 makes a 1.5s base sleep 0.9-2.1s. Default 0
(off).
--concurrency CONCURRENCY Parallel image-download workers per page. Default
4, max 16. 1 disables concurrency.
--dry-run Report what would be downloaded without writing
any files or touching the index. Useful for
previewing a first-time sync or auditing what
--full would refetch.
usage: da sync artist [-h] [--offset N] [--limit LIMIT]
[--mature | --no-mature] [--time-budget SECONDS]
[--delay-api DELAY_API] [--delay-image DELAY_IMAGE]
[--full] [--jitter JITTER] [--concurrency CONCURRENCY]
[--dry-run]
artist
positional arguments:
artist
options:
-h, --help show this help message and exit
--offset N Start at this page offset. Omit to continue from
where the last unfinished walk of this gallery
stopped.
--limit LIMIT
--mature, --no-mature
--time-budget SECONDS Wall-clock cap for this gallery walk (default:
540). On a truncated run the resume offset is
printed and recorded.
--delay-api DELAY_API
--delay-image DELAY_IMAGE
--full Disable the synced-index early-stop and walk the
entire gallery. Use this if you suspect missed
deviations or have rotated content.
--jitter JITTER Randomise each sleep by ±PCT (0-0.95). Default 0.
--concurrency CONCURRENCY Parallel image-download workers per page. Default
4, max 16.
--dry-run Report what would be downloaded without writing
any files.
usage: da sync watched [-h] [--user USER | --via-feed] [--feed-max FEED_MAX]
[--mature | --no-mature] [--time-budget SECONDS]
[--delay-api DELAY_API] [--delay-image DELAY_IMAGE]
[--full] [--jitter JITTER] [--concurrency CONCURRENCY]
[--dry-run]
options:
-h, --help show this help message and exit
--user USER Skip /user/whoami and use this username for
/user/friends/{user} (needs `user` scope;
otherwise the feed fallback is used)
--via-feed Skip the friends endpoint entirely and discover
artists by walking the watch feed (works with
`browse` scope alone, but may miss watched users
who haven't posted recently)
--feed-max FEED_MAX Cap on deviations to scan when discovering via
feed (default 2000)
--mature, --no-mature
--time-budget SECONDS Wall-clock cap for the ENTIRE run across all
artists (default: 540) — not per artist. Each
artist is given whatever remains; once too little
is left to be useful the rest are skipped and the
run is recorded as truncated. Re-run to continue.
--delay-api DELAY_API
--delay-image DELAY_IMAGE
--full Disable per-artist early-stop. Walks every page
of every watched artist's gallery. Slow; use only
for paranoid backfills.
--jitter JITTER Randomise each sleep by ±PCT (0-0.95). Default 0.
--concurrency CONCURRENCY Parallel image-download workers per page. Default
4, max 16.
--dry-run Report what would be downloaded without writing
any files.
usage: da search [-h]
{popular,newest,tag,user,topic,topics,toptopics,tag-suggest} ...
positional arguments:
{popular,newest,tag,user,topic,topics,toptopics,tag-suggest}
topic Fetch deviations from a curated DA topic (e.g.
digitalart, nature, fantasy, animals). Use
`search topics` to list valid names.
topics List all DA topics (paginated)
toptopics Fetch top topics with one example deviation each
tag-suggest Autocomplete a tag prefix — validate before
searching
options:
-h, --help show this help message and exit
usage: da search popular [-h] [--limit LIMIT] [--mature] [--json]
options:
-h, --help show this help message and exit
--limit LIMIT
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da search newest [-h] [--limit LIMIT] [--mature] [--json]
options:
-h, --help show this help message and exit
--limit LIMIT
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da search tag [-h] [--limit LIMIT] [--mature] [--json] tag
positional arguments:
tag
options:
-h, --help show this help message and exit
--limit LIMIT
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da search user [-h] [--json] query [query ...]
positional arguments:
query
options:
-h, --help show this help message and exit
--json Emit raw JSON (deviationid + content URL + description) instead
of summary lines
usage: da search topic [-h] [--limit LIMIT] [--mature] [--json] topic
positional arguments:
topic canonical topic name (lowercase, single token)
options:
-h, --help show this help message and exit
--limit LIMIT
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da search topics [-h] [--limit LIMIT] [--offset OFFSET] [--mature]
[--json]
options:
-h, --help show this help message and exit
--limit LIMIT
--offset OFFSET
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da search toptopics [-h] [--mature] [--json]
options:
-h, --help show this help message and exit
--mature
--json Emit raw JSON (deviationid + content URL + description) instead
of summary lines
usage: da search tag-suggest [-h] [--json] prefix
positional arguments:
prefix
options:
-h, --help show this help message and exit
--json Emit raw JSON (deviationid + content URL + description) instead
of summary lines
usage: da user [-h] {profile} ...
positional arguments:
{profile}
options:
-h, --help show this help message and exit
usage: da user profile [-h] username
positional arguments:
username
options:
-h, --help show this help message and exit
usage: da deviation [-h] {show,morelikethis} ...
positional arguments:
{show,morelikethis}
show Print metadata for a single deviation
morelikethis Fetch DA's 'More Like This' suggestions for a seed
deviation
options:
-h, --help show this help message and exit
usage: da deviation show [-h] [--json] deviationid
positional arguments:
deviationid
options:
-h, --help show this help message and exit
--json Emit raw JSON instead of a summary
usage: da deviation morelikethis [-h] [--limit LIMIT] [--mature] [--json]
deviationid
positional arguments:
deviationid seed deviation UUID
options:
-h, --help show this help message and exit
--limit LIMIT max items per group (artist / DA)
--mature
--json Emit raw JSON (deviationid + content URL + description)
instead of summary lines
usage: da daily [-h] [--mature] [--json] [date]
positional arguments:
date YYYY-MM-DD; default today
options:
-h, --help show this help message and exit
--mature
--json Emit raw JSON (deviationid + content URL + description) instead
of summary lines
usage: da index [-h] {rebuild,show} ...
positional arguments:
{rebuild,show}
rebuild Walk the destination and rebuild the index from existing
files. Idempotent — safe to re-run.
show Print index stats (total rows, top artists, db size)
options:
-h, --help show this help message and exit
usage: da index rebuild [-h]
options:
-h, --help show this help message and exit
usage: da index show [-h]
options:
-h, --help show this help message and exit
usage: da diagnose [-h] [--json]
options:
-h, --help show this help message and exit
--json Emit machine-readable JSON instead of the human-readable report.
Schema: {timestamp, overall: {status, warnings, criticals},
findings: [{level, section, message}], exit_code}.
usage: da bench [-h] [--pages PAGES] [--per-page PER_PAGE]
[--concurrency CONCURRENCY] [--json]
options:
-h, --help show this help message and exit
--pages PAGES Pages of synthetic feed (default 10)
--per-page PER_PAGE Deviations per page (default 24, DA's gallery
cap)
--concurrency CONCURRENCY Image-download workers per page (default 4)
--json Emit JSON instead of the summary table
usage: da watch [-h] {list} ...
positional arguments:
{list}
options:
-h, --help show this help message and exit
usage: da watch list [-h] [--limit LIMIT] [--offset OFFSET]
options:
-h, --help show this help message and exit
--limit LIMIT
--offset OFFSET