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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/facilio:facilio-picklists-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: 3.2.0
info:
title: Facilio REST Picklists 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: Picklists
description: 'Retrieve picklist values for enum and system lookup fields.
Use these to discover valid values for fields like status, priority, category, and type.
Custom picklist fields can also be queried using `GET /picklist/{module}/{fieldName}`.'
paths:
/picklist/workpermit/workPermitType:
get:
tags:
- Picklists
summary: Work permit types
description: Returns the available work permit types. Pass a `type` value or `id` to the `workPermitType` field when creating a permit.
operationId: getWorkPermitTypes
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of permit types
content:
application/json:
example:
success: true
data:
- id: 1
type: Hot Work
description: Welding, cutting, grinding
linkName: hot_work
- id: 2
type: Confined Space
description: Entry into tanks, vessels, pits
linkName: confined_space
- id: 3
type: Working at Height
description: Work above 2m
linkName: working_at_height
schema:
$ref: '#/components/schemas/WorkPermitType'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/workorder/status:
get:
tags:
- Picklists
summary: Work order statuses
description: Returns all available status values for work orders.
operationId: getWorkOrderStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 9
status: Submitted
displayName: Submitted
- id: 10
status: Assigned
displayName: Assigned
- id: 11
status: Work in Progress
displayName: Work in Progress
- id: 12
status: Resolved
displayName: Resolved
- id: 13
status: Closed
displayName: Closed
schema:
$ref: '#/components/schemas/WorkOrderStatus'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/workorder/priority:
get:
tags:
- Picklists
summary: Work order priorities
description: Returns all available priority values for work orders.
operationId: getWorkOrderPriorities
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of priority values
content:
application/json:
example:
success: true
data:
- id: 1
priority: High
displayName: High
- id: 2
priority: Medium
displayName: Medium
- id: 3
priority: Low
displayName: Low
schema:
$ref: '#/components/schemas/Priority'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/workorder/category:
get:
tags:
- Picklists
summary: Work order categories
description: Returns all available category values for work orders.
operationId: getWorkOrderCategories
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of category values
content:
application/json:
example:
success: true
data:
- id: 6
name: Energy
displayName: Energy
- id: 7
name: HVAC
displayName: HVAC
- id: 8
name: Plumbing
displayName: Plumbing
schema:
$ref: '#/components/schemas/WorkOrderCategory'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/workorder/type:
get:
tags:
- Picklists
summary: Work order types
description: Returns all available type values for work orders.
operationId: getWorkOrderTypes
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of type values
content:
application/json:
example:
success: true
data:
- id: 5
name: Compliance
displayName: Compliance
- id: 6
name: Corrective
displayName: Corrective
- id: 7
name: Preventive
displayName: Preventive
schema:
$ref: '#/components/schemas/WorkOrderType'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/servicerequest/moduleState:
get:
tags:
- Picklists
summary: Service request statuses
description: Returns all available status values for service requests.
operationId: getServiceRequestStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRequestStatus'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/servicerequest/urgency:
get:
tags:
- Picklists
summary: Service request urgency levels
description: Returns all available urgency levels for service requests (equivalent to priority).
operationId: getServiceRequestUrgencyLevels
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of urgency values
content:
application/json:
schema:
$ref: '#/components/schemas/Priority'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/asset/category:
get:
tags:
- Picklists
summary: Asset categories
description: Returns all available category values for assets.
operationId: getAssetCategories
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of category values
content:
application/json:
schema:
$ref: '#/components/schemas/AssetCategory'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/asset/type:
get:
tags:
- Picklists
summary: Asset types
description: Returns all available type values for assets.
operationId: getAssetTypes
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of type values
content:
application/json:
schema:
$ref: '#/components/schemas/AssetType'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/asset/department:
get:
tags:
- Picklists
summary: Asset departments
description: Returns all available department values for assets.
operationId: getAssetDepartments
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of department values
content:
application/json:
schema:
$ref: '#/components/schemas/AssetDepartment'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/space/spaceCategory:
get:
tags:
- Picklists
summary: Space categories
description: Returns all available category values for spaces.
operationId: getSpaceCategories
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of category values
content:
application/json:
schema:
$ref: '#/components/schemas/SpaceCategory'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/quote/moduleState:
get:
tags:
- Picklists
summary: Quote statuses
description: Returns all available status values for quotes.
operationId: getQuoteStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
status: Draft
displayName: Draft
- id: 2
status: Sent
displayName: Sent
- id: 3
status: Approved
displayName: Approved
- id: 4
status: Rejected
displayName: Rejected
- id: 5
status: Revised
displayName: Revised
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/invoice/invoiceStatus:
get:
tags:
- Picklists
summary: Invoice statuses
description: Returns all available status values for invoices.
operationId: getInvoiceStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
displayName: Draft
- id: 2
displayName: Invoice Delivered
- id: 3
displayName: Invoice Rejected
- id: 4
displayName: Invoice Approved
- id: 5
displayName: Invoice Cancelled
- id: 6
displayName: Payment Acknowledged
- id: 7
displayName: Revised
schema:
$ref: '#/components/schemas/EnumPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/purchaserequest/moduleState:
get:
tags:
- Picklists
summary: Purchase request statuses
description: Returns all available status values for purchase requests.
operationId: getPurchaseRequestStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
status: Requested
displayName: Requested
- id: 2
status: Approved
displayName: Approved
- id: 3
status: Ordered
displayName: Ordered
- id: 4
status: Rejected
displayName: Rejected
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/purchaseorder/moduleState:
get:
tags:
- Picklists
summary: Purchase order statuses
description: Returns all available status values for purchase orders.
operationId: getPurchaseOrderStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
status: Requested
displayName: Requested
- id: 2
status: Approved
displayName: Approved
- id: 3
status: Received
displayName: Received
- id: 4
status: Rejected
displayName: Rejected
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/inventoryrequest/moduleState:
get:
tags:
- Picklists
summary: Inventory request statuses
description: Returns all available status values for inventory requests.
operationId: getInventoryRequestStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
status: pending
displayName: Pending
- id: 2
status: fullyreserved
displayName: Fully Reserved
- id: 3
status: partiallyreserved
displayName: Partially Reserved
- id: 4
status: issued
displayName: Issued
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/vendorCredit/vendorCreditNoteStatus:
get:
tags:
- Picklists
summary: Vendor credit statuses
description: Returns all available status values for vendor credits.
operationId: getVendorCreditStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
value: Awaiting Refund
displayName: Awaiting Refund
- id: 2
value: Refunded
displayName: Refunded
- id: 3
value: Credit Note Revised
displayName: Credit Note Revised
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/clientCredit/clientCreditNoteStatus:
get:
tags:
- Picklists
summary: Client credit statuses
description: Returns all available status values for client credits.
operationId: getClientCreditStatuses
parameters:
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of status values
content:
application/json:
example:
success: true
data:
- id: 1
value: Awaiting Refund
displayName: Awaiting Refund
- id: 2
value: Refunded
displayName: Refunded
- id: 3
value: Credit Note Revised
displayName: Credit Note Revised
schema:
$ref: '#/components/schemas/CustomPicklistValues'
'401':
$ref: '#/components/responses/Unauthorized'
/picklist/{moduleName}/{fieldName}:
get:
tags:
- Picklists
summary: Get picklist values for a custom field
description: 'Returns picklist values for custom enum or system picklist fields.
Only enum-type and system picklist lookup fields are supported.
For regular lookup fields (site, building, asset), use the module''s list API instead.'
operationId: getCustomPicklistValues
parameters:
- name: moduleName
in: path
required: true
description: Module name (e.g. `workorder`, `asset`)
schema:
type: string
- name: fieldName
in: path
required: true
description: Field name (e.g. `urgency`, `warranty_type_asset`)
schema:
type: string
- $ref: '#/components/parameters/picklistSearch'
responses:
'200':
description: List of picklist values
content:
application/json:
schema:
$ref: '#/components/schemas/CustomPicklistValues'
example:
success: true
data:
- id: 1
displayName: Option A
- id: 2
displayName: Option B
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
AssetDepartment:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Department name
AssetType:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Type name
displayName:
type: string
WorkPermitType:
type: object
description: Picklist response for work permit types (`GET /picklist/workpermit/workPermitType`).
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
type:
type: string
description: Permit type name (e.g. Hot Work, Confined Space)
description:
type: string
linkName:
type: string
WorkOrderType:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Type name
displayName:
type: string
ServiceRequestStatus:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
status:
type: string
description: Status value
displayName:
type: string
Priority:
type: object
description: Used for work order priority and service request urgency
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
priority:
type: string
description: Priority value (e.g. High, Medium, Low)
displayName:
type: string
colour:
type: string
description: 'Hex color code (e.g. #f00)'
sequenceNumber:
type: integer
description: Sort order
CustomPicklistValues:
type: object
description: moduleState picklist values — returns {id, status, displayName} for each state
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
status:
type: string
description: Status value
displayName:
type: string
AssetCategory:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Category name (e.g. HVAC, Electrical)
displayName:
type: string
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
WorkOrderStatus:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
status:
type: string
description: Status value (e.g. Submitted, Closed)
displayName:
type: string
SpaceCategory:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Category name (e.g. Office, Conference Room)
displayName:
type: string
WorkOrderCategory:
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
description: Category name
displayName:
type: string
EnumPicklistValues:
type: object
description: Enum picklist values — returns {id, displayName} for each value
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
type: integer
displayName:
type: string
parameters:
picklistSearch:
name: search
in: query
description: Filter picklist values by name
schema:
type: string
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)