MaintainX
BUSINESS · TASKS
Work orders, work requests, assets, and procedures in the account they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
maintainx_delete_assetcustomstatuses_by_idWRITEDelete asset custom status via DELETE /assetcustomstatuses/{id}
maintainx_delete_assets_by_idWRITEDelete asset via DELETE /assets/{id}
maintainx_delete_assets_by_id_attachments_by_filenameWRITERemove asset attachment via DELETE /assets/{id}/attachments/{filename}
maintainx_delete_assets_external_by_externalidWRITEDelete asset by external ID via DELETE /assets/external/{externalId}
maintainx_delete_categories_by_idWRITEDelete category via DELETE /categories/{id}
maintainx_delete_customfields_by_entity_by_idWRITEDelete custom field via DELETE /customfields/{entity}/{id}
maintainx_delete_locations_by_idWRITEDelete location via DELETE /locations/{id}
maintainx_delete_locations_by_id_attachments_by_filenameWRITERemove location attachment via DELETE /locations/{id}/attachments/{filename}
maintainx_delete_locations_external_by_externalidWRITEDelete location by external ID via DELETE /locations/external/{externalId}
maintainx_delete_maintenanceplans_by_idWRITEDelete maintenance plan via DELETE /maintenanceplans/{id}
maintainx_delete_meters_by_idWRITEDelete meter via DELETE /meters/{id}
maintainx_delete_metertriggers_by_idWRITEDelete meterTrigger via DELETE /metertriggers/{id}
maintainx_delete_metertriggers_by_id_workordertemplates_attachments_by_filenameWRITERemove meter trigger's work order template attachment via DELETE /metertriggers/{id}/workordertemplates/attachments/{filename}
maintainx_delete_parts_by_idWRITEDelete part via DELETE /parts/{id}
maintainx_delete_parts_by_id_attachments_by_filenameWRITERemove part attachment via DELETE /parts/{id}/attachments/{filename}
maintainx_delete_parts_external_by_externalidWRITEDelete part by external ID via DELETE /parts/external/{externalId}
maintainx_delete_proceduretemplaterows_by_idWRITEDelete procedure Template Row via DELETE /proceduretemplaterows/{id}
maintainx_delete_proceduretemplaterows_by_id_attachmentsWRITERemove procedure template row attachment via DELETE /proceduretemplaterows/{id}/attachments
maintainx_delete_proceduretemplates_by_idWRITEDelete procedure Template via DELETE /proceduretemplates/{id}
maintainx_delete_purchaseorders_by_idWRITEDelete purchaseOrder via DELETE /purchaseorders/{id}
maintainx_delete_purchaseorders_by_id_attachments_by_filenameWRITERemove purchase order attachment via DELETE /purchaseorders/{id}/attachments/{filename}
maintainx_delete_subscriptions_by_idWRITERemove subscription via DELETE /subscriptions/{id}
maintainx_delete_teams_by_idWRITEDelete team via DELETE /teams/{id}
maintainx_delete_teams_by_teamid_members_by_useridWRITERemove user from team via DELETE /teams/{teamId}/members/{userId}
maintainx_delete_users_by_idWRITERemove user from organization via DELETE /users/{id}
maintainx_delete_vendors_by_idWRITEDelete vendor via DELETE /vendors/{id}
maintainx_delete_vendors_by_id_attachments_by_filenameWRITERemove vendor attachment via DELETE /vendors/{id}/attachments/{filename}
maintainx_delete_vendors_by_id_contacts_by_contactidWRITEDelete contact via DELETE /vendors/{id}/contacts/{contactId}
maintainx_delete_workorders_by_idWRITEDelete workOrder via DELETE /workorders/{id}
maintainx_delete_workorders_by_id_attachments_by_filenameWRITERemove work order attachment via DELETE /workorders/{id}/attachments/{filename}
maintainx_delete_workorders_by_id_procedureWRITEDetach procedure from work order via DELETE /workorders/{id}/procedure
maintainx_delete_workorders_by_id_procedure_fields_by_index_attachmentWRITEDelete procedure field attachment via DELETE /workorders/{id}/procedure/fields/{index}/attachment
maintainx_delete_workorders_external_by_externalidWRITEDelete work order by external ID via DELETE /workorders/external/{externalId}
maintainx_delete_workrequestportals_by_idWRITEDelete work request portal via DELETE /workrequestportals/{id}
maintainx_delete_workrequests_by_idWRITEDelete workRequest via DELETE /workrequests/{id}
maintainx_delete_workrequests_by_id_attachments_by_filenameWRITERemove work request attachment via DELETE /workrequests/{id}/attachments/{filename}
maintainx_get_assetcriticalitiesREADEndpoint used to list asset criticality resources via GET /assetcriticalities
maintainx_get_assetcriticalities_by_idREADGet asset criticality via GET /assetcriticalities/{id}
maintainx_get_assetcustomstatusesREADEndpoint used to list asset custom status resources via GET /assetcustomstatuses
maintainx_get_assetcustomstatuses_by_idREADGet asset custom status via GET /assetcustomstatuses/{id}
maintainx_get_assetsREADEndpoint used to list asset resources via GET /assets
maintainx_get_assets_by_idREADGet asset via GET /assets/{id}
maintainx_get_assets_external_by_externalidREADGet asset by external ID via GET /assets/external/{externalId}
maintainx_get_assetstatusesREADEndpoint used to list assetStatuses resources via GET /assetstatuses
maintainx_get_categoriesREADEndpoint used to list category resources via GET /categories
maintainx_get_categories_by_idREADGet category via GET /categories/{id}
maintainx_get_conversationsREADEndpoint used to list conversation resources via GET /conversations
maintainx_get_conversations_by_id_membersREADList conversation members via GET /conversations/{id}/members
maintainx_get_customfields_by_entityREADList custom fields via GET /customfields/{entity}
maintainx_get_locationsREADEndpoint used to list location resources via GET /locations
maintainx_get_locations_by_idREADGet location via GET /locations/{id}
maintainx_get_locations_external_by_externalidREADGet location by external ID via GET /locations/external/{externalId}
maintainx_get_maintenanceplansREADEndpoint used to list maintenance plan resources via GET /maintenanceplans
maintainx_get_maintenanceplans_by_idREADGet maintenance plan via GET /maintenanceplans/{id}
maintainx_get_manufacturersREADEndpoint used to list manufacturer resources via GET /manufacturers
maintainx_get_manufacturers_by_idREADGet manufacturer via GET /manufacturers/{id}
maintainx_get_metersREADEndpoint used to list meter resources via GET /meters
maintainx_get_meters_by_idREADGet meter via GET /meters/{id}
maintainx_get_metertriggersREADEndpoint used to list meter trigger resources via GET /metertriggers
maintainx_get_metertriggers_by_idREADGet meter trigger via GET /metertriggers/{id}
maintainx_get_modelsREADEndpoint used to list model resources via GET /models
maintainx_get_models_by_idREADGet model via GET /models/{id}
maintainx_get_organizationsREADEndpoint used to list organization resources via GET /organizations
maintainx_get_partsREADEndpoint used to list part resources via GET /parts
maintainx_get_parts_by_idREADGet part via GET /parts/{id}
maintainx_get_parts_external_by_externalidREADGet part by external ID via GET /parts/external/{externalId}
maintainx_get_parttransferrequestsREADEndpoint used to list part transfer request resources via GET /parttransferrequests
maintainx_get_parttransferrequests_by_idREADGet part transfer request via GET /parttransferrequests/{id}
maintainx_get_proceduretemplatesREADEndpoint used to list procedure template resources via GET /proceduretemplates
maintainx_get_proceduretemplates_by_idREADGet procedure template via GET /proceduretemplates/{id}
maintainx_get_purchaseordersREADEndpoint used to list purchase order resources via GET /purchaseorders
maintainx_get_purchaseorders_by_idREADGet purchase order via GET /purchaseorders/{id}
maintainx_get_rootcauseanalysisreportsREADEndpoint used to list root cause analysis report resources via GET /rootcauseanalysisreports
maintainx_get_rootcauseanalysisreports_by_idREADGet root cause analysis report via GET /rootcauseanalysisreports/{id}
maintainx_get_subscriptions_by_idREADGet subscription via GET /subscriptions/{id}
maintainx_get_subscriptions_by_id_secretREADGet secret information via GET /subscriptions/{id}/secret
maintainx_get_teamsREADEndpoint used to list team resources via GET /teams
maintainx_get_teams_by_idREADGet team via GET /teams/{id}
maintainx_get_teams_by_id_membersREADList team members via GET /teams/{id}/members
maintainx_get_usersREADEndpoint used to list user resources via GET /users
maintainx_get_users_by_idREADGet user via GET /users/{id}
maintainx_get_vendorsREADEndpoint used to list vendor resources via GET /vendors
maintainx_get_vendors_by_idREADGet vendor via GET /vendors/{id}
maintainx_get_vendors_by_id_contactsREADList contacts via GET /vendors/{id}/contacts
maintainx_get_vendors_by_id_contacts_by_contactidREADGet contact via GET /vendors/{id}/contacts/{contactId}
maintainx_get_versionsREADGet list of available API versions via GET /versions
maintainx_get_workordersREADEndpoint used to list work order resources via GET /workorders
maintainx_get_workorders_by_idREADGet work order via GET /workorders/{id}
maintainx_get_workorders_by_id_commentsREADList work order comments via GET /workorders/{id}/comments
maintainx_get_workorders_by_id_costsREADGet costs information via GET /workorders/{id}/costs
maintainx_get_workorders_by_id_subworkordersREADList sub work orders via GET /workorders/{id}/subworkorders
maintainx_get_workorders_external_by_externalidREADGet work order by external ID via GET /workorders/external/{externalId}
maintainx_get_workrequestportalsREADEndpoint used to list work request portal resources via GET /workrequestportals
maintainx_get_workrequestportals_by_idREADGet work request portal via GET /workrequestportals/{id}
maintainx_get_workrequestsREADEndpoint used to list work request resources via GET /workrequests
maintainx_get_workrequests_by_idREADGet work request via GET /workrequests/{id}
maintainx_patch_assetcustomstatuses_by_idWRITEUpdate asset custom status via PATCH /assetcustomstatuses/{id}
maintainx_patch_assets_by_idWRITEUpdate asset via PATCH /assets/{id}
maintainx_patch_assets_external_by_externalidWRITEIdempotent upsert keyed on the external ID in the path. If an asset has this external ID, it will be updated (and undeleted, if the asset was previously deleted). Otherwise, a new asset will be created with this external ID. via PATCH /assets/external/{externalId}
maintainx_patch_assetstatuses_by_idWRITEUpdate asset status via PATCH /assetstatuses/{id}
maintainx_patch_categories_by_idWRITEUpdate category via PATCH /categories/{id}
maintainx_patch_customfields_by_entity_by_idWRITEEdit custom field via PATCH /customfields/{entity}/{id}
maintainx_patch_locations_by_idWRITEUpdate location via PATCH /locations/{id}
maintainx_patch_locations_external_by_externalidWRITEIdempotent upsert keyed on the external ID in the path. If a location has this external ID, it will be updated (and undeleted, if the location was previously deleted). Otherwise, a new location will be created with this external ID. via PATCH /locations/external/{externalId}
maintainx_patch_maintenanceplans_by_idWRITEUpdate a maintenance plan via PATCH /maintenanceplans/{id}
maintainx_patch_meters_by_idWRITEUpdate meter via PATCH /meters/{id}
maintainx_patch_metertriggers_by_idWRITEUpdate meter trigger via PATCH /metertriggers/{id}
maintainx_patch_metertriggers_by_id_workordertemplatesWRITEUpdate Meter Trigger's Work Order Template via PATCH /metertriggers/{id}/workordertemplates
maintainx_patch_parts_by_idWRITEUpdate part via PATCH /parts/{id}
maintainx_patch_parts_external_by_externalidWRITEIdempotent upsert keyed on the external ID in the path. If a part has this external ID, it will be updated (and undeleted, if the part was previously deleted). Otherwise, a new part will be created with this external ID. via PATCH /parts/external/{externalId}
maintainx_patch_parttransferrequests_by_idWRITEUpdate part transfer request via PATCH /parttransferrequests/{id}
maintainx_patch_proceduretemplaterows_by_idWRITEUpdate Procedure Template Row via PATCH /proceduretemplaterows/{id}
maintainx_patch_proceduretemplates_by_idWRITEUpdate Procedure Template via PATCH /proceduretemplates/{id}
maintainx_patch_purchaseorders_by_idWRITEUpdate purchase order via PATCH /purchaseorders/{id}
maintainx_patch_purchaseorders_by_id_fulfillmentWRITEFulfill purchase order via PATCH /purchaseorders/{id}/fulfillment
maintainx_patch_purchaseorders_by_id_statusWRITEUpdate purchase order status via PATCH /purchaseorders/{id}/status
maintainx_patch_subscriptions_by_idWRITEUpdate subscription via PATCH /subscriptions/{id}
maintainx_patch_teams_by_idWRITEUpdate team via PATCH /teams/{id}
maintainx_patch_teams_by_teamid_members_by_useridWRITEUpdate team member via PATCH /teams/{teamId}/members/{userId}
maintainx_patch_users_by_idWRITEUpdate user via PATCH /users/{id}
maintainx_patch_vendors_by_idWRITEUpdate vendor via PATCH /vendors/{id}
maintainx_patch_vendors_by_id_contacts_by_contactidWRITEUpdate contact via PATCH /vendors/{id}/contacts/{contactId}
maintainx_patch_workorders_by_idWRITEUpdate work order via PATCH /workorders/{id}
maintainx_patch_workorders_by_id_partstatusWRITEUpdate work order part status via PATCH /workorders/{id}/partStatus
maintainx_patch_workorders_by_id_statusWRITEUpdate work order status via PATCH /workorders/{id}/status
maintainx_patch_workorders_external_by_externalidWRITEIdempotent upsert keyed on the external ID in the path. If a work order has this external ID, it will be updated (and undeleted, if the work order was previously deleted). Otherwise, a new work order will be created with this external ID. via PATCH /workorders/external/{externalId}
maintainx_patch_workrequestportals_by_idWRITEUpdate work request portal via PATCH /workrequestportals/{id}
maintainx_patch_workrequests_by_idWRITEUpdate work request via PATCH /workrequests/{id}
maintainx_post_assetcustomstatusesWRITECreate new asset custom status type via POST /assetcustomstatuses
maintainx_post_assetsWRITECreate new asset via POST /assets
maintainx_post_assets_by_assetid_statusWRITECreate a new asset status via POST /assets/{assetId}/status
maintainx_post_categoriesWRITECreate new category via POST /categories
maintainx_post_conversations_by_id_messagesWRITECreate new message in a conversation via POST /conversations/{id}/messages
maintainx_post_customfields_by_entityWRITECreate custom field via POST /customfields/{entity}
maintainx_post_locationsWRITECreate new location via POST /locations
maintainx_post_maintenanceplansWRITECreate a maintenance plan via POST /maintenanceplans
maintainx_post_maintenanceplans_workorderblueprintsWRITECreate a maintenance plan work order blueprint via POST /maintenanceplans/workorderblueprints
maintainx_post_manufacturersWRITECreate new manufacturer via POST /manufacturers
maintainx_post_meterreadingsWRITEWe strongly recommend using this endpoint to create meter readings since it is more efficient. <h3>Rate Limits</h3> <li>For Automated and IoT meter readings: 100 requests / 60 seconds</li> <li>For Manual meter readings: 10 requests / 24 hours</li> via POST /meterreadings
maintainx_post_metersWRITEEndpoint used to create a new meter. Pay attention to the `measurementType` field as it has a significant impact on the behavior of your meter. via POST /meters
maintainx_post_meters_by_meterid_readingsWRITEWe strongly recommend using the batch create endpoint [POST /meterreadings](#tag/Meter-Readings/paths/~1meterreadings/post) to create meter readings since it is more efficient and allows you to send more readings at once without consuming as much rate limit as this endpoint. <h3>Rate Limits</h3> <li>For Automated and IoT meter readings: 1 request / 10 seconds</li> <li>For Manual meter readings: 10 requests / 24 hours</li> via POST /meters/{meterId}/readings
maintainx_post_metertriggersWRITECreate meter trigger via POST /metertriggers
maintainx_post_modelsWRITECreate new model via POST /models
maintainx_post_partsWRITECreate new part via POST /parts
maintainx_post_parttransferrequestsWRITECreate a part transfer request via POST /parttransferrequests
maintainx_post_proceduretemplatesWRITECreate procedure template via POST /proceduretemplates
maintainx_post_purchaseordersWRITECreate new purchase order via POST /purchaseorders
maintainx_post_purchaseorders_by_id_commentsWRITECreate new comment on a purchase order via POST /purchaseorders/{id}/comments
maintainx_post_purchaseorders_by_id_emailsWRITESend Purchase Order as an email via POST /purchaseorders/{id}/emails
maintainx_post_subscriptionsWRITECreate new subscription via POST /subscriptions
maintainx_post_teamsWRITECreate new team via POST /teams
maintainx_post_teams_by_id_membersWRITEAdd user to team via POST /teams/{id}/members
maintainx_post_usersWRITECreate new user via POST /users
maintainx_post_users_by_id_messagesWRITECreate new direct message to a user via POST /users/{id}/messages
maintainx_post_vendorsWRITECreate new vendor via POST /vendors
maintainx_post_vendors_by_id_contactsWRITECreate new contact via POST /vendors/{id}/contacts
maintainx_post_work_shiftsWRITESet per-day work shift capacity for one or more users. Re-sending a (user, date) pair overwrites the previous override. A maximum of 250 work shifts can be set per request. via POST /work-shifts
maintainx_post_workordersWRITECreate new work order via POST /workorders
maintainx_post_workorders_by_id_commentsWRITECreate new comment on a work order via POST /workorders/{id}/comments
maintainx_post_workorders_by_id_costsWRITECreate new cost on a work order via POST /workorders/{id}/costs
maintainx_post_workorders_by_id_emailsWRITESend work order as an email via POST /workorders/{id}/emails
maintainx_post_workpermits_by_id_signWRITESign a work permit via POST /workPermits/{id}/sign
maintainx_post_workrequestportalsWRITECreate new work request portal via POST /workrequestportals
maintainx_post_workrequestsWRITECreate work request via POST /workrequests
Often connected alongside
Put MaintainX behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.