Exports and estimates
Get a project's PDF report, spreadsheet and GIS files, and what the measured work comes to, from your own software.
Two endpoints turn a project into something to hand on:
- Export a project builds its files: the PDF
report, CSV, GeoJSON, KML, GPX, DXF, TXT and
.mmp. - Get a project's estimate answers what the measured work comes to, priced from your catalogue, as JSON.
Both use the same code as the app's Export and estimate, so the numbers and files your software gets are the ones the app shows.
Export files#
curl -X POST https://api.measuremaponline.com/api/v2/projects/PROJECT_ID/export \
-H "Authorization: $MMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"formats": ["pdf", "csv"], "language": "en", "pdf": {"design": "survey"}}'The answer lists a link for each file:
{
"type": "export",
"projectId": "Xr7Lp2Qm9KdT4wZs",
"files": [
{"name": "14 Harbour Road.pdf", "format": "pdf", "contentType": "application/pdf", "url": "https://storage.googleapis.com/…"},
{"name": "14 Harbour Road.csv", "format": "csv", "contentType": "text/csv", "url": "https://storage.googleapis.com/…"}
],
"expiresOn": 1792087654000
}- The links work for 24 hours (
expiresOn). Download the files and keep your own copy; anyone with a link can download its file until then. - The files are built while you wait. A report of a large project can take several seconds: use a generous timeout, 60 seconds or more.
- Your account can build up to 120 exports an hour: see Rate limits.
- The report has no map picture: the app photographs its own map, and a server has none. Everything else is there.
- For just the report, Get a project's report
takes its options in the query:
GET /projects/PROJECT_ID/pdf?design=brief.
Prices#
Prices come from your product catalogue, and reading them needs Products: read on the key, which is never given by default:
| The key has Products: read | The report | includeEstimate: true | Get a project's estimate |
|---|---|---|---|
| Yes | With prices | The estimate is added | Answers |
| No | Made with every price left out | 403 insufficient_scope | 403 insufficient_scope |
A product's cost price is never in a file or an answer.
The report#
Choose the report in pdf:
| Option | Values |
|---|---|
design | field (the default), survey or brief: the three designs of the app. |
pageSize | A4 or LETTER |
orientation | portrait or landscape |
pictureSize | small, normal or big |
spotsSort | name or icon |
includeEstimate, includeSummary, includePoints, includeSideLengths, includeProfile, includeImages, includeCompany, includeLogo, hidePrices | true or false |
The report is made in your account's name, with your letterhead: your organisation's, inside one, under its report settings, as a report exported in the app.
Units#
Files are written in metric units unless you ask otherwise, with units:
{"formats": ["csv"], "units": {"system": "imperial", "length": "ft", "area": "acre"}}| System | length | Shows | area | Shows |
|---|---|---|---|---|
metric | m | m, then km | m2 | m², then km² |
m_nmi | m, then nautical miles | a_ha | ares, then hectares | |
ha | hectares | |||
m2_ha | m², then hectares | |||
imperial | ft | ft, then miles | sqft | sq ft, then sq mi |
ft_nmi | ft, then nautical miles | sqyd | sq yd, then sq mi | |
yd | yd, then miles | acre | acres | |
yd_nmi | yd, then nautical miles | sqft_acre | sq ft, then acres | |
ft_in | ft and inches, then miles | roof_square | roofing squares |
A unit must belong to the system: {"system": "imperial", "area": "m2"} answers
400 invalid_body.
The estimate#
curl "https://api.measuremaponline.com/api/v2/projects/PROJECT_ID/estimate?date=2026-11-02" \
-H "Authorization: $MMO_API_KEY"- A line per product, across every shape and spot that uses it, with its area and length in the product's own pricing unit, its amount before tax, and the tax at the product's rate (or the project's, when the product sets none).
- Subtotals, taxes and totals per currency. Amounts in different currencies are
never added together;
mixedCurrencysays when there is more than one. - What each shape and spot comes to on its own, under
geometries, by the IDs that Get a project's measurements uses. dateprices the work as on that day, which decides the seasonal prices in force.