Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/facilio:facilio-common-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Facilio REST Common API
version: 5.0.0
description: 'The Facilio REST API gives you programmatic access to Facilio''s Connected CMMS — the unified platform for managing property operations at portfolio scale. Build integrations that connect Facilio with your ERP, accounting systems, BMS, IoT platforms, and other business tools. Automate work order creation from external triggers, synchronize asset data across systems, push tenant and vendor records from your CRM, or pull maintenance data into your reporting dashboards. **What you can do with this API:**
- **Work Orders & Service Requests** — Create, assign, track, and close maintenance tasks programmatically
- **Assets** — Manage your equipment registry, track asset lifecycle, and sync with external asset management systems
- **Portfolio (Sites, Buildings, Floors, Spaces)** — Maintain your facility hierarchy and space data
- **People (Tenants, Vendors, Clients)** — Synchronize contacts and stakeholder records
- **Inventory (Item Types, Tool Types, Items & Tools, Services, Storerooms)** — Master data, per-storeroom item/tool balances (read), per-bin quantities by item or tool record, quantity adjustments, and warehouse locations
- **Procurement (Quotes, Purchase Requests, Purchase Orders, Receivable receiving, Invoices)** — Procurement with line items; receive against a PO via receivable APIs
- **Credit Notes (Vendor Credits, Client Credits)** — Manage credit notes for refunds and transaction adjustments with line items
- **Inventory Requests** — Track material requisitions from work orders to storerooms
- **Custom Modules** — Manage your organization''s custom modules — record types you define for the data and workflows that are specific to your business
- **Schema Discovery** — List all accessible modules and inspect field schemas (name, type, required, readOnly, lookup target) via `GET /modules` and `GET /{moduleName}/metadata`
- **Attachments & Comments** — Attach documents, photos, and notes to work orders and service requests
- **Picklists** — Discover available values for status, priority, category, and other configurable fields
The API follows REST conventions with JSON request/response bodies, standard HTTP methods (GET, POST, PATCH, DELETE), and consistent error handling across all endpoints. ## Base URL
```
https://{region}.facilioapis.com/{app_name}/api/v5
```
| Variable | Description | Values |
|----------|-------------|--------|
| `region` | Your deployment region | `us`, `au`, `ae`, `uk`, `us-azure`, `sa` |
| `app_name` | `maintenance` for API Key auth, `developer` for OAuth2 auth | `maintenance`, `developer` |
## Authentication
All API requests must be authenticated using one of the following methods:
### API Key (Personal Access Token)
Generate an API key from your Facilio account settings and pass it in the `x-api-key` header. The key inherits the permissions of the user who created it. ```
x-api-key: your-api-key-here
```
### OAuth2
For developer app integrations. Supports **authorization_code** and **password** grant types. | Endpoint | URL |
|----------|-----|
| Authorize | `https://{region}.facilioapis.com/identity/oauth2/authorize` |
| Token | `https://{region}.facilioapis.com/identity/oauth2/token` |
| Refresh | `https://{region}.facilioapis.com/identity/oauth2/token` (with `grant_type=refresh_token`) |
| Revoke | `https://{region}.facilioapis.com/identity/oauth2/revoke` |
Pass the access token as:
```
Authorization: Bearer oauth2
```
---
## List Operations
All list endpoints (`GET /{module}`) support these query parameters:
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `page` | integer | 1 | Page number (1-based) |
| `pageSize` | integer | 50 | Number of records per page. Maximum is 200. |
| `select` | string | — | Comma-separated field names to include in the response. If omitted, module default fields are returned. |
| `expand` | string | — | Comma-separated lookup field names to expand with full details (max 5).'
contact:
name: Facilio Support
url: https://facilio.com
license:
name: Proprietary
servers:
- url: https://{region}.facilioapis.com/{app_name}/api/v5
variables:
region:
description: Regional deployment
default: us
enum:
- us
- au
- ae
- uk
- us-azure
- sa
app_name:
description: '''maintenance'' for API Key, ''developer'' for OAuth2'
default: maintenance
enum:
- maintenance
- developer
security:
- apiKey: []
- oauth2: []
tags:
- name: Common
description: User profile and utility endpoints
paths:
/profile:
get:
tags:
- Common
summary: Get current user profile
description: Returns the authenticated user's profile information including name, email, timezone, role, and organization details.
operationId: getProfile
responses:
'200':
description: User profile retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Profile'
example:
success: true
data:
user:
id: 1
name: Alex Johnson
email: alex.johnson@example.com
timezone: Asia/Kolkata
role:
id: 10
name: Administrator
org:
id: 100
name: Facilio Inc
domain: facilio
'401':
$ref: '#/components/responses/Unauthorized'
/modules:
get:
tags:
- Common
summary: List all accessible modules
description: 'Returns a catalogue of every module accessible via the V5 API for the current org:
- **System modules** — standard Facilio modules available in every org (workorder, asset, site, etc.)
- **Custom modules** — modules created by your organization via Facilio Setup
Use this endpoint to discover which module names are valid for other V5 API calls, and to determine whether a given module is a system module or an org-created custom module.
Pass `?custom=true` to scope the response to only custom modules created by your organization. The default response returns both system and custom modules.
Each entry includes a `description` field when one is configured for the module.'
operationId: listModules
parameters:
- name: custom
in: query
description: 'When `true`, return only org-created custom modules (modules where `isCustom = true`).
Default `false` (or absent) returns the full system + custom catalogue — this preserves the previous default behavior.
'
schema:
type: boolean
default: false
responses:
'200':
description: Module catalogue retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/FacilioModule'
example:
success: true
data:
- name: workorder
displayName: Work Orders
description: Standard work order tracking
isCustom: false
- name: asset
displayName: Assets
description: Equipment and asset records
isCustom: false
- name: custom_employees
displayName: Employees
description: Custom employee records
isCustom: true
- name: custom_projects
displayName: Projects
isCustom: true
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
Profile:
type: object
properties:
user:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
timezone:
type: string
role:
type: object
properties:
id:
type: integer
name:
type: string
org:
type: object
properties:
id:
type: integer
name:
type: string
domain:
type: string
FacilioModule:
type: object
description: A single entry in the module catalogue returned by GET /modules.
properties:
name:
type: string
description: Module name used in all API paths (e.g. `workorder`, `custom_employees`)
displayName:
type: string
description: Human-readable module label (e.g. `Work Orders`, `Employees`)
description:
type: string
description: Module description as configured in Facilio Setup. Omitted when blank.
isCustom:
type: boolean
description: '`true` for modules created by your organization; `false` for standard Facilio modules'
Error:
type: object
description: Error response
properties:
success:
type: boolean
example: false
error:
type: object
properties:
code:
type: string
description: Machine-readable error code
message:
type: string
description: Human-readable error message
responses:
Unauthorized:
description: Missing or invalid authentication credentials
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
success: false
error:
code: UNAUTHORIZED
message: Missing or invalid authentication credentials
securitySchemes:
apiKey:
type: apiKey
in: header
name: x-api-key
description: Personal access token
oauth2:
type: oauth2
description: Supports authorization_code and password grant types
flows:
authorizationCode:
authorizationUrl: https://us.facilioapis.com/identity/oauth2/authorize
tokenUrl: https://us.facilioapis.com/identity/oauth2/token
refreshUrl: https://us.facilioapis.com/identity/oauth2/token
scopes: {}
password:
tokenUrl: https://us.facilioapis.com/identity/oauth2/token
refreshUrl: https://us.facilioapis.com/identity/oauth2/token
scopes: {}
x-provenance:
method: harvested
publisher: Facilio
source: https://static.facilio.com/developers/api/v5/openapi.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)