Programmatic access to Office 365 stock and custom name accounts. Integrate into your bot, store, or platform in minutes.
From zero to first order in 3 minutes.
pip install requests
# Open @Office365Pro_bot → send /getapikey
# Custom name — 100GB (@msdn365.net) custom = requests.post(f"{BASE}/custom_order", headers=HEADERS, json={"product": "custom_100gb", "first_name": "John", "last_name": "Doe", "username": "john.doe"}, timeout=30).json() # Custom name — 1TB (@365offices.com) custom = requests.post(f"{BASE}/custom_order", headers=HEADERS, json={"product": "custom_1tb", "first_name": "John", "last_name": "Doe", "username": "john.doe"}, timeout=30).json() if custom["success"]: acc = custom["account"] print(acc["email"], acc["password"], acc["license"]) print(f"Balance: ${custom['balance']}")
Every request requires your API key in the header.
/getapikeyX-API-Key: your_key_hereGET /api/stock — check available inventoryAll accounts include Office 365 E3 license with OneDrive storage.
Base URL: https://o365.pro/api
import requests API_KEY = "YOUR_API_KEY" HEADERS = {"X-API-Key": API_KEY} r = requests.get("https://o365.pro/api/stock", headers=HEADERS) data = r.json() print(data["stock"]) # {'stock_100gb': 245, 'stock_1tb': 89} print(data["prices"]) # {'stock_100gb': 0.05, ...}
r = requests.get("https://o365.pro/api/balance", headers=HEADERS) data = r.json() print(f"Balance: ${data['balance']}") # Balance: $9.75 print(f"Orders: {data['total_orders']}") # Orders: 12
# 100GB stock accounts r = requests.post( "https://o365.pro/api/order", headers=HEADERS, json={"product": "stock_100gb", "qty": 5} ) # 1TB stock accounts r = requests.post( "https://o365.pro/api/order", headers=HEADERS, json={"product": "stock_1tb", "qty": 5} ) data = r.json() if data["success"]: for acc in data["accounts"]: print(acc["email"], acc["password"]) print(f"Cost: ${data['cost']} | Balance: ${data['balance']}") else: print("Error:", data["error"])
# Note: this request takes ~15 seconds (license assignment) # product options: "custom_100gb" or "custom_1tb" r = requests.post( "https://o365.pro/api/custom_order", headers=HEADERS, json={ "product": "custom_100gb", # or "custom_1tb" "first_name": "John", "last_name": "Doe", "username": "john.doe" }, timeout=30 # important! set at least 30 sec ) data = r.json() if data["success"]: acc = data["account"] print(acc["email"], acc["password"], acc["license"]) print(f"Balance: ${data['balance']}")
r = requests.get( "https://o365.pro/api/orders", headers=HEADERS, params={"limit": 20} ) for order in r.json()["orders"]: print(order["date"], order["product"], order["email"])
All error responses follow the same format: {"success": false, "error": "..."}
| Code | Meaning | Common Cause |
|---|---|---|
| 200 | Success | Request completed successfully |
| 401 | Unauthorized | Missing X-API-Key header |
| 403 | Forbidden | Invalid or inactive API key |
| 402 | Payment Required | Insufficient balance |
| 400 | Bad Request | Invalid product, qty out of range |
| 503 | Service Unavailable | Not enough stock available |