Skip to main content

Veeam Backup for Microsoft 365 Python API Wrapper (Beta)

  • February 9, 2026
  • 2 comments
  • 29 views

JonahMay
Forum|alt.badge.img+12

@mkevenaar are back at it again! We’re excited to share a new community-built Python project for automating Veeam Backup for Microsoft 365:

👉 veeam-365

 

veeam-365 is an independent, open-source Python client for the Veeam Backup for Microsoft 365 REST API, built to make real-world automation simpler, safer, and reusable across scripts, services, and integrations.

 

🚀 Why veeam-365 Exists

If you’ve worked with the VB365 REST API directly, you’ve probably dealt with:

  • repetitive authentication logic

  • manual API version routing

  • boilerplate async code

  • brittle per-script REST calls

veeam-365 wraps all of that behind a clean Python interface so you can focus on what you’re automating — not how to keep the session alive from call-to-call or release-to-release.

 

⭐ Recommended Usage: The Smart Client

The core of this project is the Smart Client (VeeamClient).

This client handles:

  • API version routing (v6, v7, v8)

  • authentication and token refresh

  • async execution

  • clean lifecycle management (connect / close)

This Smart Client model did not exist when we originally published veeam-br, but I’m happy to report that we have added similar functionality to that package as well!

 

🧠 Supported Versions

VB365 Version API Version Supported
8.0.2.159 v8
7.0.0.2911 v7
6.0.0.367 v6
< 6.0.0.367 < v6

Each API version is generated from official OpenAPI schemas and mapped explicitly.

 

🧪 Example Usage

Create and connect a Smart Client

import asyncio
from veeam_365.client import VeeamClient

async def main():
vc = VeeamClient(
host="https://vb365.example.com:4443",
username="administrator",
password="SuperSecretPassword",
verify_ssl=False,
api_version="v8"
)

await vc.connect()

# use the client...

await vc.close()

asyncio.run(main())

Call an API endpoint

repos = await vc.call(
vc.api("backup_repository").backup_repository_get_repositories
)

for repo in repos.data or []:
print(repo.name)

 

 

📦 Installation

From PyPI:

pip install veeam-365

Or from source:

git clone https://github.com/Cenvora/veeam-365.git
cd veeam-365
pip install -e .

 

🛠 Designed For

veeam-365 is intended for:

  • automation and scripting

  • internal tooling and portals

  • reporting pipelines

  • async services and schedulers

  • integrations with other Python-based systems

This is not a one-off script repo — it’s a reusable client library designed to speed up your development cycles after product releases and simplify your codebase.

 

🤝 Contributing

Contributions are welcome.
If you want to add API versions, improve coverage, or tighten the Smart Client behavior, PRs are encouraged.

 

🔗 Project Link

👉 https://github.com/Cenvora/veeam-365

If you’ve automated Veeam Backup for Microsoft 365 before and wished the API were easier to work with in Python — this project is for you.

2 comments

Chris.Childerhose
Forum|alt.badge.img+21
  • Veeam Legend, Veeam Vanguard
  • February 9, 2026

Another very interesting project.  Adding to my list but will see if I can test this one and if beneficial.

 
 
 

Jonty
Forum|alt.badge.img+1
  • VUG Leader
  • February 11, 2026

I have started my python training! Excited to try these out