Skip to content

API endpoint reference ​

Every API-key-callable endpoint in the OpsMerge API, grouped by feature area. (Inbound vendor webhooks, browser-only redirects, and the login/signup/password flows your app authenticates through are excluded — they exist, but a bearer API key isn't the caller.) For authentication, API keys, scopes, rate limits, and request/response conventions, start with the API guide. For full request/response schemas and an in-browser test client, use the interactive docs.

Paths below are relative to the base URL https://app.opsmerge.cloud/api/v1. Stable and beta endpoints — the public API — authenticate with a bearer API key (see creating a key):

bash
curl -H "Authorization: Bearer om_your_api_key_here" \
  https://app.opsmerge.cloud/api/v1/auth/me

Each endpoint carries a stability tier: stable endpoints are the public API proper (6 months' notice before breaking changes), beta endpoints are recent and may still change, and internal endpoints exist for the web UI — documented for transparency, but with zero compatibility guarantees. Build integrations on stable endpoints.

Internal endpoints don't necessarily take API keys: most use the web UI's session token, and some (login, signup, password reset, client-portal and public quote links) have their own authentication or none at all. The interactive docs show each endpoint's exact security scheme.

Auth ​

Authentication and session management

Full schemas and try-it →

EndpointTierWhat it does
GET /auth/device-sessionsbetaList my device sessions
POST /auth/device-sessionsbetaRegister a device session
POST /auth/device-sessions/exchangebetaExchange a device refresh token for a bearer token
DELETE /auth/device-sessions/{id}betaRevoke a device session
POST /auth/device-sessions/{id}/push-tokenbetaRegister a mobile push token
DELETE /auth/device-sessions/{id}/push-tokenbetaUnregister a mobile push token
GET /auth/notification-preferencesbetaGet my notification preferences (in-app and push)
PUT /auth/notification-preferencesbetaUpdate my notification preferences (in-app and push)
GET /auth/push-preferencesbetaGet my mobile push preferences
PUT /auth/push-preferencesbetaUpdate my mobile push preferences
POST /push/testbetaSend a test push notification to my devices

MFA ​

Multi-factor authentication (TOTP)

Full schemas and try-it →

EndpointTierWhat it does
POST /mfa/disableinternalDisable MFA for the current user
POST /mfa/setupinternalBegin TOTP MFA setup
GET /mfa/statusinternalGet MFA status for the current user
POST /mfa/verify-setupinternalVerify a TOTP code to complete MFA setup

SSO ​

OpenID Connect Single Sign-On

Full schemas and try-it →

EndpointTierWhat it does
GET /sso/providersinternalList SSO providers (admin)
POST /sso/providersinternalCreate an SSO provider
PUT /sso/providers/{id}internalUpdate an SSO provider
DELETE /sso/providers/{id}internalDelete an SSO provider

Users ​

User account management

Full schemas and try-it →

EndpointTierWhat it does
GET /usersstableList users in the current tenant
POST /usersstableCreate a new user
GET /users/{id}stableGet a user by ID
PUT /users/{id}stableUpdate a user
DELETE /users/{id}stableSoft-delete a user
POST /users/{id}/passwordstableChange a user's password

Roles ​

Role and permission management

Full schemas and try-it →

EndpointTierWhat it does
GET /permissionsstableList all available permission keys
GET /rolesstableList roles
POST /rolesstableCreate a role
GET /roles/{id}stableGet a role by ID
PUT /roles/{id}stableUpdate a role
DELETE /roles/{id}stableDelete a role

Organizations ​

Multi-tenant organization management (superuser only)

Full schemas and try-it →

EndpointTierWhat it does
GET /organizationsinternalList all organizations (platform admin)
POST /organizationsinternalCreate an organization (platform admin)
GET /organizations/{id}internalGet an organization by ID (platform admin)
PUT /organizations/{id}internalUpdate an organization (platform admin)

Clients ​

Client management within an organization

Full schemas and try-it →

EndpointTierWhat it does
GET /clientsstableList clients
POST /clientsstableCreate a client
GET /clients/{id}stableGet a client by ID
PUT /clients/{id}stableUpdate a client
DELETE /clients/{id}stableDelete a client
PUT /clients/{id}/alert-templatestableAssign or clear the client's alert template
GET /clients/{id}/usagestableGet reference counts for a client

Sites ​

Site management within clients

Full schemas and try-it →

EndpointTierWhat it does
GET /clients/{clientID}/sitesstableList sites under a client
POST /clients/{clientID}/sitesstableCreate a site under a client
GET /sitesstableList all sites across all clients
GET /sites/{id}stableGet a site by ID
PUT /sites/{id}stableUpdate a site
DELETE /sites/{id}stableDelete a site
PUT /sites/{id}/alert-templatestableAssign or clear the site's alert template
POST /sites/{id}/tokenstableGenerate a registration token for this site

Agents ​

Agent lifecycle, status, commands, and bulk operations

Full schemas and try-it →

EndpointTierWhat it does
GET /agentsstableList agents
POST /agents/bulkstableExecute a bulk operation on multiple agents
POST /agents/bulk/rotate-nats-credsinternalRotate NATS credentials for every agent in the tenant
POST /agents/moveinternalMove agents to another site (bulk)
POST /agents/registerstableRegister a new agent (called by the agent binary)
GET /agents/{agentID}/event-log-queryinternalQuery the live event log on the device
GET /agents/{agentID}/event-logsbetaList event log rollups for an agent
POST /agents/{agentID}/event-logs/analyzebetaAI analysis of the device's event log digest
PUT /agents/{agentID}/event-logs/extended-capturebetaSet or clear the extended-capture window
GET /agents/{agentID}/forecastsinternalGet capacity forecasts for an agent
GET /agents/{agentID}/historyinternalGet unified activity history for an agent
POST /agents/{agentID}/log-levelinternalSet the agent's log level (optionally time-boxed)
PUT /agents/{agentID}/primary-contactinternalSet or clear the agent's primary contact
GET /agents/{agentID}/recent-usersinternalList contacts recently seen logged in on the agent
GET /agents/{agentID}/sysinfointernalLive system information from the running agent
GET /agents/{id}stableGet agent details
PUT /agents/{id}stableUpdate agent metadata
DELETE /agents/{id}stableDelete an agent
POST /agents/{id}/cmdstableExecute a shell command on an agent
POST /agents/{id}/diagnosticsbetaRun a catalogue diagnostic on an agent
GET /agents/{id}/live-metricinternalGet a live metric snapshot from the agent
POST /agents/{id}/maintenancestableToggle agent maintenance mode
POST /agents/{id}/rebootstableReboot an agent
POST /agents/{id}/rotate-nats-credsinternalRotate one agent's NATS credentials

Checks ​

Health check management and results

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/checksstableList checks for an agent
POST /agents/{agentID}/checksstableCreate a check on an agent
GET /checksstableList checks across all agents
GET /checks/summarystableGet check status summary across all agents
GET /checks/{id}stableGet check details
PUT /checks/{id}stableUpdate a check
DELETE /checks/{id}stableDelete a check
GET /checks/{id}/resultsstableGet check result history
POST /checks/{id}/runstableRun a check immediately

Tasks ​

Automated task scheduling and results

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/tasksstableList tasks for an agent
POST /agents/{agentID}/tasksstableCreate a task on an agent
GET /tasksstableList tasks across all agents
POST /tasksstableCreate a task (agent or smart-group target)
GET /tasks/summarystableGet task status summary across all agents
GET /tasks/{id}stableGet task details
PUT /tasks/{id}stableUpdate a task
DELETE /tasks/{id}stableDelete a task
GET /tasks/{id}/resultsstableGet task execution history
POST /tasks/{id}/runstableRun a task immediately

Scripts ​

Script library, execution, and streaming

Full schemas and try-it →

EndpointTierWhat it does
POST /agents/{agentID}/runscriptstableRun a script on a specific agent
GET /agents/{agentID}/script-historystableGet script run history for an agent
GET /script-batchesstableList script batch runs
GET /script-batches/{batchID}stableGet batch detail with per-agent jobs
DELETE /script-batches/{batchID}stableCancel a batch
DELETE /script-batches/{batchID}/jobs/{jobID}stableCancel a single batch job
GET /script-categoriesstableList script categories
POST /script-categoriesstableCreate a script category
PUT /script-categories/{id}stableUpdate a script category
DELETE /script-categories/{id}stableDelete a script category
GET /script-runs/{executionID}/statusstablePoll async script run status
GET /script-runs/{executionID}/streamstableStream script output via SSE
GET /scriptsstableList scripts
POST /scriptsstableCreate a script
GET /scripts/{id}stableGet a script by ID
PUT /scripts/{id}stableUpdate a script
DELETE /scripts/{id}stableDelete a script
POST /scripts/{scriptID}/dispatchstableDispatch a script to multiple agents as a durable batch
GET /scripts/{scriptID}/historystableGet execution history for a script
POST /scripts/{scriptID}/runstableBulk-run a script on multiple agents

Policies ​

Policy engine — check/task templates with hierarchy cascade

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/effective-policyinternalThe policy currently in effect for an agent
PUT /agents/{agentID}/policystableAssign a direct policy to an agent
PUT /clients/{clientID}/policystableAssign policies to a client
GET /organization/policystableGet the organisation default policy assignments
PUT /organization/policystableAssign the organisation default policies
GET /policiesstableList policies
POST /policiesstableCreate a policy
GET /policies/{id}stableGet policy details
PUT /policies/{id}stableUpdate a policy
DELETE /policies/{id}stableDelete a policy
GET /policies/{id}/app-settingsinternalGet a policy's App Management schedule/settings
PUT /policies/{id}/app-settingsinternalUpdate a policy's App Management schedule/settings
GET /policies/{id}/appsinternalList desired-state apps on a policy
POST /policies/{id}/appsinternalAdd a desired-state app to a policy
POST /policies/{id}/apps/batchinternalAdd multiple desired-state apps to a policy at once
GET /policies/{id}/checksstableList check templates in a policy
POST /policies/{id}/checksstableAdd a check template to a policy
POST /policies/{id}/duplicatestableDuplicate a policy
GET /policies/{id}/groupsinternalSmart groups that apply this policy
GET /policies/{id}/scriptsstableList scheduled-script bindings on a policy
POST /policies/{id}/scriptsstableSchedule a script on a policy
PUT /policies/{id}/scripts/{binding_id}stableUpdate a scheduled-script binding
DELETE /policies/{id}/scripts/{binding_id}stableRemove a scheduled-script binding
POST /policies/{id}/scripts/{binding_id}/run-nowstableRun a scheduled script immediately
GET /policies/{id}/tasksstableList task templates in a policy
POST /policies/{id}/tasksstableAdd a task template to a policy
PUT /policies/{policyID}/apps/{appID}internalUpdate a desired-state app on a policy
DELETE /policies/{policyID}/apps/{appID}internalRemove a desired-state app from a policy
PUT /policies/{policyID}/checks/{checkID}stableUpdate a policy check template
DELETE /policies/{policyID}/checks/{checkID}stableRemove a check template from a policy
PUT /policies/{policyID}/tasks/{taskID}stableUpdate a policy task template
DELETE /policies/{policyID}/tasks/{taskID}stableRemove a task template from a policy
PUT /sites/{siteID}/policystableAssign policies to a site

Alerts ​

Alert management and alert templates

Full schemas and try-it →

EndpointTierWhat it does
GET /alert-templatesstableList alert templates
POST /alert-templatesstableCreate an alert template
GET /alert-templates/{id}stableGet an alert template
PUT /alert-templates/{id}stableUpdate an alert template
DELETE /alert-templates/{id}stableDelete an alert template
POST /alert-templates/{id}/teststableSend a test notification through one channel of an alert template
GET /alertsstableList alerts
GET /alerts/summarystableGet alert count summary
GET /alerts/{id}stableGet alert details
DELETE /alerts/{id}stableDelete an alert
PUT /alerts/{id}/acknowledgestableAcknowledge an alert
PUT /alerts/{id}/resolvestableResolve an alert
PUT /alerts/{id}/snoozestableSnooze an alert

Notifications ​

SMTP, webhook and notification settings, plus the per-user in-app notification inbox

Full schemas and try-it →

EndpointTierWhat it does
GET /notificationsbetaList my in-app notifications
POST /notifications/read-allbetaMark my in-app notifications read
GET /notifications/unread-countbetaCount my unread in-app notifications
POST /notifications/{id}/readbetaMark one in-app notification read
GET /psa/notificationsinternalList curated PSA notifications
GET /psa/notifications/{system_key}internalGet one curated notification
PUT /psa/notifications/{system_key}internalUpdate a curated notification
GET /settings/notificationsinternalGet notification settings (SMTP, Twilio, Slack, Teams, Discord)
PUT /settings/notificationsinternalUpdate channel webhook defaults (Slack, Teams, Discord)
POST /settings/notifications/test/discordinternalSend a test notification to the default Discord webhook
POST /settings/notifications/test/slackinternalSend a test notification to the default Slack webhook
POST /settings/notifications/test/teamsinternalSend a test notification to the default Teams webhook
GET /settings/smtpinternalGet SMTP configuration
PUT /settings/smtpinternalUpdate SMTP configuration
POST /settings/smtp/testinternalSend a test email via SMTP

Reports ​

Report templates, data queries, generation, and scheduling

Full schemas and try-it →

EndpointTierWhat it does
GET /report-historyinternalList report generation history
GET /report-history/{id}internalGet one report history entry (with rendered HTML)
DELETE /report-history/{id}internalDelete a report history entry
GET /report-history/{id}/downloadinternalDownload a generated report
GET /report-queriesinternalList report data queries
POST /report-queriesinternalCreate a report data query
GET /report-queries/modelsinternalList queryable models and operators
POST /report-queries/testinternalTest an unsaved (draft) data query
GET /report-queries/{id}internalGet a report data query
PUT /report-queries/{id}internalUpdate a report data query
DELETE /report-queries/{id}internalDelete a report data query
POST /report-queries/{id}/duplicateinternalDuplicate a saved data query
POST /report-queries/{id}/testinternalTest a saved data query and return sample results
GET /report-schedulesinternalList report schedules
POST /report-schedulesinternalCreate a report schedule
GET /report-schedules/{id}internalGet a report schedule
PUT /report-schedules/{id}internalUpdate a report schedule
DELETE /report-schedules/{id}internalDelete a report schedule
POST /report-schedules/{id}/run-nowinternalRun a report schedule immediately
POST /report-schedules/{id}/test-sendinternalSend a test report to one address
GET /report-templatesinternalList report templates
POST /report-templatesinternalCreate a report template
POST /report-templates/importinternalImport a report template from an export envelope
GET /report-templates/{id}internalGet a report template
PUT /report-templates/{id}internalUpdate a report template
DELETE /report-templates/{id}internalDelete a report template
POST /report-templates/{id}/duplicateinternalDuplicate a report template
GET /report-templates/{id}/exportinternalExport a report template as JSON
POST /report-templates/{id}/previewinternalPreview a rendered report template
POST /report-templates/{id}/preview-datainternalPreview a template with live query data
POST /reports/{templateID}/generateinternalGenerate a report from a template

Files ​

Remote file browser (browse, download, upload)

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/filesinternalBrowse files on an agent
DELETE /agents/{agentID}/filesinternalDelete a file or directory on an agent
POST /agents/{agentID}/files/copyinternalCopy a file on an agent
POST /agents/{agentID}/files/downloadinternalDownload a file from an agent
POST /agents/{agentID}/files/mkdirinternalCreate a directory on an agent
POST /agents/{agentID}/files/moveinternalMove a file on an agent
POST /agents/{agentID}/files/uploadinternalUpload a file to an agent

Software ​

Software inventory

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/softwareinternalList installed software on an agent
POST /agents/{agentID}/software/scaninternalRun a software inventory scan on an agent
POST /inventory/refresh-allinternalRefresh software + app inventory on all online agents
GET /softwareinternalList software across all agents (organization-wide)

CodeSigning ​

Agent binary signing and Authenticode certificates

Full schemas and try-it →

EndpointTierWhat it does
GET /platform/authenticodeinternalGet platform Authenticode certificate status
GET /settings/signing-keyinternalGet signing key status (public key only)
POST /settings/signing-keyinternalGenerate an Ed25519 signing key pair

Distribution ​

Agent version management, updates, and installer generation

Full schemas and try-it →

EndpointTierWhat it does
GET /agent-versionsinternalList uploaded agent versions
POST /agent-versions/uploadinternalUpload a signed agent binary
DELETE /agent-versions/{id}internalDelete an agent version
GET /agent-versions/{id}/downloadinternalDownload an agent binary (authenticated)
POST /agents/installerinternalGenerate a platform-specific installer script
POST /agents/updateinternalTrigger a fleet-wide agent update (staged rollout)
GET /agents/update-historyinternalGet agent update history
GET /agents/update-statusinternalGet agent version distribution

Security ​

Security settings, lockout management

Full schemas and try-it →

EndpointTierWhat it does
GET /settings/locked-accountsinternalList locked accounts
POST /settings/locked-accounts/{username}/unlockinternalUnlock a locked account
GET /settings/securityinternalGet security settings
PUT /settings/securityinternalUpdate security settings

CustomFields ​

Custom field definitions and values

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{id}/custom-fieldsinternalGet custom field values for an agent
PUT /agents/{id}/custom-fieldsinternalSet custom field values for an agent
GET /clients/{id}/custom-fieldsinternalGet custom field values for a client
PUT /clients/{id}/custom-fieldsinternalSet custom field values for a client
GET /custom-fieldsinternalList custom field definitions
POST /custom-fieldsinternalCreate a custom field definition
PUT /custom-fields/{id}internalUpdate a custom field definition
DELETE /custom-fields/{id}internalDelete a custom field definition
GET /sites/{id}/custom-fieldsinternalGet custom field values for a site
PUT /sites/{id}/custom-fieldsinternalSet custom field values for a site

Notes ​

Agent notes

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{id}/notesinternalList notes for an agent
POST /agents/{id}/notesinternalAdd a note to an agent
PUT /agents/{id}/notes/{noteID}internalUpdate an agent note
DELETE /agents/{id}/notes/{noteID}internalDelete an agent note

Audit ​

Audit log

Full schemas and try-it →

EndpointTierWhat it does
GET /audit-logsinternalList audit logs for the current tenant
GET /audit-logs/exportinternalExport audit logs (CSV or JSON)

Tickets ​

PSA tickets, comments, attachments, watchers and triage

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/ticketsstableList tickets
POST /psa/ticketsstableCreate a ticket
GET /psa/tickets/for-agent/{agentId}stableList tickets linked to an agent
GET /psa/tickets/statsstableTicket stats for the dashboard
GET /psa/tickets/streamstableStream ticket lifecycle events (SSE)
GET /psa/tickets/{id}stableGet a ticket with comments and attachments
PATCH /psa/tickets/{id}stablePartially update a ticket
DELETE /psa/tickets/{id}stableDelete a ticket
GET /psa/tickets/{id}/activitystableGet ticket activity (audit trail)
POST /psa/tickets/{id}/archivestableArchive a ticket
GET /psa/tickets/{id}/attachmentsstableList ticket attachments
POST /psa/tickets/{id}/attachmentsstableUpload a ticket attachment
GET /psa/tickets/{id}/attachments/{aid}/downloadstableDownload a ticket attachment
GET /psa/tickets/{id}/commentsstableList ticket comments
POST /psa/tickets/{id}/commentsstableAdd a ticket comment
GET /psa/tickets/{id}/linksstableList linked entities for a ticket
POST /psa/tickets/{id}/linksstableLink an agent (asset) to a ticket
DELETE /psa/tickets/{id}/links/{linkId}stableRemove a related-entity link from a ticket
POST /psa/tickets/{id}/mergestableMerge a ticket into another
GET /psa/tickets/{id}/participantsstableList ticket participants
POST /psa/tickets/{id}/participantsstableAdd a ticket participant (CC)
DELETE /psa/tickets/{id}/participantsstableRemove a ticket participant
POST /psa/tickets/{id}/transitionstableTransition ticket status
POST /psa/tickets/{id}/triage/assignstableAssign a triage-queue ticket to a client
POST /psa/tickets/{id}/triage/spamstableMark a triage-queue ticket as spam
POST /psa/tickets/{id}/unarchivestableUnarchive a ticket
GET /psa/tickets/{id}/watchersstableList ticket watchers
POST /psa/tickets/{id}/watchersstableAdd a ticket watcher
DELETE /psa/tickets/{id}/watchers/{user_id}stableRemove a ticket watcher

Ticket Templates ​

Reusable ticket templates

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/ticket_templatesinternalList ticket templates
POST /psa/ticket_templatesinternalCreate a ticket template
PATCH /psa/ticket_templates/{id}internalUpdate a ticket template
DELETE /psa/ticket_templates/{id}internalDelete a ticket template

Canned Responses ​

Reusable reply snippets for ticket comments

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/canned_responsesinternalList canned responses
POST /psa/canned_responsesinternalCreate a canned response
PATCH /psa/canned_responses/{id}internalUpdate a canned response
DELETE /psa/canned_responses/{id}internalDelete a canned response
POST /psa/canned_responses/{id}/previewinternalPreview a rendered canned response

Saved Filters ​

Per-user saved list filters

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/saved_filtersinternalList saved filters
POST /psa/saved_filtersinternalCreate a saved filter
PATCH /psa/saved_filters/{id}internalUpdate a saved filter
DELETE /psa/saved_filters/{id}internalDelete a saved filter

Contacts ​

Client contacts and portal linking

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/contactsstableList contacts
POST /psa/contactsstableCreate a contact
POST /psa/contacts/mergestableMerge two contacts
GET /psa/contacts/{id}stableGet a contact by ID
PATCH /psa/contacts/{id}stablePartially update a contact
DELETE /psa/contacts/{id}stableDelete a contact
GET /psa/contacts/{id}/mailbox-statsstableGet mailbox storage stats for a contact
POST /psa/contacts/{id}/portal-linkstableLink a contact to a client-portal account
DELETE /psa/contacts/{id}/portal-linkstableUnlink a contact's client-portal account
POST /psa/contacts/{id}/portal-passwordstableSet a contact's client-portal password
GET /psa/contacts/{id}/ticketsstableList tickets raised by a contact

Billing Services ​

PSA service catalogue and categories

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/service-categoriesstableList service categories
POST /psa/billing/service-categoriesstableCreate a service category
GET /psa/billing/servicesstableList services in the catalogue
POST /psa/billing/servicesstableCreate a service
GET /psa/billing/services/{id}stableGet a service by ID
PUT /psa/billing/services/{id}stableUpdate a service
DELETE /psa/billing/services/{id}stableDelete a service
GET /psa/billing/services/{id}/usagestableGet service reference counts

Contracts ​

PSA contracts, lines, billing cycles and asset category mapping

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/asset-assignmentsstableList asset billing assignments
POST /psa/billing/asset-assignments/bulkstableBulk-assign a billing category
PATCH /psa/billing/asset-assignments/{asset_id}stableUpdate one asset's billing assignment
GET /psa/billing/categoriesstableList billing categories
POST /psa/billing/categoriesstableCreate a custom billing category
PATCH /psa/billing/categories/{id}stableUpdate a custom billing category
DELETE /psa/billing/categories/{id}stableDelete a custom billing category
GET /psa/billing/category-defaultsstableList asset-type category defaults
PATCH /psa/billing/category-defaults/{asset_type}stableSet the default category for an asset type
GET /psa/billing/contractsstableList contracts
POST /psa/billing/contractsstableCreate a contract
GET /psa/billing/contracts/{id}stableGet a contract with its lines
PUT /psa/billing/contracts/{id}stableUpdate a contract
GET /psa/billing/contracts/{id}/billing-cyclestableGet the contract's open billing cycle
PUT /psa/billing/contracts/{id}/billing-cyclestableUpdate the contract's billing cycle anchor
GET /psa/billing/contracts/{id}/forecaststableForecast the next invoice (dry run)
POST /psa/billing/contracts/{id}/generate-invoicestableGenerate an invoice from the contract now
GET /psa/billing/contracts/{id}/invoice-recipientsstablePreview invoice email recipients for a contract
POST /psa/billing/contracts/{id}/linesstableAdd a line to a contract
PUT /psa/billing/contracts/{id}/lines/{lineId}stableUpdate a contract line
DELETE /psa/billing/contracts/{id}/lines/{lineId}stableRemove a contract line
PATCH /psa/billing/contracts/{id}/lines/{lineId}/pax8stableUpdate Pax8 settings on a Pax8-mapped line

Invoices ​

PSA invoices, items, issue/void lifecycle and PDFs

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/invoicesstableList invoices
POST /psa/billing/invoicesstableCreate a draft invoice
POST /psa/billing/invoices/bulk-issuestableBulk-issue draft invoices
GET /psa/billing/invoices/bulk-issue/batches/{batchID}stablePoll an async bulk-issue batch
POST /psa/billing/invoices/bulk-sendstableBulk-send invoices by email
GET /psa/billing/invoices/bulk-send/batches/{batchID}stablePoll an async bulk-send batch
GET /psa/billing/invoices/{id}stableGet invoice detail
PATCH /psa/billing/invoices/{id}stableUpdate invoice metadata (drafts only)
POST /psa/billing/invoices/{id}/freeagent-pushinternalRe-enqueue the FreeAgent push
POST /psa/billing/invoices/{id}/issuestableIssue a draft invoice
POST /psa/billing/invoices/{id}/itemsstableAdd a line to a draft invoice
PATCH /psa/billing/invoices/{id}/items/{itemId}stableUpdate a draft invoice line
DELETE /psa/billing/invoices/{id}/items/{itemId}stableDelete a draft invoice line
GET /psa/billing/invoices/{id}/pdfstableDownload the invoice PDF
POST /psa/billing/invoices/{id}/pdf/regeneratestableRegenerate the invoice PDF archive
POST /psa/billing/invoices/{id}/qbo-pushinternalRe-enqueue the QuickBooks Online push
POST /psa/billing/invoices/{id}/sendstableRe-send the invoice-issued email (PDF attached)
POST /psa/billing/invoices/{id}/voidstableVoid an invoice
POST /psa/billing/invoices/{id}/xero-pushinternalRe-enqueue the Xero push
GET /psa/billing/runinternalBilling run review (drafts grouped by client)

Billing Settings ​

Tenant billing configuration, VAT, branding and lookups

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/companies-house/lookupinternalLook up a company by number
GET /psa/billing/companies-house/searchinternalSearch Companies House
GET /psa/billing/email-templatesinternalList client-facing billing email templates
PUT /psa/billing/email-templates/{type}internalUpdate one email type's wording overrides
GET /psa/billing/invoice-brandinginternalGet invoice branding settings
PATCH /psa/billing/invoice-brandinginternalUpdate invoice branding settings
POST /psa/billing/invoice-branding/logointernalUpload the invoice logo
DELETE /psa/billing/invoice-branding/logointernalRemove the invoice logo
GET /psa/billing/invoice-branding/previewinternalPreview a sample invoice PDF
GET /psa/billing/invoice-numberinternalGet the next invoice number
PUT /psa/billing/invoice-numberinternalSet the next invoice number (forward-only)
GET /psa/billing/settingsinternalGet invoicing defaults
PUT /psa/billing/settingsinternalSave invoicing defaults
GET /psa/billing/tax-ratesstableList tax rates
POST /psa/billing/tax-ratesstableCreate a tax rate
GET /psa/billing/vat-settingsinternalGet VAT settings
PATCH /psa/billing/vat-settingsinternalUpdate VAT settings

Time Tracking ​

Time entries, timers and timesheet workflow

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/time/entriesstableList time entries
POST /psa/time/entriesstableCreate a time entry
GET /psa/time/entries/{id}stableGet a time entry by ID
PATCH /psa/time/entries/{id}stableUpdate a time entry
DELETE /psa/time/entries/{id}stableDelete a time entry
GET /psa/time/settingsstableGet time tracking settings
PUT /psa/time/settingsstableUpdate time tracking settings
PUT /psa/time/settings/default-servicestableSet or clear the default T&M service
POST /psa/time/settings/reconcile-unassignedstableAssign the default service to unassigned billable entries
GET /psa/time/settings/servicesstableList active services for the default-service picker
GET /psa/time/settings/unassigned-billablestableCount billable time entries with no service
GET /psa/time/timer-prefsstableGet the caller's timer preferences
PUT /psa/time/timer-prefsstableUpdate the caller's timer preferences
GET /psa/time/timersstableList the caller's live timers
POST /psa/time/timersstableStart a new timer
PATCH /psa/time/timers/{id}stableUpdate a timer's notes, label, or ticket
DELETE /psa/time/timers/{id}stableDiscard a timer without logging time
POST /psa/time/timers/{id}/adjuststableSubtract elapsed time from a timer without stopping it
POST /psa/time/timers/{id}/pausestablePause a running timer
POST /psa/time/timers/{id}/resumestableResume a paused timer
POST /psa/time/timers/{id}/stopstableStop a timer and commit it as a time entry
GET /psa/time/timesheetsstableList timesheets
GET /psa/time/timesheets/{id}stableGet a timesheet with its time entries
POST /psa/time/timesheets/{id}/approvestableApprove a submitted timesheet
POST /psa/time/timesheets/{id}/rejectstableReject a submitted timesheet
POST /psa/time/timesheets/{id}/reopenstableReopen a rejected timesheet
POST /psa/time/timesheets/{id}/submitstableSubmit a timesheet for approval

Knowledge Base ​

Internal KB articles, versions and categories

Full schemas and try-it →

EndpointTierWhat it does
POST /kb/ai/generatebetaGenerate a draft KB article with AI
GET /kb/articlesstableList or search knowledge base articles
POST /kb/articlesstableCreate a knowledge base article
POST /kb/articles/backfill-embeddingsbetaBackfill semantic-search embeddings
GET /kb/articles/by-slug/{slug}stableGet a knowledge base article by slug
GET /kb/articles/{id}stableGet a knowledge base article
PUT /kb/articles/{id}stableUpdate a knowledge base article
DELETE /kb/articles/{id}stableDelete a knowledge base article
POST /kb/articles/{id}/restore/{version}stableRestore a prior version of a knowledge base article
GET /kb/articles/{id}/versionsstableList versions of a knowledge base article
GET /kb/categoriesstableList knowledge base categories
POST /kb/categoriesstableCreate a knowledge base category
PUT /kb/categories/{id}stableUpdate a knowledge base category
DELETE /kb/categories/{id}stableDelete a knowledge base category
POST /kb/imagesbetaUpload an image for use in KB article bodies
GET /psa/ai/tickets/{ticket_id}/kb-suggestionsinternalSuggest related KB articles for a ticket

Documents ​

Document storage, uploads and associations

Full schemas and try-it →

EndpointTierWhat it does
GET /documentsstableList documents
POST /documents/articlesstableCreate a rich-text document article
GET /documents/articles/{id}stableGet a rich-text document article
PUT /documents/articles/{id}stableUpdate a rich-text document article
POST /documents/confirm-uploadstableConfirm a completed upload
POST /documents/presign-inline-imagestableRequest a presigned upload URL for an inline image
POST /documents/presigned-uploadstableRequest a presigned upload URL
GET /documents/quotastableGet document storage quota usage
DELETE /documents/{id}stableDelete a document
PUT /documents/{id}/associationsstableReplace a document's associations
GET /documents/{id}/downloadstableGet a download URL for a document
GET /documents/{id}/rawstableRedirect to the raw document content

Domain Monitoring ​

SSL/DNS/WHOIS/HTTP domain monitors

Full schemas and try-it →

EndpointTierWhat it does
GET /domain-monitorsstableList domain monitors
POST /domain-monitorsstableCreate a domain monitor
GET /domain-monitors/{id}stableGet a domain monitor
PUT /domain-monitors/{id}stableUpdate a domain monitor
DELETE /domain-monitors/{id}stableDelete a domain monitor
GET /domain-monitors/{id}/historystableList check result history
PUT /domain-monitors/{id}/pausestablePause or resume a domain monitor
POST /domain-monitors/{id}/refreshstableTrigger an immediate check run

Agent Enrolment ​

Registration token lifecycle and installer downloads

Full schemas and try-it →

EndpointTierWhat it does
GET /installers/stub-downloadbetaDownload the single-EXE installer stub (public, token-authorised)
PATCH /registration-tokens/{id}betaExtend (or shorten) a registration token's expiry
DELETE /registration-tokens/{id}betaRevoke a registration token
GET /sites/{id}/tokensbetaList registration tokens for a site

Quotes ​

PSA quotes, sections, items and lifecycle

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/quote-settingsbetaGet org-level quote settings
PATCH /psa/quote-settingsbetaUpdate org-level quote settings
GET /psa/quotesbetaList quotes
POST /psa/quotesbetaCreate a draft quote
GET /psa/quotes/{id}betaGet a quote with sections, items and signature
PATCH /psa/quotes/{id}betaUpdate a quote header
DELETE /psa/quotes/{id}betaDelete a draft quote
GET /psa/quotes/{id}/auditbetaList the audit trail for a quote
POST /psa/quotes/{id}/clear-needs-infobetaClear the needs_info flag on a quote
POST /psa/quotes/{id}/finalisebetaFinalise a signed quote (invoice and/or contract)
POST /psa/quotes/{id}/itemsbetaAdd a line item to a quote
PATCH /psa/quotes/{id}/items/{item_id}betaUpdate a quote line item
DELETE /psa/quotes/{id}/items/{item_id}betaDelete a quote line item
POST /psa/quotes/{id}/manual-acceptbetaManually mark a quote accepted
POST /psa/quotes/{id}/manual-declinebetaManually mark a quote declined
GET /psa/quotes/{id}/messagesbetaList the reply thread for a quote
POST /psa/quotes/{id}/messagesbetaSend a reply on the quote thread
GET /psa/quotes/{id}/pdfbetaDownload the quote PDF
POST /psa/quotes/{id}/revisebetaCreate a new revision of a quote
POST /psa/quotes/{id}/sectionsbetaAdd a section to a quote
PATCH /psa/quotes/{id}/sections/{section_id}betaUpdate a quote section
DELETE /psa/quotes/{id}/sections/{section_id}betaDelete a quote section
POST /psa/quotes/{id}/sendbetaSend (or resend) a quote to the customer
POST /psa/quotes/{id}/withdrawbetaWithdraw a quote

Quote Templates ​

Reusable quote templates and instantiation

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/quote-templatesbetaList quote templates
POST /psa/quote-templatesbetaCreate a quote template
GET /psa/quote-templates/{id}betaGet a quote template with sections and items
PATCH /psa/quote-templates/{id}betaUpdate a quote template
DELETE /psa/quote-templates/{id}betaDelete a quote template
POST /psa/quote-templates/{id}/instantiatebetaInstantiate a template into a new draft quote
POST /psa/quote-templates/{id}/itemsbetaAdd an item to a quote template
PATCH /psa/quote-templates/{id}/items/{item_id}betaUpdate a quote template item
DELETE /psa/quote-templates/{id}/items/{item_id}betaDelete a quote template item
POST /psa/quote-templates/{id}/sectionsbetaAdd a section to a quote template
PATCH /psa/quote-templates/{id}/sections/{section_id}betaUpdate a quote template section
DELETE /psa/quote-templates/{id}/sections/{section_id}betaDelete a quote template section

Quote Approval ​

Quote approval chains and decisions

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/quote-approval-chainsbetaList quote approval chains
POST /psa/quote-approval-chainsbetaCreate a quote approval chain
GET /psa/quote-approval-chains/{id}betaGet an approval chain with its steps
PATCH /psa/quote-approval-chains/{id}betaUpdate an approval chain
DELETE /psa/quote-approval-chains/{id}betaDelete an approval chain
POST /psa/quote-approval-chains/{id}/stepsbetaAdd a step to an approval chain
PATCH /psa/quote-approval-chains/{id}/steps/{step_id}betaUpdate an approval chain step
DELETE /psa/quote-approval-chains/{id}/steps/{step_id}betaDelete an approval chain step
GET /psa/quotes/{id}/approval-stepsbetaList the per-quote approval run state
POST /psa/quotes/{id}/approvebetaApprove a quote awaiting approval
POST /psa/quotes/{id}/rejectbetaReject a quote awaiting approval
POST /psa/quotes/{id}/submit-for-approvalbetaSubmit a draft quote for approval

Projects ​

PSA projects, phases, milestones, risks and approvals

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/projectsbetaList projects
POST /psa/projectsbetaCreate a project
POST /psa/projects/from-templatebetaInstantiate a project from a template
GET /psa/projects/portfoliobetaPortfolio rollup across all projects
GET /psa/projects/{id}betaGet a project with phases and milestones
PATCH /psa/projects/{id}betaUpdate a project
DELETE /psa/projects/{id}betaArchive a project
GET /psa/projects/{id}/approvalsbetaList approvals for a project
POST /psa/projects/{id}/approvalsbetaCreate an approval request
POST /psa/projects/{id}/approvals/{approval_id}/decidebetaDecide an approval
GET /psa/projects/{id}/burn-ratebetaProject burn-rate
GET /psa/projects/{id}/dependenciesbetaList task dependencies for a project
POST /psa/projects/{id}/dependenciesbetaCreate a task dependency
DELETE /psa/projects/{id}/dependencies/{dep_id}betaDelete a task dependency
POST /psa/projects/{id}/discovery/scanbetaRun a discovery scan
GET /psa/projects/{id}/milestonesbetaList milestones for a project
POST /psa/projects/{id}/milestonesbetaCreate a milestone
PATCH /psa/projects/{id}/milestones/{m_id}betaUpdate a milestone (may trigger billing)
DELETE /psa/projects/{id}/milestones/{m_id}betaDelete a milestone
GET /psa/projects/{id}/phasesbetaList phases for a project
POST /psa/projects/{id}/phasesbetaCreate a phase
PATCH /psa/projects/{id}/phases/reorderbetaReorder all phases
PATCH /psa/projects/{id}/phases/{phase_id}betaUpdate a phase
DELETE /psa/projects/{id}/phases/{phase_id}betaDelete a phase
GET /psa/projects/{id}/risksbetaList RAID entries for a project
POST /psa/projects/{id}/risksbetaCreate a RAID entry
PATCH /psa/projects/{id}/risks/{risk_id}betaUpdate a RAID entry
DELETE /psa/projects/{id}/risks/{risk_id}betaDelete a RAID entry
POST /psa/projects/{id}/shift-tasksbetaBulk-shift task due dates

Project Templates ​

Reusable project templates and versions

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/project-templatesbetaList project templates
POST /psa/project-templatesbetaCreate a project template
GET /psa/project-templates/available-varsbetaList template substitution variables
POST /psa/project-templates/import-samplesbetaImport the sample template catalogue
GET /psa/project-templates/{id}betaGet a project template with its current version
PATCH /psa/project-templates/{id}betaUpdate template metadata
DELETE /psa/project-templates/{id}betaArchive a project template
PUT /psa/project-templates/{id}/payloadbetaSave a new template payload version
GET /psa/project-templates/{id}/versionsbetaList template version history
GET /psa/project-templates/{id}/versions/{version}betaGet one template version

Products ​

Product catalogue and supplier SKU links

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/productsbetaList products
POST /psa/productsbetaCreate a product
GET /psa/products/{id}betaGet a product
PATCH /psa/products/{id}betaUpdate a product
DELETE /psa/products/{id}betaDelete a product
GET /psa/products/{id}/supplier-skusbetaList a product's supplier SKU links
POST /psa/products/{id}/supplier-skusbetaLink a supplier SKU to a product
DELETE /psa/products/{id}/supplier-skus/{link_id}betaUnlink a supplier SKU from a product

Catalogue ​

Cross-supplier catalogue search

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/catalogue/searchbetaSearch the unified product catalogue

Suppliers ​

Suppliers and price-feed ingestion

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/suppliersbetaList suppliers
POST /psa/suppliersbetaCreate a supplier
GET /psa/suppliers/{id}betaGet a supplier
PATCH /psa/suppliers/{id}betaUpdate a supplier
DELETE /psa/suppliers/{id}betaDelete a supplier
GET /psa/suppliers/{id}/feedbetaList a supplier's feed items
POST /psa/suppliers/{id}/feed/ingestbetaIngest a previewed supplier CSV
GET /psa/suppliers/{id}/feed/mappingsbetaList a supplier's CSV mapping presets
POST /psa/suppliers/{id}/feed/mappingsbetaSave a CSV mapping preset
DELETE /psa/suppliers/{id}/feed/mappings/{mid}betaDelete a CSV mapping preset
POST /psa/suppliers/{id}/feed/previewbetaPreview a supplier CSV upload

Procurement ​

Procured item tracking

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/procured-itemsbetaList client procured items
POST /psa/procured-itemsbetaCreate a procured item
GET /psa/procured-items/{id}betaGet a procured item
PATCH /psa/procured-items/{id}betaUpdate a procured item
DELETE /psa/procured-items/{id}betaDelete a procured item

Ticket Charges ​

Products and expenses logged on tickets, approval and invoicing

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/ticket-charge-approvalbetaGet the ticket charge approval settings
PATCH /psa/billing/ticket-charge-approvalbetaUpdate the ticket charge approval settings
GET /psa/ticket-chargesbetaList ticket charges
POST /psa/ticket-chargesbetaLog a charge on a ticket
POST /psa/ticket-charges/invoice-nowbetaInvoice a ticket's charges now
GET /psa/ticket-charges/{id}betaGet a ticket charge
PATCH /psa/ticket-charges/{id}betaUpdate a ticket charge
DELETE /psa/ticket-charges/{id}betaDelete a ticket charge
POST /psa/ticket-charges/{id}/approvebetaApprove a pending charge
POST /psa/ticket-charges/{id}/rejectbetaReject a pending charge

MDM ​

Mobile device management (beta, per-org flag)

Full schemas and try-it →

EndpointTierWhat it does
GET /mdm/connectionsbetaList MDM provider connections
POST /mdm/connections/{provider}/callbackbetaComplete the AMAPI enterprise binding (connect leg 2)
POST /mdm/connections/{provider}/connectbetaStart the AMAPI enterprise binding (connect leg 1)
POST /mdm/connections/{provider}/disconnectbetaDisconnect the MDM provider (DESTRUCTIVE)
POST /mdm/connections/{provider}/testbetaTest the MDM provider connection
GET /mdm/defaultsbetaGet hierarchy default policies
PUT /mdm/defaults/orgbetaSet the org default policy
PUT /mdm/defaults/site/{id}betaSet a site default policy
GET /mdm/devicesbetaList MDM devices
GET /mdm/devices/{id}betaGet an MDM device
POST /mdm/devices/{id}/clear-lostbetaClear lost mode (recovery)
GET /mdm/devices/{id}/commandsbetaList a device's command history
POST /mdm/devices/{id}/commandsbetaIssue a device command
POST /mdm/devices/{id}/commands/{cmdId}/cancelbetaCancel a sent device command
GET /mdm/devices/{id}/eventsbetaList a device's webhook events
GET /mdm/devices/{id}/locationsbetaList a device's lost-mode GPS fixes
PUT /mdm/devices/{id}/policybetaAssign a policy to a device
POST /mdm/devices/{id}/report-lostbetaReport a device lost
GET /mdm/devices/{id}/security-eventsbetaList a device's on-device security events
POST /mdm/devices/{id}/syncbetaRefresh an MDM device from its provider
GET /mdm/enrolment-optionsbetaEnrolment targeting options
POST /mdm/enrolment-tokensbetaCreate a device enrolment token
POST /mdm/enrolment-wifibetaSave an enrolment Wi-Fi network
DELETE /mdm/enrolment-wifi/{id}betaDelete a saved enrolment Wi-Fi network
POST /mdm/managed-play/web-tokenbetaMint a Managed Google Play web token
GET /mdm/policiesbetaList MDM policies
POST /mdm/policiesbetaCreate an MDM policy
GET /mdm/policies/{id}betaGet an MDM policy
PUT /mdm/policies/{id}betaUpdate an MDM policy
DELETE /mdm/policies/{id}betaDelete an MDM policy
POST /mdm/policies/{id}/pushbetaPush a policy to the provider
GET /organizations/{id}/mdm-enabledbetaGet an organization's MDM beta flag
PUT /organizations/{id}/mdm-enabledbetaSet an organization's MDM beta flag

CSAT ​

Customer satisfaction surveys and analytics

Full schemas and try-it →

EndpointTierWhat it does
GET /csat/{token}betaLoad a CSAT survey landing page
POST /csat/{token}betaSubmit a CSAT survey response
GET /psa/csat/aggregatebetaCSAT aggregate metrics
GET /psa/csat/responsesbetaList recent CSAT responses

QBR ​

vCIO quarterly business review scorecards and roadmap

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/settings/qbrbetaGet the org's review-term setting
PUT /psa/settings/qbrbetaSet the org's review-term setting
PATCH /qbr/cards/{cardID}betaUpdate a roadmap card
DELETE /qbr/cards/{cardID}betaDelete a roadmap card
GET /qbr/clients/{clientID}/cardsbetaList a client's roadmap cards
POST /qbr/clients/{clientID}/cardsbetaAdd a roadmap card
GET /qbr/clients/{clientID}/scorecardbetaCompute and return a client's QBR scorecard
GET /qbr/clients/{clientID}/share-linkbetaGet or create a client's share link
DELETE /qbr/clients/{clientID}/share-linkbetaRevoke a client's share link
POST /qbr/clients/{clientID}/share-link/rotatebetaRotate a client's share link
GET /qbr/public/{token}betaPublic client review view (no auth)
POST /qbr/public/{token}/cards/{cardID}/selectbetaClient selects a card option (public, no auth)

Asset Groups ​

Smart asset groups with filter DSL

Full schemas and try-it →

EndpointTierWhat it does
GET /asset-groupsbetaList asset groups
POST /asset-groupsbetaCreate an asset group
GET /asset-groups/fieldsbetaList queryable criteria fields
POST /asset-groups/previewbetaPreview criteria without saving
POST /asset-groups/recompute-allbetaRecompute every asset group
GET /asset-groups/{id}betaGet an asset group
PUT /asset-groups/{id}betaUpdate an asset group
DELETE /asset-groups/{id}betaDelete an asset group
POST /asset-groups/{id}/clonebetaClone an asset group
GET /asset-groups/{id}/membersbetaList group members
GET /asset-groups/{id}/policiesbetaGet the RMM policy a group applies
PUT /asset-groups/{id}/policiesbetaSet the RMM policy a group applies
POST /asset-groups/{id}/recomputebetaRecompute group membership now

Network Devices ​

SNMP network device inventory and polling

Full schemas and try-it →

EndpointTierWhat it does
GET /device-countsinternalGet combined agent and network device counts
GET /network-devicesstableList network devices
POST /network-devicesstableCreate a network device
POST /network-devices/discoverstableRun SNMP discovery via an agent
GET /network-devices/{id}stableGet a network device
PUT /network-devices/{id}stableUpdate a network device
DELETE /network-devices/{id}stableDelete a network device
POST /network-devices/{id}/pollstablePoll a device on demand

Email Gateway ​

Inbound/outbound email domains, mailboxes, blocklist and activity

Full schemas and try-it →

EndpointTierWhat it does
GET /clients/{clientID}/email-domainsinternalList a client's email domains
POST /clients/{clientID}/email-domainsinternalAdd an email domain to a client
DELETE /clients/{clientID}/email-domains/{id}internalRemove an email domain from a client
GET /psa/email/activityinternalList email activity
GET /psa/email/activity/summaryinternalEmail activity summary
GET /psa/email/activity/{id}internalGet email activity detail
GET /psa/email/blocklistinternalList blocklist entries
POST /psa/email/blocklistinternalAdd blocklist entry
DELETE /psa/email/blocklist/{id}internalRemove blocklist entry
GET /psa/email/connected-mailboxesinternalList connected mailboxes
POST /psa/email/connected-mailboxes/callbackinternalComplete mailbox connect flow
POST /psa/email/connected-mailboxes/connectinternalStart mailbox connect flow
PATCH /psa/email/connected-mailboxes/{id}internalUpdate connected mailbox settings
DELETE /psa/email/connected-mailboxes/{id}internalDisconnect mailbox

PSA Settings ​

Ticket categories, priority matrix, SLA plans and AI feature config

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/settings/ai/featuresinternalRead the AI feature switches and rate limits
PATCH /psa/settings/ai/featuresinternalToggle AI features
PATCH /psa/settings/ai/model-overridesinternalSet per-feature AI model overrides
GET /psa/settings/ai/modelsinternalList AI model options and per-feature overrides
PATCH /psa/settings/ai/rate-limitsinternalPatch AI per-feature daily rate limits
GET /psa/settings/ai/usageinternalList AI usage metering rows
GET /psa/settings/categoriesinternalList ticket categories
POST /psa/settings/categoriesinternalCreate a ticket category
POST /psa/settings/categories/importinternalImport a ticket-category taxonomy from CSV
POST /psa/settings/categories/install-defaultsinternalInstall the standard system-default taxonomy
POST /psa/settings/categories/remove-defaultsinternalRemove the system-default categories (reverse of install)
GET /psa/settings/categories/templateinternalDownload the category-import CSV template
PATCH /psa/settings/categories/{id}internalUpdate a ticket category
DELETE /psa/settings/categories/{id}internalDelete a ticket category
GET /psa/settings/categories/{id}/subtreeinternalList a category subtree
GET /psa/settings/priority-matrixinternalGet the 5x5 priority matrix
POST /psa/settings/priority-matrix/resetinternalReset the priority matrix
PUT /psa/settings/priority-matrix/{impact}/{urgency}internalUpsert a priority matrix cell
DELETE /psa/settings/priority-matrix/{impact}/{urgency}internalDelete a priority matrix cell
GET /psa/settings/sla-calendarsinternalList SLA calendars
POST /psa/settings/sla-calendarsinternalCreate an SLA calendar
GET /psa/settings/sla-calendars/{id}internalGet an SLA calendar
PATCH /psa/settings/sla-calendars/{id}internalUpdate an SLA calendar
DELETE /psa/settings/sla-calendars/{id}internalDelete an SLA calendar
GET /psa/settings/sla-plansinternalList SLA plans
POST /psa/settings/sla-plansinternalCreate an SLA plan
GET /psa/settings/sla-plans/resolveinternalResolve the SLA plan for a hypothetical ticket
GET /psa/settings/sla-plans/{id}internalGet an SLA plan
PATCH /psa/settings/sla-plans/{id}internalUpdate an SLA plan
DELETE /psa/settings/sla-plans/{id}internalDelete an SLA plan
GET /psa/settings/ticket-type-formsinternalList per-type ticket forms (merged view)
GET /psa/settings/ticket-type-forms/defaultsinternalList platform-default ticket forms
PUT /psa/settings/ticket-type-forms/{ticket_type}internalUpsert a tenant form override
DELETE /psa/settings/ticket-type-forms/{ticket_type}internalReset a form to the platform default
GET /psa/settings/ticketsinternalGet org-wide ticket settings
PUT /psa/settings/ticketsinternalUpdate org-wide ticket settings
GET /psa/statusinternalGet PSA module status for the current tenant

Ticket Rules ​

Ticket automation rules and dry-run

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/rulesinternalList automation rules
POST /psa/rulesinternalCreate an automation rule
POST /psa/rules/dry-runinternalDry-run a rule definition
GET /psa/rules/{id}internalGet a rule
PATCH /psa/rules/{id}internalUpdate a rule
DELETE /psa/rules/{id}internalDelete a rule
GET /psa/rules/{id}/runsinternalList rule runs (audit history)

QuickBooks ​

QuickBooks Online accounting sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/qbointernalGet QuickBooks connection status
DELETE /psa/integrations/qbointernalDisconnect QuickBooks
POST /psa/integrations/qbo/authorizeinternalStart QuickBooks OAuth flow
POST /psa/integrations/qbo/callbackinternalComplete QuickBooks OAuth flow
POST /psa/integrations/qbo/create-from-localinternalPush a local entity to QuickBooks
POST /psa/integrations/qbo/link-localinternalLink a local entity to an existing QuickBooks entity
GET /psa/integrations/qbo/lookup-localinternalAutocomplete local map targets (QuickBooks)
GET /psa/integrations/qbo/pending-importsinternalList QuickBooks pending imports
PATCH /psa/integrations/qbo/pending-imports/{id}internalDecide a QuickBooks pending import
GET /psa/integrations/qbo/preferencesinternalGet QuickBooks preferences
PATCH /psa/integrations/qbo/preferencesinternalUpdate QuickBooks preferences
POST /psa/integrations/qbo/syncinternalTrigger a manual QuickBooks sync
GET /psa/integrations/qbo/sync-historyinternalList QuickBooks sync history
GET /psa/integrations/qbo/unmapped-localinternalList local entities unmapped to QuickBooks

FreeAgent ​

FreeAgent accounting sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/freeagentinternalGet FreeAgent connection status
DELETE /psa/integrations/freeagentinternalDisconnect FreeAgent
POST /psa/integrations/freeagent/authorizeinternalStart FreeAgent OAuth flow
GET /psa/integrations/freeagent/bank-accountsinternalList FreeAgent bank accounts
POST /psa/integrations/freeagent/callbackinternalComplete FreeAgent OAuth flow
POST /psa/integrations/freeagent/create-from-localinternalPush a local client to FreeAgent
GET /psa/integrations/freeagent/income-categoriesinternalList FreeAgent income categories
GET /psa/integrations/freeagent/lookup-localinternalAutocomplete local map targets (FreeAgent)
GET /psa/integrations/freeagent/pending-importsinternalList FreeAgent pending imports
PATCH /psa/integrations/freeagent/pending-imports/{id}internalDecide a FreeAgent pending import
GET /psa/integrations/freeagent/preferencesinternalGet FreeAgent preferences
PATCH /psa/integrations/freeagent/preferencesinternalUpdate FreeAgent preferences
POST /psa/integrations/freeagent/syncinternalTrigger a manual FreeAgent sync
GET /psa/integrations/freeagent/sync-historyinternalList FreeAgent sync history
GET /psa/integrations/freeagent/unmapped-localinternalList local entities unmapped to FreeAgent

Xero ​

Xero accounting sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/xerointernalGet Xero connection status
DELETE /psa/integrations/xerointernalDisconnect Xero
GET /psa/integrations/xero/accountsinternalXero revenue accounts
POST /psa/integrations/xero/authorizeinternalStart Xero OAuth flow
POST /psa/integrations/xero/callbackinternalComplete Xero OAuth flow
POST /psa/integrations/xero/create-from-localinternalCreate a Xero contact from a client
GET /psa/integrations/xero/importsinternalXero review queue
PATCH /psa/integrations/xero/imports/{id}internalDecide a Xero review-queue row
POST /psa/integrations/xero/organisationinternalChoose the Xero organisation
GET /psa/integrations/xero/preferencesinternalXero preferences
PATCH /psa/integrations/xero/preferencesinternalUpdate Xero preferences
GET /psa/integrations/xero/servicesinternalService revenue accounts
PATCH /psa/integrations/xero/services/{id}internalSet a service revenue account
POST /psa/integrations/xero/syncinternalRun a Xero sync now
GET /psa/integrations/xero/sync-historyinternalXero sync history
GET /psa/integrations/xero/tax-ratesinternalXero tax rates
GET /psa/integrations/xero/unmapped-localinternalLocal records not linked to Xero

Entra ​

Microsoft Entra contact sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/entrainternalGet Entra connection status
DELETE /psa/integrations/entrainternalDisconnect Entra
GET /psa/integrations/entra/authorizeinternalStart the Entra OAuth flow
GET /psa/integrations/entra/callbackinternalEntra OAuth callback
POST /psa/integrations/entra/connectinternalSave Entra app credentials
POST /psa/integrations/entra/syncinternalTrigger an Entra contact sync

Pax8 ​

Pax8 marketplace sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/pax8internalGet Pax8 connection status
DELETE /psa/integrations/pax8internalDisconnect Pax8
POST /psa/integrations/pax8/clients/{clientId}/unlinkinternalUnlink an OpsMerge client from its Pax8 company
POST /psa/integrations/pax8/connectinternalConnect Pax8
POST /psa/integrations/pax8/credentialsinternalRotate Pax8 credentials
POST /psa/integrations/pax8/lines/{lineId}/releaseinternalRelease a Pax8 subscription from its contract line
GET /psa/integrations/pax8/linkedinternalList Pax8-linked clients
GET /psa/integrations/pax8/lookup-localinternalTypeahead lookup of local clients
GET /psa/integrations/pax8/marginsinternalList Pax8 line margins (sell vs cost)
GET /psa/integrations/pax8/pending-importsinternalList the Pax8 pending-imports queue
PATCH /psa/integrations/pax8/pending-imports/{id}internalDecide a Pax8 pending import
PATCH /psa/integrations/pax8/preferencesinternalUpdate Pax8 preferences
GET /psa/integrations/pax8/price-overridesinternalList Pax8 per-contract sale-price overrides
POST /psa/integrations/pax8/price-overrides/{lineId}/removeinternalRemove a Pax8 sale-price override
POST /psa/integrations/pax8/syncinternalTrigger a Pax8 sync now
GET /psa/integrations/pax8/sync-historyinternalList Pax8 sync history

CIPP ​

CIPP tenant mapping and sync

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/cippinternalGet CIPP connection status
DELETE /psa/integrations/cippinternalDisconnect CIPP
POST /psa/integrations/cipp/connectinternalConnect CIPP
POST /psa/integrations/cipp/syncinternalTrigger a CIPP contact sync
GET /psa/integrations/cipp/tenantsinternalList CIPP tenant mappings
POST /psa/integrations/cipp/tenants/auto-createinternalAuto-create clients for unmapped CIPP tenants
POST /psa/integrations/cipp/tenants/refreshinternalRefresh the CIPP tenant list
PUT /psa/integrations/cipp/tenants/{cippTenantId}/enabledinternalEnable or disable sync for one CIPP tenant
PUT /psa/integrations/cipp/tenants/{cippTenantId}/mapinternalMap a CIPP tenant to a client
POST /psa/integrations/cipp/tenants/{cippTenantId}/syncinternalRetry sync for one CIPP tenant
GET /psa/integrations/cipp/unmapped-countinternalCount unmapped CIPP tenants

Distributors ​

Ingram, TD Synnex and Exertis supplier integrations

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/integrations/exertisinternalGet Exertis connection
POST /psa/integrations/exertisinternalCreate or update the Exertis connection
DELETE /psa/integrations/exertisinternalDisconnect Exertis
POST /psa/integrations/exertis/cataloginternalPull the Exertis catalogue
POST /psa/integrations/exertis/testinternalTest the Exertis connection
GET /psa/integrations/ingraminternalGet Ingram Micro connection
POST /psa/integrations/ingraminternalCreate or update the Ingram Micro connection
DELETE /psa/integrations/ingraminternalDisconnect Ingram Micro
GET /psa/integrations/ingram/cataloginternalSearch the Ingram catalogue
POST /psa/integrations/ingram/painternalIngram price and availability lookup
POST /psa/integrations/ingram/testinternalTest the Ingram connection
GET /psa/integrations/tdsynnexinternalGet TD Synnex connection
POST /psa/integrations/tdsynnexinternalCreate or update the TD Synnex connection
DELETE /psa/integrations/tdsynnexinternalDisconnect TD Synnex
POST /psa/integrations/tdsynnex/painternalTD Synnex price and availability lookup
POST /psa/integrations/tdsynnex/testinternalTest the TD Synnex connection

Bitdefender ​

Bitdefender GravityZone integration (bring-your-own-tenant)

Full schemas and try-it →

EndpointTierWhat it does
GET /clients/{client_id}/bitdefender/toggleinternalGet the per-client Bitdefender billing toggle
PUT /clients/{client_id}/bitdefender/toggleinternalSet the per-client Bitdefender billing toggle
GET /integrations/bitdefenderinternalGet Bitdefender connection status
DELETE /integrations/bitdefenderinternalDisconnect Bitdefender
GET /integrations/bitdefender/clients/{client_id}/endpointsinternalList Bitdefender endpoints for a client
POST /integrations/bitdefender/clients/{client_id}/modulesinternalDeploy Bitdefender modules across a client's endpoints
GET /integrations/bitdefender/companiesinternalList provisioned Bitdefender companies
GET /integrations/bitdefender/companies/{client_id}internalGet the Bitdefender company for one client
GET /integrations/bitdefender/companies/{client_id}/addonsinternalGet a client's Bitdefender add-on toggle states
PUT /integrations/bitdefender/companies/{client_id}/addonsinternalToggle Bitdefender add-ons for a client
POST /integrations/bitdefender/connectinternalConnect Bitdefender GravityZone
GET /integrations/bitdefender/costsinternalList Bitdefender module cost rows
PUT /integrations/bitdefender/costsinternalUpsert a Bitdefender module cost row
DELETE /integrations/bitdefender/costs/{module_key}internalDelete a Bitdefender module cost row
GET /integrations/bitdefender/defaultsinternalGet Bitdefender provisioning defaults
PUT /integrations/bitdefender/defaultsinternalSave Bitdefender provisioning defaults
DELETE /integrations/bitdefender/endpoints/{id}internalRemove a Bitdefender endpoint (uninstall + delete)
GET /integrations/bitdefender/incidents/{incident_id}internalGet one Bitdefender incident
GET /integrations/bitdefender/orphansinternalList orphaned GravityZone endpoints
GET /integrations/bitdefender/policiesinternalList Bitdefender template policies
POST /integrations/bitdefender/provision/{client_id}internalProvision a Bitdefender company for one client
GET /integrations/bitdefender/push/healthinternalGet Bitdefender push delivery stats
POST /integrations/bitdefender/reconcileinternalRun Bitdefender billing reconciliation now
GET /integrations/bitdefender/reportsinternalList Bitdefender reports
GET /integrations/bitdefender/reports/{report_id}/downloadinternalGet Bitdefender report download links
POST /integrations/bitdefender/testinternalTest Bitdefender credentials
GET /integrations/bitdefender/usageinternalList Bitdefender usage snapshots
GET /integrations/bitdefender/usage/clients/{client_id}internalList Bitdefender usage snapshots for one client

Telecom ​

Dial 9 telecom billing (UK carrier integration)

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/billing/dial9/configinternalGet Dial 9 configuration
PUT /psa/billing/dial9/configinternalSave Dial 9 configuration
POST /psa/billing/dial9/invoices/{id}/append-linesinternalAppend Dial 9 telecom lines to a draft invoice
POST /psa/billing/dial9/keypairinternalGenerate a Dial 9 SFTP keypair
GET /psa/billing/dial9/numbersinternalList Dial 9 DID inventory
PATCH /psa/billing/dial9/numbers/{id}internalAssign a Dial 9 number
POST /psa/billing/dial9/peek-host-keyinternalPeek (and optionally pin) the Dial 9 SFTP host key
GET /psa/billing/dial9/quarantineinternalList open CDR quarantine rows
POST /psa/billing/dial9/quarantine/{id}/resolveinternalResolve a CDR quarantine row
POST /psa/billing/dial9/syncinternalTrigger a Dial 9 sync now
GET /psa/billing/dial9/tariffsinternalList Dial 9 tariffs
PATCH /psa/billing/dial9/tariffs/{id}internalSet a Dial 9 tariff markup override
GET /psa/billing/dial9/unitsinternalList Dial 9 units
PATCH /psa/billing/dial9/units/{id}internalAssign a Dial 9 unit to a client

Client Portal ​

End-customer portal (session-bound, not an integration surface)

Full schemas and try-it →

EndpointTierWhat it does
GET /portal/assetsinternalList the caller's assets (portal)
GET /portal/assets/{id}internalGet a single asset (portal)
GET /portal/billing/invoicesinternalList the contact's client invoices (portal)
GET /portal/billing/invoices/{id}internalGet invoice detail (portal)
GET /portal/billing/invoices/{id}/payinternalGet the pay-now URL for an invoice (portal)
GET /portal/billing/invoices/{id}/pdfinternalDownload an invoice PDF (portal)
GET /portal/billing/paymentsinternalList the contact's client payment history (portal)
GET /portal/brandinginternalGet portal branding (contact-facing)
GET /portal/dashboardinternalClient-scoped dashboard summary (portal)
GET /portal/documentsinternalList documents (portal)
POST /portal/documents/confirm-uploadinternalConfirm a presigned document upload (portal)
POST /portal/documents/presigned-uploadinternalPresign a document upload (portal)
DELETE /portal/documents/{id}internalDelete an own-uploaded document (portal)
GET /portal/documents/{id}/downloadinternalGet a presigned download URL for a document (portal)
GET /portal/kb/articlesinternalList or search knowledge base articles (portal)
GET /portal/kb/articles/{id}internalGet a knowledge base article (portal)
GET /portal/kb/categoriesinternalList knowledge base categories (portal)
GET /portal/selfinternalGet own portal profile
PATCH /portal/selfinternalUpdate own portal profile
POST /portal/self/change-passwordinternalChange own portal password
PUT /portal/self/notification-preferencesinternalReplace own notification preferences
GET /portal/ticketsinternalList own tickets (portal)
POST /portal/ticketsinternalCreate a ticket (portal)
GET /portal/tickets/{id}internalGet own ticket detail (portal)
GET /portal/tickets/{id}/attachments/{aid}/downloadinternalDownload a ticket attachment (portal)
POST /portal/tickets/{id}/closeinternalClose own resolved ticket (portal)
POST /portal/tickets/{id}/commentsinternalAdd a comment to own ticket (portal)
GET /public/kb/articlesinternalList or search public KB articles (unauthenticated help centre)
GET /public/kb/articles/{slug}internalGet one public KB article by slug (unauthenticated)
GET /public/kb/categoriesinternalPublic KB category tree (unauthenticated)
GET /public/kb/images/{id}internalServe a KB article image (unauthenticated)
GET /public/portal-brandinginternalPre-auth portal branding by host (public, white-label login)

Portal Branding ​

Tenant portal branding administration

Full schemas and try-it →

EndpointTierWhat it does
GET /settings/portal-brandinginternalGet portal branding settings (MSP admin)
PUT /settings/portal-brandinginternalUpdate portal branding settings (MSP admin)
POST /settings/portal-branding/logointernalPresign a portal logo upload (MSP admin)
DELETE /settings/portal-branding/logointernalClear the portal logo (MSP admin)
GET /settings/portal-domainsinternalList custom portal domains (MSP admin)
POST /settings/portal-domainsinternalAdd a custom portal domain (MSP admin)
GET /settings/portal-domains/{id}internalGet + refresh a custom portal domain (MSP admin)
DELETE /settings/portal-domains/{id}internalRemove a custom portal domain (MSP admin)

Tray ​

System tray app configuration and self-service script runs

Full schemas and try-it →

EndpointTierWhat it does
PUT /agents/{agentID}/tray-enabledinternalToggle the tray app on a single agent
GET /tray-configsinternalList tray configs
POST /tray-configsinternalCreate a tray config
GET /tray-configs/resolve/{agentID}internalResolve the effective tray config for an agent
GET /tray-configs/{configID}/scriptsinternalList self-service scripts in a tray config
POST /tray-configs/{configID}/scriptsinternalAdd a script to a tray config catalogue
GET /tray-configs/{id}internalGet a tray config
PUT /tray-configs/{id}internalUpdate a tray config
DELETE /tray-configs/{id}internalDelete a tray config
GET /tray-notificationsinternalList tray notification history
POST /tray-notificationsinternalSend a tray notification
DELETE /tray-notifications/{id}internalDelete a tray notification record
PUT /tray-policy-scripts/{id}internalUpdate a self-service catalogue entry
DELETE /tray-policy-scripts/{id}internalRemove a self-service catalogue entry
GET /tray-script-runsinternalList tray self-service script runs
POST /tray-script-runs/{id}/approveinternalApprove a pending self-service run
POST /tray-script-runs/{id}/denyinternalDeny a pending self-service run

Virtualization ​

Hypervisor hosts and VM actions

Full schemas and try-it →

EndpointTierWhat it does
GET /virtualization/hostsinternalList virtualization hosts
GET /virtualization/hosts/{id}internalGet a virtualization host
GET /virtualization/hosts/{id}/vmsinternalList VMs on a host
GET /virtualization/vms/{id}internalGet a virtual machine
POST /virtualization/vms/{id}/actioninternalDispatch a VM lifecycle action
GET /virtualization/vms/{id}/statsinternalGet live stats for a VM

Licenses ​

Software licence tracking and assignment

Full schemas and try-it →

EndpointTierWhat it does
GET /clients/{clientID}/licensesstableList licences assigned to a client
GET /licensesstableList software licences
POST /licensesstableCreate a software licence
POST /licenses/importstableImport licences from CSV
GET /licenses/summarystableLicence usage summary
GET /licenses/{licenseID}stableGet a software licence
PUT /licenses/{licenseID}stableUpdate a software licence
DELETE /licenses/{licenseID}stableDelete a software licence
GET /licenses/{licenseID}/assignmentsstableList agent assignments for a licence
POST /licenses/{licenseID}/assignmentsstableAssign an agent to a licence
DELETE /licenses/{licenseID}/assignments/{agentID}stableRemove an agent from a licence
POST /licenses/{licenseID}/matchstableRe-run auto-matching for a licence

Backups ​

Backup endpoint mapping and plans

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentId}/backupsinternalGet backup protection state for an agent
GET /backups/endpointsinternalList MSP360 backup endpoints
PUT /backups/endpoints/{id}/mapinternalMap an MSP360 endpoint to an agent
GET /backups/plansinternalList MSP360 backup plans
GET /integrations/msp360internalGet MSP360 connection status
DELETE /integrations/msp360internalDisconnect MSP360
POST /integrations/msp360/connectinternalConnect MSP360 (validate and store credentials)
PATCH /integrations/msp360/preferencesinternalUpdate MSP360 alert preferences
POST /integrations/msp360/syncinternalTrigger an immediate MSP360 sync

Endpoint Security ​

Per-agent endpoint security state

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{id}/bitdefenderinternalGet Bitdefender state for an agent
POST /agents/{id}/bitdefender/installinternalDispatch a Bitdefender install to an agent
POST /agents/{id}/bitdefender/modulesinternalReconfigure Bitdefender modules on one agent's endpoint

Patches ​

Patch policies, scans and managed updates

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/managed-updatesinternalGet managed-updates state for an agent
PUT /agents/{agentID}/managed-updatesinternalSet the agent-level managed-updates override
POST /agents/{agentID}/managed-updates/reapplyinternalForce re-push of the managed-updates control to an agent
GET /agents/{agentID}/patch-policyinternalGet the patch policy assigned to an agent
PUT /agents/{agentID}/patch-policyinternalAssign or clear the patch policy for an agent
GET /agents/{agentID}/patchesinternalGet patch install history for an agent
GET /agents/{agentID}/patches/availableinternalList cached available patches for an agent
POST /agents/{agentID}/patches/installinternalQueue patch installation on an agent
GET /agents/{agentID}/patches/install-statusinternalGet progress of the latest patch install job
POST /agents/{agentID}/patches/scaninternalRun a live patch scan on an agent
GET /clients/{clientID}/managed-updatesinternalGet managed-updates state for a client
PUT /clients/{clientID}/managed-updatesinternalSet the client-level managed-updates override
GET /clients/{clientID}/patch-policyinternalGet the patch policy assigned to a client
PUT /clients/{clientID}/patch-policyinternalAssign or clear the patch policy for a client
GET /organization/managed-updatesinternalGet org-wide managed-updates state and compliance summary
PUT /organization/managed-updatesinternalSet the org-wide managed-updates default
GET /organization/patch-auto-installinternalGet the org's auto-install safety valves
PUT /organization/patch-auto-installinternalUpdate the org's auto-install safety valves
GET /organization/patch-policyinternalGet the org-wide default patch policy
PUT /organization/patch-policyinternalAssign or clear the org-wide default patch policy
GET /patch-dispatch-loginternalList recent patch-dispatcher decisions
GET /patch-policiesinternalList patch policies
POST /patch-policiesinternalCreate a patch policy
GET /patch-policies/{id}internalGet a patch policy
PUT /patch-policies/{id}internalUpdate a patch policy
DELETE /patch-policies/{id}internalDelete a patch policy
GET /sites/{siteID}/managed-updatesinternalGet managed-updates state for a site
PUT /sites/{siteID}/managed-updatesinternalSet the site-level managed-updates override
GET /sites/{siteID}/patch-policyinternalGet the patch policy assigned to a site
PUT /sites/{siteID}/patch-policyinternalAssign or clear the patch policy for a site

Agent Operations ​

Live agent operations - processes, services, registry, power

Full schemas and try-it →

EndpointTierWhat it does
HEAD /agent-versions/current/downloadinternalProbe the current agent binary download (public)
POST /agents/trigger-update-allinternalTrigger a self-update check on all online agents
GET /agents/{agentID}/bitlocker-keysinternalReveal stored BitLocker recovery keys for an agent
GET /agents/{agentID}/eventloginternalQuery event logs on an agent (live)
GET /agents/{agentID}/processesinternalList running processes on an agent (live)
POST /agents/{agentID}/processes/{pid}/killinternalKill a process on an agent
GET /agents/{agentID}/registryinternalBrowse a Windows registry path on an agent
POST /agents/{agentID}/registryinternalCreate a registry key or value on an agent
PUT /agents/{agentID}/registryinternalModify a registry value on an agent
DELETE /agents/{agentID}/registryinternalDelete a registry key or value on an agent
GET /agents/{agentID}/servicesinternalList services on an agent (live)
POST /agents/{agentID}/services/{name}/actioninternalStart, stop, or restart a service on an agent
POST /agents/{agentID}/trigger-updateinternalTrigger a self-update check on a single agent
POST /agents/{id}/scheduled-rebootinternalSchedule a delayed reboot on an agent
POST /agents/{id}/shutdowninternalShut down an agent's endpoint
POST /agents/{id}/uninstallinternalUninstall an agent and delete its record
GET /settings/agent-powerinternalGet agent power action messages
PUT /settings/agent-powerinternalUpdate agent power action messages

Terminal ​

Remote terminal WebSocket

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/terminalinternalOpen a live-terminal WebSocket relay to an agent

Remote Desktop ​

Remote desktop and OpsMerge Connect configuration

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/rustdeskinternalGet RustDesk connection credentials for an agent
GET /agents/{agentID}/rustdesk-configinternalResolve the effective RustDesk config for an agent
GET /rustdesk-config/{scopeType}/{scopeID}internalGet the RustDesk config row for a scope
PUT /rustdesk-config/{scopeType}/{scopeID}internalUpsert the RustDesk config for a scope
DELETE /rustdesk-config/{scopeType}/{scopeID}internalDelete the RustDesk config row for a scope
GET /settings/rustdeskinternalGet RustDesk server settings and org approval defaults
PUT /settings/rustdeskinternalUpdate the org's RustDesk approval defaults

API Keys ​

API key management and scope catalogue (session-only)

Full schemas and try-it →

EndpointTierWhat it does
GET /api-keysstableList API keys
POST /api-keysstableCreate an API key
GET /api-keys/scopesstableList the API key scope catalogue
DELETE /api-keys/{id}stableRevoke an API key

AI ​

AI-assisted ticket features

Full schemas and try-it →

EndpointTierWhat it does
GET /ai/assistant/catalogueinternalList the diagnostic catalogue for a platform
GET /ai/conversationsinternalList AI assistant conversations for a subject
POST /ai/conversationsinternalStart an AI assistant conversation
GET /ai/conversations/{id}internalGet a conversation transcript
POST /ai/conversations/{id}/approvals/{aid}internalApprove or reject a proposed command
POST /ai/conversations/{id}/turnsinternalSend a message (start a turn)
GET /ai/conversations/{id}/turns/{tid}internalGet one turn (poll fallback for the stream)
POST /ai/conversations/{id}/turns/{tid}/applyinternalApply a policy proposal
GET /ai/conversations/{id}/turns/{tid}/streaminternalStream a turn's progress (SSE)
POST /ai/scriptsinternalGenerate or improve a script with AI
POST /psa/ai/tickets/{ticket_id}/draft-replyinternalGenerate an AI draft reply
POST /psa/ai/tickets/{ticket_id}/rewrite-replyinternalProofread and professionalise a typed reply
POST /psa/ai/tickets/{ticket_id}/sentimentinternalScore ticket sentiment
POST /psa/ai/tickets/{ticket_id}/suggest-categoryinternalSuggest ticket categories (AI)
POST /psa/ai/tickets/{ticket_id}/summaryinternalSummarise a ticket (AI)
GET /settings/aiinternalGet AI script-generation settings
PUT /settings/aiinternalUpdate AI script-generation settings

Chat ​

Technician-to-user chat sessions

Full schemas and try-it →

EndpointTierWhat it does
POST /agents/{agentID}/chat-inviteinternalInvite an end user to chat

Account ​

Own profile, preferences and auth tickets

Full schemas and try-it →

EndpointTierWhat it does
GET /auth/meinternalGet the authenticated user's profile
POST /bug-reportsinternalSubmit a bug report
GET /dashboard/summaryinternalGet the dashboard summary
GET /support/chatwootinternalBootstrap the support chat widget for the signed-in user
GET /users/meinternalGet the current user's profile
PATCH /users/meinternalUpdate the current user
GET /users/me/table-prefs/{key}internalGet table layout preferences
PUT /users/me/table-prefs/{key}internalSave table layout preferences

Platform Billing ​

OpsMerge subscription management (denied to API keys)

Full schemas and try-it →

EndpointTierWhat it does
POST /billing/apply-codeinternalApply a promotion code to the org's existing subscription
GET /billing/capsinternalGet client/agent counts and caps for the org
GET /billing/subscriptioninternalGet the org's own OpsMerge subscription summary

Webhooks (Inbound) ​

Third-party webhook receivers with per-provider authentication

Full schemas and try-it →

EndpointTierWhat it does
POST /webhooks/trigger/{id}stableInbound trigger webhook (webhook_inbound)
GET /webhooks/whatsapp/{token}internalWhatsApp webhook subscription handshake
POST /webhooks/whatsapp/{token}internalWhatsApp inbound message + delivery-status webhook
POST /xero/webhookinternalXero webhook

ThreatDown ​

ThreatDown/Malwarebytes OneView integration

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{id}/threatdowninternalGet the agent's ThreatDown endpoint state
POST /agents/{id}/threatdown/cleanupinternalClean up a broken ThreatDown install on an endpoint
GET /agents/{id}/threatdown/detectionsinternalList ThreatDown detections for an agent
POST /agents/{id}/threatdown/detections/{detectionID}/ackinternalAcknowledge a ThreatDown detection
POST /agents/{id}/threatdown/installinternalInstall the ThreatDown agent on an endpoint
GET /agents/{id}/threatdown/jobs/{jobID}internalPoll the status of a ThreatDown scan job
GET /clients/{id}/threatdowninternalGet the client's ThreatDown configuration
PUT /clients/{id}/threatdowninternalUpdate the client's ThreatDown configuration
POST /clients/{id}/threatdown/create-siteinternalCreate a OneView site for the client
POST /clients/{id}/threatdown/matchinternalAuto-match the client to a OneView site by name
GET /clients/{id}/threatdown/subscriptioninternalGet the client's OneView site subscription
POST /clients/{id}/threatdown/subscriptioninternalAssign an initial subscription to the client's site
PUT /clients/{id}/threatdown/subscriptioninternalReplace the full subscription list on the client's site
POST /clients/{id}/threatdown/subscription/extend-trialinternalExtend the trial subscription on the client's site
GET /settings/threatdowninternalGet org ThreatDown (OneView) settings
PUT /settings/threatdowninternalUpdate org ThreatDown settings
POST /threatdown/detections/ack-bulkinternalAcknowledge multiple ThreatDown detections
GET /threatdown/detections/unackedinternalList unacknowledged ThreatDown detections (org-wide)
PUT /threatdown/endpoints/{id}/linkinternalLink or unlink a ThreatDown endpoint to an RMM agent
POST /threatdown/rematch-unmatchedinternalRe-run agent matching for unmatched ThreatDown endpoints
POST /threatdown/scan/{agentID}internalTrigger a ThreatDown threat scan on an agent
GET /threatdown/sitesinternalList OneView sites available to the org
GET /threatdown/subscriptions/availabilityinternalGet OneView subscription availability
GET /threatdown/subscriptions/reportinternalGet the OneView subscriptions usage report
POST /threatdown/syncinternalRun a full ThreatDown sync now
GET /threatdown/unmatchedinternalList ThreatDown endpoints with no linked agent

SMS ​

VooDoo SMS integration (UK organisations only, bring-your-own API key)

Full schemas and try-it →

EndpointTierWhat it does
GET /integrations/voodoosmsinternalGet VooDoo SMS connection status and settings
DELETE /integrations/voodoosmsinternalDisconnect VooDoo SMS
POST /integrations/voodoosms/connectinternalConnect VooDoo SMS (validate and store the API key)
GET /integrations/voodoosms/messagesinternalList the SMS audit log
POST /integrations/voodoosms/sendinternalSend an ad-hoc SMS to contacts and/or numbers
PUT /integrations/voodoosms/settingsinternalUpdate VooDoo SMS settings
POST /integrations/voodoosms/testinternalSend a test SMS

WhatsApp ​

WhatsApp integration (Cloud API, bring-your-own per tenant); Phase 1 outbound alerts

Full schemas and try-it →

EndpointTierWhat it does
GET /integrations/whatsappinternalGet WhatsApp connection status and settings
DELETE /integrations/whatsappinternalDisconnect WhatsApp
POST /integrations/whatsapp/connectinternalConnect WhatsApp (validate and store the credentials)
GET /integrations/whatsapp/conversations/{ticketId}/windowinternalGet the WhatsApp reply window state for a ticket
GET /integrations/whatsapp/messagesinternalList WhatsApp message audit log
PATCH /integrations/whatsapp/settingsinternalUpdate WhatsApp alert channel settings
POST /integrations/whatsapp/testinternalSend a test WhatsApp template

Triggers ​

Event trigger configuration

Full schemas and try-it →

EndpointTierWhat it does
GET /triggersinternalList automation triggers
POST /triggersinternalCreate a trigger
GET /triggers/{id}internalGet a trigger
PUT /triggers/{id}internalUpdate a trigger
DELETE /triggers/{id}internalDelete a trigger
GET /triggers/{id}/historyinternalList a trigger's execution history
POST /triggers/{id}/testinternalTest-fire a trigger

Compliance ​

Compliance scores and retention policies

Full schemas and try-it →

EndpointTierWhat it does
GET /compliance/agents/{agentID}/scoreinternalGet the compliance score for one agent
GET /compliance/clients/{clientID}/scoreinternalGet the aggregate compliance score for a client
GET /compliance/scoreinternalGet compliance scores for every client in the org
GET /retention-policiesinternalList data retention policies
PUT /retention-policies/{id}internalUpdate a retention policy

Anomaly Detection ​

Anomaly detection findings and config

Full schemas and try-it →

EndpointTierWhat it does
GET /anomaly/eventsinternalList anomaly events
GET /anomaly/settingsinternalList anomaly detection settings
PUT /anomaly/settings/{checkType}internalUpdate anomaly settings for one check type
GET /anomaly/timelineinternalGet the anomaly alert timeline histogram

Platform Admin ​

Platform-operator endpoints (not tenant-facing)

Full schemas and try-it →

EndpointTierWhat it does
GET /admin/boe-base-ratesinternalList Bank of England base rates
POST /admin/boe-base-ratesinternalUpsert a Bank of England base rate
DELETE /admin/boe-base-ratesinternalDelete a Bank of England base rate

1Password ​

Full schemas and try-it →

EndpointTierWhat it does
GET /integrations/onepasswordinternal1Password connection state
PUT /integrations/onepasswordinternalConnect 1Password (save service-account token)
DELETE /integrations/onepasswordinternalDisconnect 1Password
GET /integrations/onepassword/browse/vaultsinternalList all vaults the token can read, for the Credentials browse area
GET /integrations/onepassword/browse/vaults/{vaultId}/itemsinternalList secret-free item summaries for any vault the token can read
GET /integrations/onepassword/clients/{id}/itemsinternalList a client's 1Password item titles (secret-free)
GET /integrations/onepassword/mappingsinternalList vault-to-client mappings
PUT /integrations/onepassword/mappingsinternalReplace vault-to-client mappings
POST /integrations/onepassword/revealinternalReveal one item's fields (live fetch, audit-logged)
POST /integrations/onepassword/step-upinternalRe-verify TOTP to unlock credential reveal for this session
GET /integrations/onepassword/vaultsinternalList vaults visible to the service account (live)

Applications ​

Full schemas and try-it →

EndpointTierWhat it does
GET /agents/{agentID}/appsinternalList application install/upgrade history for an agent
POST /agents/{agentID}/apps/installinternalInstall applications on an agent
GET /agents/{agentID}/apps/install-statusinternalGet the latest app install/upgrade progress
GET /agents/{agentID}/apps/inventoryinternalList an agent's winget package inventory
POST /agents/{agentID}/apps/inventory/scaninternalScan an agent's winget package inventory
POST /agents/{agentID}/apps/uninstallinternalUninstall applications on an agent
POST /agents/{agentID}/apps/upgradeinternalUpgrade applications on an agent
GET /apps/catalog/searchinternalSearch the winget package catalog

Secure Share ​

Full schemas and try-it →

EndpointTierWhat it does
GET /secure-sharesbetaList the org's secure shares
POST /secure-sharesbetaMint a burn-after-read secret link
GET /secure-shares/public/{token}betaPeek a share's status (no burn)
POST /secure-shares/public/{token}/revealbetaReveal a share (consumes one view)
GET /secure-shares/settingsbetaGet the org's Secure Share defaults
PUT /secure-shares/settingsbetaUpdate the org's Secure Share defaults
DELETE /secure-shares/{id}betaRevoke (burn) a secure share now

Ticket Conversations ​

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/tickets/{id}/conversationsinternalList a ticket's third-party conversations
POST /psa/tickets/{id}/conversationsinternalCreate a third-party conversation on a ticket
POST /psa/tickets/{id}/conversations/{convId}/messagesinternalPost a message to a third-party conversation

Ticket Macros ​

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/ticket_macrosinternalList ticket macros
POST /psa/ticket_macrosinternalCreate a ticket macro
PATCH /psa/ticket_macros/{id}internalUpdate a ticket macro
DELETE /psa/ticket_macros/{id}internalDelete a ticket macro
POST /psa/tickets/{id}/macros/{macroId}/runinternalRun a ticket macro against a ticket

Ticket Schedules ​

Full schemas and try-it →

EndpointTierWhat it does
GET /psa/ticket_schedulesinternalList recurring-ticket schedules
POST /psa/ticket_schedulesinternalCreate a recurring-ticket schedule
PATCH /psa/ticket_schedules/{id}internalUpdate a recurring-ticket schedule
DELETE /psa/ticket_schedules/{id}internalDelete a recurring-ticket schedule

Wallboards ​

Full schemas and try-it →

EndpointTierWhat it does
GET /wallboard/public/{token}betaKiosk display fetch (display-token auth)
GET /wallboardsbetaList wallboards
POST /wallboardsbetaCreate a wallboard
GET /wallboards/{id}betaGet a wallboard
PUT /wallboards/{id}betaUpdate a wallboard
DELETE /wallboards/{id}betaDelete a wallboard
GET /wallboards/{id}/databetaGet a wallboard with its live snapshot
GET /wallboards/{id}/tokensbetaList display tokens for a wallboard
POST /wallboards/{id}/tokensbetaMint a display token
POST /wallboards/{id}/tokens/{tokenID}/revokebetaRevoke a display token

Lovingly Created in the UK
OpsMerge is a product of Brindleford Technologies Ltd, company number 16871436, registered in England and Wales.