July 31, 2024
Schematic Floorplans can now be ordered with additional options including color, furniture and a custom logo. Users can also query individual files within purchased schematic floorplan bundles.
For more information, please refer to our Ordering Add-Ons Page.
July 10, 2024
Minor update:
- Remove @beta from Property Intelligence API Objects
June 20, 2024
Minor update:
- Deprecated model.visibility in favor of model.accessVisibility
April 25, 2024
Layers are now partially exposed by Model API. Users can now query layers on any object and obtain a list of layers for any view. Learn More.
Password Protected and Public (available on Discover) visibilities can now be seen and set. Previously only private and unlisted were possible.
- The new accessVisibility attribute returns private, unlisted, public or password
- The new accessVisibilityLastChanged attribute returns the date/time when visibility was last changed.
- The new updateModelAccessVisibility mutation will allow a user to set the visibility of a space to all four visibility options as well as set passwords on password protected spaces.
mutation UpdateModelAccessVisibility {
updateModelAccessVisibility(id: "RHcNJBGQyzo", visibility: password, password: "test") {
id
accessVisibility
accessVisibilityLastChanged
}
}
A user may also now get the total number of scans with the model.assets.sizeEstimates attribute. This count is often used when assessing the availability or price of an add-on.
query {
model(id: "qrsvVuvhfb6") {
assets {
sizeEstimates {
scanCount
}
}
}
}
Response:
{
"data": {
"model": {
"assets": {
"sizeEstimates": {
"scanCount": 1
}
}
}
}
}
Enterprise Only
folder.models query now allows activationStates parameter which can be active, archived, pending or flagged. Flagged models are models that are pending approval due to being captured in unauthorized geo-blocked locations.
query Folder {
folder(id: "BP1w3rrfjp8") {
subfolders(pageSize: 100) {
results {
name
id
}
}
models(pageSize: 100, activationStates: archived) {
nextOffset
totalResults
results {
state
name
id
created
description
address {
address
}
image {
resizeUrl(resolution: preview)
}
publication {
summary
}
}
}
}
}
January 18, 2024
All Users
Models can now be deleted via Model API
deleteModel(id: ID!, field: ModelIdField): Boolean mutation is now Public
Enterprise Users
This is a major revision exposing data from Property Insights. At this time, only Enterprise customers who have been enrolled in our beta can access the data.
The queries and mutations are available to all public API users, however dimensionEstimates and the room boundary data used to generate the area estimates will only be populated for models processed after the start of November 2023.
- New Mutations: addBoundaryVertex, addBoundaryEdge, addRoom, bulkPatchRoomData, patchBoundaryVertex, patchBoundaryEdge, addEdgeOpenings, removeEdgeOpenings, patchEdgeOpening, patchRoom, deleteRoomsAndBoundaryData
- New Queries: Model { roomClassifications, dimensionEstimates}, ModelRoom { dimensionEstimates, boundary, holes, classifications, keywords }, ModelFloor { dimensionEstimates, vertices, edges }
- New Types / Inputs: RoomClassification, Dimensions, DimensionData, DimensionPatch, DimensionDataPatch, BoundedRegion, Vertex, Edge, Opening, BoundedRegionDetails, VertexDetails, EdgeDetails, OpeningDetails, RoomDetails, RoomAssociations, RoomDataSelection
- New Enums: RoomDataType, OpeningType, EdgeType
November 15, 2023
Views are now a part of Model API! Documentation
- mutations: addView, deleteView, and copyViewData
- queries: model.views
Aug 8, 2023
- Private Model Embed (PME) no longer requires also having the OAuth feature enabled on the organization. Nothing changes from a usage perspective.
May 16, 2023
- A new
BillingDetails
under model, containing exempt: Boolean andmultiSpaceUse
multiSpaceUse
is the number of spaces counted against your space quota- Models on Classic Accounts or that were uploaded to accounts before entering into our new billing plans will always have a
multiSpaceUse
value of 1
- The Mutation
updateModelState
now accepts anallowActivate
boolean which defaults to false.- This must be set to true to unarchive models on accounts that would incur reactivation charges.
- If this is unspecified or set to false on an account that would incur reactivation charges a request.unsupported error code will be returned.
April 6, 2023
- Users with Folder API Access can now query folder paths within model queries.
query getModelFolder {
model(id: $modelId) {
folders {
id
depth
}
}
}
March 1, 2023
API Changes
- The assets attribute on Model is marked as nullable and documented with @error model.inactive
- The
updateModelAddress
mutation supports changing theaddressVisibility
property. - The model mutation
updateAddress
supports changing theaddressVisibility
property.
Bug Fixes and Other Enhancements
- Model Webhooks bugs have been fixed and users should receive notifications for all models in their organization.
January 18, 2023
- The
icon
attribute on Mattertags may now be read and patched. Please see Tags 2.0 Icons Reference for the full icon set. - The
floor
attribute on Labels may now be queried and mutated. - Added ID for the resource (denoting SID of the resource) in
AccessInfo
type for access query
December 14, 2022
- Folder and model api query for
access
now in@beta
- The HTTP status code will be more accurate in cases where the entire graph query fails to process.
- The error structure will also now include an additional httpStatus attribute which indicates what the equivalent HTTP status for each sub-error would have been
Example model query:
query model {
model(id: "$modelId") {
access(pageSize: 30, orderBy: ROLE, filters: [Admin]) {
results {
email
type
role
name
}
nextOffset
}
}
}
Example folder query:
query folder {
folder(id: "$folderId") {
id
name
access(filters: [FolderCreator], pageSize: 500) {
results {
email
name
role
type
}
nextOffset
}
}
}
November 16, 2022
- Folder API query for
modelCountSummary
is now out of@beta
October 26, 2022
- Folder extensions now out of
@beta
- Webhook Mutations now available. (Enterprise only)
mutation {
addModelEventWebhookCallback(ModelEventCallbackInput) { ... }
}
mutation {
patchModelEventWebhookCallback(
id: ID!,
input: ModelEventCallbackInput
): ModelEventWebhookCallback
}
mutation {
removeModelEventWebhookCallback(id: ID!): Boolean
}
mutation {
pingModelEventWebhookCallback(id: ID!): Boolean
}
mutation {
addModelEventToCallback(
id: ID!,
eventTypes: [ModelEventType!]
): ModelEventWebhookCallback
}
mutation {
removeModelEventFromCallback(
id: ID!,
eventTypes: [ModelEventType!]
): ModelEventWebhookCallback
}
October 12, 2022
This changes the default serialization of fields with errors or no data from being left out of the response to serializing null explicitly (this is more compliant with the GraphQL standard). There is a graph query which may be used to opt an org out of this behavior to the previous behaviour:
query getSerialization($orgId: ID) {
organization(id: $orgId) {
id
developer {
options {
serializeGraphNulls
}
}
}
}
mutation disableSerializeNulls($orgId: ID) {
patchDeveloperOptions(organizationId: $orgId, serializeGraphNulls: disabled) {
serializeGraphNulls
}
}
mutation enableSerializeNulls($orgId: ID) {
patchDeveloperOptions(organizationId: $orgId, serializeGraphNulls: enabled) {
serializeGraphNulls
}
}
Bug Fixes and Other Enhancements
- Fixed a bug where the query to get the organization’s root folder was not returning results.
September 21, 2022
- Mattertag description max length increased from 1,000 characters to 2,000 characters
September 7, 2022
This release exposes full folder manipulation (within org) create, edit, share, move and delete folders.
This is currently a closed beta that can be enabled via the api.graph.ext.folders policy.
API Changes
- Add query to get folder and root folder for an organization.
query {
folder(id: ID!): Folder
}
query {
rootFolder(organizationId: ID): Folder
}
- Add mutation to create, edit, delete and move folders within organization
mutation {
addFolder(folderDetails: FolderDetails!): Folder
}
mutation {
patchFolder(id: ID!, patchInput: FolderPatch!): Folder
}
mutation {
moveToFolder(modelIds: [ID!], folderIds: [ID!], destinationFolderId: ID!): Folder
}
mutation {
deleteFolder(id: ID!): Boolean
}
- Add mutation to add, update and remove shares for model and folders
mutation {
removeModelShareAccess(userId: ID!, modelId: ID!): Boolean!
}
mutation {
removeFolderShareAccess(userId: ID!, folderId: ID!): Boolean!
}
mutation {
addOrUpdateModelShareAccess(userId: ID!, roleId: ID!, modelId: ID!): UserModelShareAccess
}
mutation {
addOrUpdateFolderShareAccess(
email: String,
userId: ID,
invitationMessage: String,
roleId: ID!,
folderId: ID!
): UserFolderShareAccess
}
August 24, 2022
This is a minor revision related to the object detection beta.
API Changes
- Add a parameter to Model.objectAnnotations() to explicitly include user created ObjectAnnotations
query {
objectAnnotations(
includeUserCreated: Boolean
): [ObjectAnnotation!]
}
June 15, 2022
This release exposes the initial schema for object annotations (object detection/insights), data will only be available for folks included in the invite only evaluation.
Also included in this release is the initial implementation of Private Model Embed (PME), the next-gen replacement for Private Model Access (PMA).
API Changes
- [CLOSED BETA] As part of the internal beta of Object Detection the following schema will be made public but data will only be populated for members of the closed beta.
type Model {
inferenceEvents(ids: [ID!]): [InferenceEvent!]
objectClassifications: [ObjectClassification!]
objectAnnotations(
inferenceEvents: [ID!]
ids: [ID!]
includeDisabled: Boolean
minimumConfidenceOverride: Float
): [ObjectAnnotation!]
}
type InferenceEvent {
id: ID!
created: DateTime!
detectionModelName: String!
detectionModelVersion: String!
}
type ObjectClassification {
id: ID!
label: String!
defaultKeywords: [String!]
}
type ObjectAnnotation implements Annotation {
id: ID!
created: DateTime!
modified: DateTime!
model: Model
source: ObjectAnnotationSource!
floor: ModelFloor
room: ModelRoom
enabled: Boolean!
label: String
confidence: Float
panos: [PanoramicImageLocation!]
region: Region
tag: Mattertag
keywords: [String!]
classification: ObjectClassification
}
type Mattertag {
objectAnnotation: ObjectAnnotation
}
May 26, 2022
This release adds ability to get information about user(s) who have uploaded the model.
- For all models created to date this will always be a single user, however this will expand out to allow multiple uploaders as the capture app evolves
query {
model(id: ID!) {
uploaders: [UserMetadata]
}
}
May 4, 2022
This is a minor feature release to expose more information about bundle status.
- Additional information about the status of bundles that are being processed.
- The processing field on bundles is made public, the following attributes will now be available under that for any bundles that have been unlocked:
query {
model(id: ID!) {
bundle(id: "mp:matterpak") {
processing {
bundleId: String!
organizationId: ID!
status: BundleProcessingStatus!
lastModified: DateTime!
failureCode: String
failureReason: String
}
}
}
}
Note that failureCode and failureReason are specific to each bundle type
April 14, 2022
This is a major feature release to expose notes functionality over the public apis as well as clean up doc a bit and refresh the experience.
- Exposed Note Query and Mutations
- Deprecated updateMattertagMedia and enabled updating the external URL via patchMattertag
- API doc experience refreshed and more closely integrated with SDK doc
March 22, 2022
- Exposed a generate assets request which will allow assets for bundles to be generated on demand.
December 16, 2021
- Fixed a type in measurmentPath to be measurementPath under rooms.
July 29, 2021
- Added a 1,000 page limit to the models query, this also fixed an issue where asking for a page size of 10,000 or more results would cause nextOffset to not be populated even when there were additional hits.
May 13, 2021
- Fixed an issue that allowed an API token to access models that the token creator had access to outside of the token’s organization. Note that this includes restricting access to public models outside of the organization the token belongs to.
April 22, 2021
This release adds official support for controlling more options related to the Matterport Showcase and additional information associated with public models.
query {
model(id: ID!) {
options {
addressVisibility
tourButtonsEnabled
tourButtonsOverride
dollhouseEnabled
dollhouseOverride
floorplanEnabled
floorplanOverride
labelsEnabled
labelsOverride
dollhouseLabelsEnabled
dollhouseLabelsOverride
highlightReelEnabled
highlightReelOverride
tourAutoplayEnabled
tourAutoplayOverride
backgroundColor
unitType
measurements
address
}
}
}
mutation {
patchModel(
id: ID!,
patch: {
options: {
backgroundColor: BackgroundColorSettingOverride
tourButtonsOverride: SettingOverride
dollhouseOverride: SettingOverride
floorplanOverride: SettingOverride
labelsOverride: SettingOverride
dollhouseLabelsOverride: SettingOverride
highlightReelOverride: SettingOverride
tourAutoplayOverride: SettingOverride
unitType: UnitSettingOverride
measurements: MeasurementsModeOverride
}
}
)
}
March 29, 2021
- Removed some leaked references to internal API structures
February 11, 2021
This is a maintenance release with updates focused on addressing integration concerns and preparing for expanded add ons in the future.
- Added an estimate of the total dimensions of the space under Model.dimensions
- GSV and homeaway bundles will now show up as locked if they are associated with a compatible model but it is still not possible to unlock them via the API.
December 17, 2020
The focus of this release is continued bug fixing / enhancements to enable workshop / showcase to operate over the new graph API.
- Made all fields which may return an error (such as unauthorized or not found) to be nullable (removed the exclamation mark). This will allow partial data to be returned in a wider variety of cases but may result in changes to generated clients.
- Added a patch photo mutation to allow the label associated with a photo to be updated.
November 5, 2020
Data Model Changes
- Some objects had legacy identifiers which were integer values, switched all objects to use a consistent unique id format.
- The identifiers for the following objects were updated:
- AnchorLocation
- Label
- Mattertag
- Measurement
- PanoramicImageLocation
-
All coordinates that are exposed were updated to use the same coordinate system that is used for the mesh (seen on location objects). This resulted in changing the coordinate system for Measurements and Mattertags. Measurements were in the wrong coordinate system and there was a bug in translating Mattertag coordinates.
- Convert SDK coordinates to Mesh (API)
let api.x = sdk.x
let api.y = invert(sdk.z)
let api.z = sdk.y
- Convert Mesh (API) coordinates to SDK
let sdk.x = api.x
let sdk.y = api.z
let sdk.z = invert(api.y)
- Mutation patchFloor updated to return ModelFloor instead of Model
- The Measurement object has been deprecated in favor of MeasurementPath, while old Measurement queries will still be syntactically valid they will return no data.
- Skybox tile related information has been removed
- Texture type was changed to quality and type is now a string representing the file format
API Changes
- Added MeasurementPath queries and mutations
- Added HighlightReel queries and mutations
- Additional information about placement of photos within a model
- Exposed information about demo models
- Added filtering options to several queries
- Addition of the mp:imagery bundle for purchasing high resolution panoramic images
Bug Fixes and Other Enhancements
- Addition of the mp:imagery bundle for high resolution panoramic images
- Performance improvements
- Addition of a sandbox mode for demonstrating the API
- Dedicated developer settings section
May 28, 2020
Breaking Changes
- ModelFloor zIndex has been removed
- Removed attributes from ModelMutator addMattertag and MattertagMutator patch mutations
- position - Use anchorPosition instead
- stemDirection - Use stemNormal and stemLength instead
API Changes
- Added attributes to ModelFloor (Query)
- meshId: int (read-only) - The vision generated ID for the floor.
- classification: string (read-only) - The capture generated label for the floor. This is initially used to populate the label field, but the label field may be modified by public clients, whereas this will maintain the initial value.
- Added attributes to Mattertag (query & mutation)
- roomId: ID - The room that the Mattertag is in. This is not spatially validated by the API, just checks that the requested room exists.
- Removed attributes from ModelMutator Mattertag mutations