⚡ REST API v2.0 — Live

Office 365 Accounts
Delivered via API

Programmatic access to Office 365 E3 stock and custom name accounts across 3 domains. Integrate into your bot, store, or platform in minutes.

🔑 Get Your API Key View Docs ↓
$0.05
Per Account
3
Domains
E3
License Included
24/7
Availability

⚡ Quick Start

From zero to first order in 3 minutes.

Step 1 — Install requests
pip install requests
Step 2 — Get your API key from Telegram
# Open @Office365Pro_bot → send /apikey
Step 3 — Full working example
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"])

Authentication

Every request requires your API key in the header.

1
Get your API key
Open @Office365Pro_bot on Telegram and send /apikey
2
Add to every request
Include the header: X-API-Key: your_key_here
3
Load your balance
Deposit USDT via Binance Pay in the bot → use balance to buy accounts
4
Make your first request
GET /api/stock — check available inventory

Products & Pricing

All accounts include Office 365 E3 license. 3 domains available.

📦 Stock Accounts — Instant Delivery

o365pp
Stock Account @o365pp.com
Pre-created, ready to use. Instant delivery.
$0.05 / account
officepro
Stock Account @365officepro.com
Pre-created, ready to use. Instant delivery.
$0.05 / account
workpro
Stock Account @365workpro.com
Pre-created, ready to use. Instant delivery.
$0.05 / account

✨ Custom Name Accounts — ~20 sec Delivery

custom_o365pp
Custom Name @o365pp.com
Your chosen username. E3 licensed. ~20 sec.
$0.05 / account
custom_officepro
Custom Name @365officepro.com
Your chosen username. E3 licensed. ~20 sec.
$0.05 / account
custom_workpro
Custom Name @365workpro.com
Your chosen username. E3 licensed. ~20 sec.
$0.05 / account

API Endpoints

Base URL: https://o365.pro/api

GET /api/stock Check available inventory & prices
Python Example
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}
Response
{
  "success": true,
  "stock":   { "o365pp": 126, "officepro": 0, "workpro": 799 },
  "prices":  { "o365pp": 0.05, "officepro": 0.05, "workpro": 0.05 },
  "total":   925
}
GET /api/balance Your account balance
Python Example
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
POST /api/order Buy stock accounts (instant delivery)
Request Body
{
  "product": "o365pp",      // "o365pp" | "officepro" | "workpro"
  "qty":     5              // 1–500
}
Python Example
# 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"])
Response
{
  "success":  true,
  "accounts": [
    { "email": "k916@o365pp.com", "password": "Xd2@TeXp" }
  ],
  "qty":      1,
  "cost":     0.05,
  "balance":  9.70
}
POST /api/custom_order Create custom name account (~20 sec)
Request Body
{
  "product":    "custom_o365pp",  // "custom_o365pp" | "custom_officepro" | "custom_workpro"
  "first_name": "John",
  "last_name":  "Doe",
  "username":   "john.doe"         // → john.doe@o365pp.com
}
Python Example
# 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']}")
Response
{
  "success": true,
  "account": {
    "email":    "john.doe@365workpro.com",
    "password": "sa@QO4Nc",
    "license":  "E3"
  },
  "cost":    0.05,
  "balance": 9.65
}
GET /api/orders?limit=20 Your order history (max 100)
Python Example
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"])
POST /api/reset_password Reset password of a purchased account
Description

Resets the Microsoft 365 password for an account you purchased via this API.
You can only reset accounts from your own order history.

Request Body
{
  "email": "john.doe@365workpro.com"
}
Python Example
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 Response
{
  "success":      true,
  "email":        "john.doe@365workpro.com",
  "new_password": "Xk9@mP2q",
  "note":         "Password changed. First login will require setting a new password."
}
Error 403 — Not your account
{
  "success": false,
  "error":   "Account not found in your order history. You can only reset accounts purchased with your API key."
}

HTTP Status Codes

All error responses follow the same format: {"success": false, "error": "..."}

CodeMeaningCommon Cause
200SuccessRequest completed successfully
401UnauthorizedMissing X-API-Key header
403ForbiddenInvalid or inactive API key
402Payment RequiredInsufficient balance
400Bad RequestInvalid product or missing fields
503Service UnavailableNot enough stock available