Skip to main content

Exante CLI

Terminal client for the Exante HTTP API — trade, query market data, and manage your account from the shell.

API docs: https://api-live.exante.eu/api-docs/

Install

pip install exante-cli
exante --help

Configuration

All behaviour that isn't a per-command argument is driven by the persisted config. Set defaults once with exante config set and they apply to every invocation:

exante config set --env demo            # trading env: live or demo
exante config set --account <ACC>       # default account id
exante config set --currency EUR        # default currency

Flags can be combined in one call:

exante config set --env demo --account <ACC> --currency EUR

Inspect the current defaults and the config file location:

exante config show
Setting Flag Values Default
Trading env --env live / demo live
Account --account account id unset (per slot)
Currency --currency currency code EUR (per slot)

The default account and currency are stored per trading-env slot — the same way credentials are slotted — so demo and live keep their own defaults and switching env never reuses the wrong account. config set --account writes to the slot being configured (after any --env in the same call), and config show displays the active slot's values.

Config lives at ~/.config/exante/config.toml.

Auth

Credentials resolve with precedence flag > keychain > config:

Source How
flags --app-id + one of --shared-secret-file / --shared-secret
keychain stored by exante login (browser login), per trading env
config written directly in ~/.config/exante/config.toml ([auth] section)

Credential flags are global — put them before the subcommand:

exante --app-id 1a2b3c4d-... --shared-secret s3cr3t... accounts
exante --app-id 1a2b3c4d-... --shared-secret-file ~/.exante/secret accounts
exante login                # opens the browser (PKCE), stores the key in the keychain
exante login --no-browser   # print the URL instead of opening a browser
exante logout               # clear stored credentials (config + both keychain slots)

login authorizes against the configured environment and stores the key in the keychain slot for that trading env — so credentials for demo never clobber live. Switch with exante config set --env live|demo first, then re-run login.

After a successful login it auto-runs accounts; if that slot has exactly one account it is saved as the slot's default account. (Any exante accounts call does this — a single visible account is always written as the slot default.)

Commands

Global options (--output/-o table|json, --verbose/-v, --api-url, --api-version, credential flags) must precede the subcommand:

exante -o json quote AAPL.NASDAQ

Top-level shortcuts

exante buy AAPL.NASDAQ 100 limit 150      # place a buy order
exante sell AAPL.NASDAQ 100 limit 155     # place a sell order
exante order <ORDER_ID>                   # get one order
exante cancel <ORDER_ID>                  # cancel a working order
exante quote AAPL.NASDAQ                  # last quote
exante xrate USD EUR                      # FX cross-rate
exante crossrates                         # currencies available for cross-rate
exante summary [--account A] [--currency C] [--date D]
exante repl                               # interactive shell (no `exante` prefix)

Command groups

exante accounts

exante symbols get <SYM> | by-exchange <EX> | by-group <G> | nearest <G>
exante symbols exchanges | groups | types | currencies
exante symbols schedule <SYM> [--types] | spec <SYM>

exante market quote <SYM>
exante market ohlc  <SYM> --duration <SEC> [--from --to --size --candle-type]
exante market ticks <SYM> [--from --to --size --tick-type]
exante market crossrate <FROM> <TO>
exante market change --symbols A,B,C

exante orders active [--account --limit]
exante orders list   [--account --limit]
exante orders get <ID>
exante orders place --symbol S --side buy|sell --qty Q [--account A --order-type --limit-price --stop-price --tif --gtt-expiration --client-tag]
exante orders modify <ID> [--qty --limit-price --stop-price]
exante orders cancel <ID>

exante stream feed <SYMS> [--level] | orders | trades | market-trades <SYMS>

exante transactions [--account --from --to --op-type --symbol --limit --offset]

Use fully-qualified symbol ids (<TICKER>.<EXCHANGE>, e.g. AAPL.NASDAQ).

Troubleshooting

A short runbook for the problems users actually hit. Start with -v — it answers most questions on its own.

1. First step for any problem: -v / --verbose

Re-run the failing command with -v. It dumps to stderr the exact request httpx put on the wire (method, final URL, all headers, body) and the full response (status line, headers, body):

exante -v quote AAPL.NASDAQ
> GET https://api-live.exante.eu/md/3.0/feed/AAPL.NASDAQ
> host: api-live.exante.eu
> authorization: Basic TOKEN
> user-agent: exante-cli/<version>
< HTTP 404 Not Found
< content-type: application/json
< body: {"message":"Symbol not found"}

This tells you instantly which URL was called (so you can confirm env/version), whether auth was sent, and what the server actually answered.

-v prints the Authorization header in clear. Redact it before pasting verbose output into a ticket or chat.

2. See the raw API answer: -o json

When the rendered table hides what you need, ask for the unformatted response and pipe it through jq:

exante -o json symbols get AAPL.NASDAQ | jq .

-o json prints exactly what the API returned, with no table/column massaging — handy for spotting missing fields or unexpected values.

3. Reading the error category

Errors are categorised, so the prefix tells you where to look:

You see Likely cause What to do
Authentication failed: HTTP 401 wrong/expired credentials re-run exante login, or check --app-id / the active slot with exante config show
Authentication failed: HTTP 403 user has no permission on the instrument / no subscription verify the user's permissions and subscriptions
Validation error: HTTP 404 wrong symbol id / no permissions use a fully-qualified TICKER.EXCHANGE id; confirm permissions (404 doesn't always mean "not found")
Validation error: HTTP 400/422 malformed request / bad arguments re-check flags; run with -v —if a bug in the CLI message support@exante.eu
HTTP 429 rate limit too many requests user can raise the limits in the HTTP API (use dashboard in client's area to increase)

Metadata

Release files for exante-cli 1.0.31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for exante-cli 1.0.31
File Interpreter ABI Platform
exante_cli-1.0.31-py3-none-any.whl Python 3 none any Details

Release files / exante_cli-1.0.31-py3-none-any.whl

Download URL exante_cli-1.0.31-py3-none-any.whl
Size 49.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
28bc1e565f4338f0d3ee492e0046aec6110fe1c3a3f8ec232ad3cbc273428bdd
BLAKE2b-256 checksum
How to use checksums
3fa046310b4d4e2098ab061eada2e75b8714bf3999b33220beda36a318102d95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.5

Release history Release notifications | RSS feed

This release

1.0.31 This release

1 release file

1.0.30

1 release file

1.0.29

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page