Introduction
What the Measure Map Online API does, who can use it, and the conventions every endpoint follows.
The Measure Map Online API connects your own software to your Measure Map Online account. With it you can:
- read and change projects: create a project for a job, read every area, line
and spot measured in it, export it as a
.mmpfile, file it in folders; - keep your product catalogue in sync with your own price list, so estimates in the app use your current prices;
- manage your organisation on Enterprise: create members, change their roles, and open their accounts from your own tools;
- put projects on your website, as a live map in an
<iframe>, and on Open Guest start a project for each visitor who wants to measure; - hear about what happens through webhooks: new projects, comments, guest leads, budget alerts.
Base URL#
Every request goes to one address, for live and sandbox alike:
https://api.measuremaponline.com/api/v1The key you send decides whether a request works with your real data or your sandbox.
Authentication#
Send your API key, exactly as it is, in the Authorization header:
curl https://api.measuremaponline.com/api/v1/users/YOUR_ACCOUNT_ID/projects/all \
-H "Authorization: $MMO_API_KEY"Create keys on the Developer page of the app. Each key carries the access you chose for it, such as reading projects or changing products. See Authentication.
Conventions#
- JSON in, JSON out. Send bodies as
application/json. Every answer is JSON, except the.mmpexport, which is XML. - Success is 200. A failed request answers with a 4xx or 5xx status and a
body with an
errorCode: see Errors. - IDs are strings. Keep them as you receive them.
- Times are numbers: milliseconds since 1 January 1970 (UTC), as in
JavaScript's
Date.now(). - Measurements are metric: areas in square metres, lengths in metres, coordinates in degrees (WGS 84). Convert for display as you need.
- Field names follow the objects they describe. Answers use camelCase
(
creatorUid,totalArea); a few request fields keep the names the app stores (access_level,comments_enabled,parentId). The reference shows each one exactly. - Additions are not breaking. New fields can appear in answers and new endpoints can be added at any time; write your code to ignore fields it does not know.
Every endpoint#
| Endpoint | What it does | Key access |
|---|---|---|
GET/ | Check the API | — |
POST/auth/token | Create an access token | auth |
POST/auth/iframe/token | Create an embed token | auth |
POST/auth/{uid}/login | Sign in as a member | users:write |
POST/projects/new | Create a project | projects:write |
POST/users/{uid}/projects/new | Create a project for a person | projects:write |
GET/users/{uid}/projects/all | List all of a person's projects | projects:read |
GET/users/{uid}/projects | List a person's projects page by page | projects:read |
GET/projects/{pid} | Get a project | projects:read |
PUT/projects/{pid} | Update a project | projects:write |
DELETE/projects/{pid} | Delete a project | projects:write |
GET/projects/{pid}/data | Get a project's measurements | projects:read |
GET/projects/{pid}/comments | List a project's comments | projects:read |
GET/projects/{pid}/mmp | Export a project as .mmp | projects:read |
POST/users/{uid}/folders/new | Create a folder | projects:write |
GET/users/{uid}/folders/all | List a person's folders | projects:read |
GET/folders/{fid} | Get a folder | projects:read |
PUT/folders/{fid} | Update a folder | projects:write |
DELETE/folders/{fid} | Delete a folder | projects:write |
GET/users | List members | users:read |
POST/users/new | Create a member | users:write |
GET/users/{uid} | Get a member | users:read |
PUT/users/{uid} | Update a member | users:write |
DELETE/users/{uid} | Delete a member | users:write |
GET/products | List products | products:read |
POST/products | Create a product | products:write |
GET/products/{id} | Get a product | products:read |
PUT/products/{id} | Update a product | products:write |
DELETE/products/{id} | Archive a product | products:write |
Where to go next#
- Quickstart: your first request in five minutes.
- Authentication: keys, access and keeping them safe.
- Embedding projects and Open Guest: the website integrations.
- The API reference: every endpoint, field and error, with code in eight languages and a console to try them.