Quickstart¶
This guide walks you through the core MeterBase workflow in about 5 minutes. By the end, you will have added a property, uploaded a bill, and run a savings analysis.
Prerequisites¶
- A MeterBase account -- MeterBase uses a BDR-only sales flow (no self-service signup). Request a demo at meterbase.io to get started.
- An API key (provided by your account representative or generated from Settings after onboarding)
Live URLs
- Sales site: meterbase.io -- request a demo here
- Application: app.meterbase.io -- log in here after onboarding
- Demo account:
demo@meterbase.io/demo1234(read-only access to sample data)
Base URL
All examples below use https://app.meterbase.io as the base URL.
Step 1: Authenticate¶
Every API request requires a bearer token. Exchange your API key for a session token, or use the API key directly as a bearer token:
curl -X POST https://app.meterbase.io/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "you@company.com",
"password": "your-password"
}'
Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer",
"user": {
"id": 1,
"email": "you@company.com",
"name": "Jane Smith"
}
}
Set the token for subsequent requests:
Step 2: Create a Portfolio¶
Portfolios group properties together. Create one for your first batch of properties:
curl -X POST https://app.meterbase.io/api/portfolios \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "West Coast Apartments",
"description": "Our California and Oregon multifamily portfolio"
}'
Response:
{
"id": 1,
"name": "West Coast Apartments",
"description": "Our California and Oregon multifamily portfolio",
"property_count": 0,
"created_at": "2026-03-25T10:00:00Z"
}
Step 3: Add a Property¶
Add a property to your portfolio. MeterBase automatically looks up the serving utility by ZIP code:
curl -X POST https://app.meterbase.io/api/properties \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"portfolio_id": 1,
"name": "Sunset Apartments",
"address": "1234 Sunset Blvd",
"city": "Los Angeles",
"state": "CA",
"zip_code": "90028",
"unit_count": 48,
"square_footage": 52000
}'
Response:
{
"id": 1,
"name": "Sunset Apartments",
"address": "1234 Sunset Blvd",
"city": "Los Angeles",
"state": "CA",
"zip_code": "90028",
"unit_count": 48,
"square_footage": 52000,
"utility": {
"id": 1247,
"name": "Southern California Edison",
"state": "CA"
},
"created_at": "2026-03-25T10:01:00Z"
}
Automatic Utility Detection
MeterBase uses its database of 120,015 ZIP-to-utility mappings to automatically identify which utility serves each property. You can override this if needed.
Step 4: Upload a Bill for AI Analysis¶
Upload a PDF utility bill. MeterBase's AI engine extracts charges, usage data, rate schedule information, and flags anomalies:
curl -X POST https://app.meterbase.io/api/bills/upload \
-H "Authorization: Bearer $TOKEN" \
-F "file=@june-2026-bill.pdf" \
-F "property_id=1"
Response:
{
"id": 1,
"property_id": 1,
"status": "analyzed",
"period_start": "2026-05-01",
"period_end": "2026-05-31",
"total_amount": 4827.53,
"total_kwh": 38200,
"rate_schedule": "TOU-GS-2-B",
"utility_name": "Southern California Edison",
"charges": [
{"type": "energy", "description": "On-Peak Energy", "amount": 2145.20},
{"type": "energy", "description": "Off-Peak Energy", "amount": 1562.33},
{"type": "demand", "description": "Demand Charge", "amount": 820.00},
{"type": "fixed", "description": "Customer Charge", "amount": 300.00}
],
"ai_insights": [
"Bill amount is 12% higher than the 6-month average for this property.",
"Demand charges represent 17% of total cost. Consider load management."
]
}
Step 5: Run Savings Analysis¶
With a bill on file, run a savings analysis to compare your current tariff against all available alternatives:
curl -X POST https://app.meterbase.io/api/savings/analyze \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"property_id": 1
}'
Response:
{
"property_id": 1,
"current_tariff": "TOU-GS-2-B",
"current_annual_cost": 57930.36,
"recommendations": [
{
"tariff_name": "TOU-GS-2-D",
"utility": "Southern California Edison",
"estimated_annual_cost": 52140.00,
"annual_savings": 5790.36,
"savings_percent": 10.0,
"notes": "Lower demand charges during summer months"
},
{
"tariff_name": "TOU-GS-2-E",
"utility": "Southern California Edison",
"estimated_annual_cost": 54200.00,
"annual_savings": 3730.36,
"savings_percent": 6.4,
"notes": "Better off-peak rates for evening-heavy usage"
}
]
}
Portfolio-Wide Analysis
You can also run savings analysis across an entire portfolio in one call using POST /api/savings/portfolio-analyze with a portfolio_id.
Next Steps¶
You have completed the core workflow. Here is where to go next:
| Goal | Guide |
|---|---|
| Set up tenant billing (RUBS) | Tenant Billing Guide |
| Connect your PMS (Yardi, RealPage, etc.) | Propexo Integration |
| Explore the tariff database | Tariff Search Guide |
| Deploy on Vercel | Deployment Guide |
| Configure environment and API keys | Configuration Reference |