CLI tool for managing Infomaniak services — DNS records, domains, and more.
Project description
infomaniak
CLI tool for managing your Infomaniak services from the terminal.
Supports DNS management, mail hosting, product listing, service status, and more.
Install
With pipx (recommended)
pipx install infomaniak
With pip
pip install infomaniak
From source
git clone https://github.com/peaktwilight/infomaniak-cli.git
cd infomaniak-cli
pip install .
Getting started
infomaniak setup
The setup wizard will:
- Open the Infomaniak token page in your browser
- Prompt you to paste your API token
- Validate it against the API
- Save it to
~/.config/infomaniak/config.ini
You'll need a token with these scopes: accounts, domain:read, dns:read, dns:write.
Alternative configuration
You can also set the token manually:
# Environment variable
export INFOMANIAK_API_TOKEN=your-token-here
# Or .env file
cp .env.example .env
Token lookup order: environment variable → config file → .env file.
Usage
DNS
# List all domains
infomaniak dns domains
# List DNS records for a domain
infomaniak dns records example.com
# Filter by record type
infomaniak dns records example.com --type CNAME
# Check if a record resolves correctly
infomaniak dns check example.com 12345
# Create a new record
infomaniak dns add example.com A blog 93.184.216.34
infomaniak dns add example.com CNAME app target.example.net --ttl 300
# Update a record
infomaniak dns update example.com 12345 --target 93.184.216.35
# Delete a record (with confirmation)
infomaniak dns delete example.com 12345
# Export records as JSON or CSV
infomaniak dns export example.com
infomaniak dns export example.com --format csv --output records.csv
# Import records from a file
infomaniak dns import example.com records.json
infomaniak dns import example.com records.csv --yes
# Compare live records against a local file
infomaniak dns diff example.com records.json
# Clone records from one domain to another (skips NS/SOA)
infomaniak dns clone source.com target.com
Products
# List all products on your account
infomaniak products
# Filter by service type
infomaniak products --type domain
infomaniak products --type email_hosting
# List all mail hosting services
infomaniak mail list
Status
# Service status overview — shows all products grouped by service
infomaniak status
Configuration
# Show current configuration (token source, account ID, config file path)
infomaniak config show
JSON output
Add --json to any read command for machine-readable output:
infomaniak dns domains --json
infomaniak dns records example.com --json
infomaniak dns diff example.com records.json --json
infomaniak products --json
infomaniak status --json
Example output
$ infomaniak dns domains
Domains (2)
ID Domain DNSSEC DNS@IK
─────── ─────────────── ────── ──────
100001 example.com yes yes
100002 example.org yes yes
$ infomaniak dns diff example.com backup.json
DNS diff for example.com
File: backup.json
Live: 12 records, File: 10 records
In file but not live (1):
+ A old-server → 93.184.216.34 (TTL: 3600)
Live but not in file (3):
- A new-app → 198.51.100.1 (TTL: 300)
- CNAME cdn → cdn.example.net (TTL: 300)
- TXT _verify → site-verification=abc123 (TTL: 3600)
9 records match.
$ infomaniak status
Service Status — 5 products
Service Total Active Issues
─────────────── ───── ────── ──────
domain 2 2 none
email_hosting 2 2 none
drive 1 1 none
✓ All services operational.
Why not OAuth?
Infomaniak's OAuth2 apps only support openid, profile, email, and phone scopes. The DNS management scopes (accounts, domain:read, dns:read, dns:write) are only available through API tokens — so there's no way to implement a browser-based login flow.
API reference
Built on the Infomaniak API:
| Endpoint | Description |
|---|---|
GET /1/products |
List all products |
GET /1/domain/account/{id} |
List domains |
GET /2/zones/{zone}/records |
List DNS records |
POST /2/zones/{zone}/records |
Create record |
PUT /2/zones/{zone}/records/{id} |
Update record |
DELETE /2/zones/{zone}/records/{id} |
Delete record |
GET /2/zones/{zone}/records/{id}/check |
Check record health |
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file infomaniak-0.5.0.tar.gz.
File metadata
- Download URL: infomaniak-0.5.0.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
100a884fd7c57b0f508767321665d9de2d363d08bd4f30c038f9cfea4f9a86f5
|
|
| MD5 |
0dfeb2ad406a5bc1e2e7a8b5cb527f3d
|
|
| BLAKE2b-256 |
4ff9dce3397754b543c091e888210811ec24c12efba8bc5d48b500b321548196
|
Provenance
The following attestation bundles were made for infomaniak-0.5.0.tar.gz:
Publisher:
publish.yml on peaktwilight/infomaniak-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infomaniak-0.5.0.tar.gz -
Subject digest:
100a884fd7c57b0f508767321665d9de2d363d08bd4f30c038f9cfea4f9a86f5 - Sigstore transparency entry: 1107704428
- Sigstore integration time:
-
Permalink:
peaktwilight/infomaniak-cli@acb1cc6ae54ba52acf19ca29c50d45476843b583 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/peaktwilight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@acb1cc6ae54ba52acf19ca29c50d45476843b583 -
Trigger Event:
release
-
Statement type:
File details
Details for the file infomaniak-0.5.0-py3-none-any.whl.
File metadata
- Download URL: infomaniak-0.5.0-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27f7a8d14669ed8a1245235cb417e78002e5bf38baaa413b987cc9086da39e20
|
|
| MD5 |
5bd2ffe7338a22cb5f3afe5f4797394d
|
|
| BLAKE2b-256 |
f170d7d2aec01e7f00810fa1e757e16a67f66f04f20103c36e2fff3e5213ea7b
|
Provenance
The following attestation bundles were made for infomaniak-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on peaktwilight/infomaniak-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
infomaniak-0.5.0-py3-none-any.whl -
Subject digest:
27f7a8d14669ed8a1245235cb417e78002e5bf38baaa413b987cc9086da39e20 - Sigstore transparency entry: 1107704429
- Sigstore integration time:
-
Permalink:
peaktwilight/infomaniak-cli@acb1cc6ae54ba52acf19ca29c50d45476843b583 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/peaktwilight
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@acb1cc6ae54ba52acf19ca29c50d45476843b583 -
Trigger Event:
release
-
Statement type: