Programmatic access to Office 365 E3 stock and custom name accounts across 3 domains. Integrate into your bot, store, or platform in minutes.
From zero to first order in 3 minutes.
pip install requests
# Open @Office365Pro_bot → send /apikey
import requests API_KEY = "YOUR_API_KEY" BASE = "https://o365.pro/api" HEADERS = {"X-API-Key": API_KEY} # Buy 1 stock account from o365pp.com r = requests.post(f"{BASE}/order", headers=HEADERS, json={"product": "o365pp", "qty": 1}, timeout=15).json() if r["success"]: acc = r["accounts"][0] print(acc["email"], acc["password"]) # Buy custom name account on 365workpro.com r = requests.post(f"{BASE}/custom_order", headers=HEADERS, json={"product": "custom_workpro", "first_name": "John", "last_name": "Doe", "username": "john.doe"}, timeout=60).json() if r["success"]: acc = r["account"] print(acc["email"], acc["password"], acc["license"])
Every request requires your API key in the header.
/apikeyX-API-Key: your_key_hereGET /api/stock — check available inventoryAll accounts include Office 365 E3 license. 3 domains available.
📦 Stock Accounts — Instant Delivery
✨ Custom Name Accounts — ~20 sec Delivery
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"]) # {'o365pp': 126, 'officepro': 0, 'workpro': 799} print(data["prices"]) # {'o365pp': 0.05, 'officepro': 0.05, 'workpro': 0.05}
{
"success": true,
"stock": { "o365pp": 126, "officepro": 0, "workpro": 799 },
"prices": { "o365pp": 0.05, "officepro": 0.05, "workpro": 0.05 },
"total": 925
}
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
{
"product": "o365pp", // "o365pp" | "officepro" | "workpro"
"qty": 5 // 1–500
}
# Buy 5 accounts from o365pp.com r = requests.post( "https://o365.pro/api/order", headers=HEADERS, json={"product": "o365pp", "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"])
{
"success": true,
"accounts": [
{ "email": "k916@o365pp.com", "password": "Xd2@TeXp" }
],
"qty": 1,
"cost": 0.05,
"balance": 9.70
}
{
"product": "custom_o365pp", // "custom_o365pp" | "custom_officepro" | "custom_workpro"
"first_name": "John",
"last_name": "Doe",
"username": "john.doe" // → john.doe@o365pp.com
}
# Note: this request takes ~20 seconds (license assignment) r = requests.post( "https://o365.pro/api/custom_order", headers=HEADERS, json={ "product": "custom_workpro", # or custom_o365pp / custom_officepro "first_name": "John", "last_name": "Doe", "username": "john.doe" }, timeout=60 # important! set at least 60 sec ) data = r.json() if data["success"]: acc = data["account"] print(acc["email"], acc["password"], acc["license"]) print(f"Balance: ${data['balance']}")
{
"success": true,
"account": {
"email": "john.doe@365workpro.com",
"password": "sa@QO4Nc",
"license": "E3"
},
"cost": 0.05,
"balance": 9.65
}
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"])
Resets the Microsoft 365 password for an account you purchased via this API.
You can only reset accounts from your own order history.
{
"email": "john.doe@365workpro.com"
}
r = requests.post(
"https://o365.pro/api/reset_password",
headers=HEADERS,
json={"email": "john.doe@365workpro.com"}
)
data = r.json()
if data["success"]:
print(f"New password: {data['new_password']}")
else:
print(f"Error: {data['error']}")
{
"success": true,
"email": "john.doe@365workpro.com",
"new_password": "Xk9@mP2q",
"note": "Password changed. First login will require setting a new password."
}
{
"success": false,
"error": "Account not found in your order history. You can only reset accounts purchased with your API key."
}
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 or missing fields |
| 503 | Service Unavailable | Not enough stock available |