Your garage management, open to other programs
The API brings data from Manage²Hero into Excel, your accounting software or your website. Each program signs in with its own API token and only ever sees the data of your organization.
- Base URL
https://api.manage2hero.com/v1 - Format
JSON - Sign-in
Authorization: Bearer …
- Create a tokenA person with administrator rights creates it under Administration → API access. The token is shown only once.
- Store the token in the programBest as the environment variable
M2H_API_TOKEN, never in the source code. - Fetch your garage parksThe request next to this returns your garage parks. Copy, paste, done.
curl -s "https://api.manage2hero.com/v1/locations" \
-H "Authorization: Bearer $M2H_API_TOKEN"More languages: PowerShell, Node.js, Python
$headers = @{ Authorization = "Bearer $env:M2H_API_TOKEN" }
Invoke-RestMethod -Uri "https://api.manage2hero.com/v1/locations" -Headers $headersconst res = await fetch('https://api.manage2hero.com/v1/locations', {
headers: { Authorization: `Bearer ${process.env.M2H_API_TOKEN}` },
});
const body = await res.json();
if (!body.success) throw new Error(`${body.error.code}: ${body.error.message}`);
const data = body.data; // continue processing hereimport os, requests
res = requests.get(
"https://api.manage2hero.com/v1/locations",
headers={"Authorization": f"Bearer {os.environ['M2H_API_TOKEN']}"},
timeout=30,
)
body = res.json()
if not body["success"]:
raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
print(body["data"]){
"success": true,
"data": {
"items": [
{ "id": "6a1f0c2e-…", "code": "HH01",
"name": "Garagenpark Hamburg Nord",
"active": true, … }
],
"next_cursor": null
},
"request_id": "req_4n2Xc9…"
}What the API can do today
The “Permission” column names what the token must be allowed to do for the request. The API is extended step by step; new things are listed in the changelog.
Garage parks and occupancy
How many garages are rented, and how has that developed?
| Task | Endpoint | Permission |
|---|---|---|
| List garage parks | GET/v1/locations | locations:read |
| Occupancy rate of all garage parks | GET/v1/occupancy | occupancy:read |
| Occupancy rate of one garage park | GET/v1/locations/{id}/occupancy | occupancy:read |
| Occupancy rate history | GET/v1/occupancy/history | occupancy:read |
Tenants and import
Read current tenants and take over existing tenants from another system. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Current tenants of a garage park | GET/v1/locations/{id}/tenants | tenants:read |
| Submit existing tenants to the import | POST/v1/tenant-imports | tenants:import |
| Status of an import | GET/v1/tenant-imports/{id} | tenants:import |
| Cancel an import | DELETE/v1/tenant-imports/{id} | tenants:import |
| Take over an import (create tenants and leases) | POST/v1/tenant-imports/{id}/commit | tenants:import_commit |
| One tenant | GET/v1/tenants/{id} | tenants:read |
| Timeline of a tenant | GET/v1/tenants/{id}/timeline | timeline:read |
Bookings and revenue
The booking journal and net revenue for your reports.
| Task | Endpoint | Permission |
|---|---|---|
| Booking journal | GET/v1/bookings | bookings:read |
| Net revenue by month, document type or garage park | GET/v1/revenue | bookings:read |
| Change sync bookingsStarting cursor, changes since the cursor and lookup by ID | /v1/bookings/changes/cursor /v1/bookings/changes /v1/bookings/by-ids | bookings:read |
| DATEV exports (history) | GET/v1/datev/exports | datev:export |
| Request a DATEV export | POST/v1/datev/exports | datev:export |
| Status of a DATEV export | GET/v1/datev/exports/{id} | datev:export |
| Download link for a DATEV export | POST/v1/datev/exports/{id}/download-link | datev:export |
Invoices and payments
Issued invoices and received payments.
| Task | Endpoint | Permission |
|---|---|---|
| Invoices | GET/v1/invoices | invoices:read |
| One invoice with line items | GET/v1/invoices/{id} | invoices:read |
| Incoming payments | GET/v1/payments | payments:read |
| Change sync invoicesStarting cursor, changes since the cursor and lookup by ID | /v1/invoices/changes/cursor /v1/invoices/changes /v1/invoices/by-ids | invoices:read |
| Change sync incoming paymentsStarting cursor, changes since the cursor and lookup by ID | /v1/payments/changes/cursor /v1/payments/changes /v1/payments/by-ids | payments:read |
Open items and dunning
What is still unpaid, and where does each lease stand in the dunning process?
| Task | Endpoint | Permission |
|---|---|---|
| Open items | GET/v1/open-items | open_items:read |
| Open items: totals and aging | GET/v1/open-items/summary | open_items:read |
| Dunning status per lease | GET/v1/dunning/leases | dunning:read |
| Issued dunning notices | GET/v1/dunning/notices | dunning:read |
| One dunning notice with its items | GET/v1/dunning/notices/{id} | dunning:read |
| Change sync dunning noticesStarting cursor, changes since the cursor and lookup by ID | /v1/dunning/notices/changes/cursor /v1/dunning/notices/changes /v1/dunning/notices/by-ids | dunning:read |
Documents
Retrieve tenant and location documents, with short-lived download links.
| Task | Endpoint | Permission |
|---|---|---|
| Change sync documentsStarting cursor, changes since the cursor and lookup by ID | /v1/documents/changes/cursor /v1/documents/changes /v1/documents/by-ids | documents:read |
| Documents | GET/v1/documents | documents:read |
| One document (metadata) | GET/v1/documents/{id} | documents:read |
| Download link for a document | POST/v1/documents/{id}/download-link | documents:download |
Emails
Which system emails a tenant received, with status and, on request, the full text.
| Task | Endpoint | Permission |
|---|---|---|
| Change sync emailsStarting cursor, changes since the cursor and lookup by ID | /v1/emails/changes/cursor /v1/emails/changes /v1/emails/by-ids | emails:read |
| Email history of tenants | GET/v1/emails | emails:read |
| One email | GET/v1/emails/{id} | emails:read |
Contracts
Contracts, amendments, terminations and signatures. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Change sync contractsStarting cursor, changes since the cursor and lookup by ID | /v1/contracts/changes/cursor /v1/contracts/changes /v1/contracts/by-ids | contracts:read |
| Contracts | GET/v1/contracts | contracts:read |
| One contract | GET/v1/contracts/{id} | contracts:read |
Units and garages
Individual units with status, rent and current tenant. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Units and garages | GET/v1/units | units:read |
| One unit | GET/v1/units/{id} | units:read |
Damage reports
Read and create damage reports and set their status. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Change sync damagesStarting cursor, changes since the cursor and lookup by ID | /v1/damages/changes/cursor /v1/damages/changes /v1/damages/by-ids | damages:read |
| Damages (case files) | GET/v1/damages | damages:read |
| One damage | GET/v1/damages/{id} | damages:read |
| Create a damage at a unit | POST/v1/damages | damages:write |
| Set the status of a damage | PATCH/v1/damages/{id}/status | damages:write |
Utilities and meters
Read and enter statements, meters and meter readings. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Electricity and water statements | GET/v1/utility/statements | utility:read |
| Meters | GET/v1/meters | utility:read |
| Create a meter | POST/v1/meters | utility:write |
| Readings of a meter | GET/v1/meters/{id}/readings | utility:read |
| Enter a meter reading | POST/v1/meters/{id}/readings | utility:write |
Appointments
Read and create viewings and handovers. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Appointments | GET/v1/appointments | appointments:read |
| One appointment | GET/v1/appointments/{id} | appointments:read |
| Create an appointment | POST/v1/appointments | appointments:write |
Prospects and waiting list
Read enquiries and submit them from your own website. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Prospect inquiries | GET/v1/prospects | prospects:read |
| One prospect inquiry | GET/v1/prospects/{id} | prospects:read |
| Waiting list | GET/v1/waitlist | prospects:read |
| Submit a rental inquiry | POST/v1/prospects | prospects:write |
Contractors and orders
Read contractors and their orders. Guide
| Task | Endpoint | Permission |
|---|---|---|
| Contractors | GET/v1/contractors | contractors:read |
| Orders to contractors | GET/v1/contractor-orders | contractors:read |
Webhooks
Set up notifications for events instead of polling. Webhooks handbook · Integration checklist
| Task | Endpoint | Permission |
|---|---|---|
| List webhooks | GET/v1/webhooks | webhooks:manage |
| Create a webhook | POST/v1/webhooks | webhooks:manage |
| One webhook | GET/v1/webhooks/{id} | webhooks:manage |
| Update a webhook | PATCH/v1/webhooks/{id} | webhooks:manage |
| Delete a webhook | DELETE/v1/webhooks/{id} | webhooks:manage |
| Rotate the signing secret | POST/v1/webhooks/{id}/rotate-secret | webhooks:manage |
| Send a test event | POST/v1/webhooks/{id}/test | webhooks:manage |
| Delivery history of a webhook | GET/v1/webhooks/{id}/deliveries | webhooks:manage |
| Send a delivery again | POST/v1/webhooks/{id}/deliveries/{delivery_id}/retry | webhooks:manage |
| Send failed deliveries again | POST/v1/webhooks/{id}/deliveries/retry-failed | webhooks:manage |
| Sandbox: simulate an event | POST/v1/sandbox/events | webhooks:manage |
Access log
Which requests your API tokens have made.
| Task | Endpoint | Permission |
|---|---|---|
| Access log of API calls | GET/v1/usage | usage:read |