Skip to main content

Homotechsual Discord HaloPSA Community Discord HaloITSM Admin Hangout Discord GitHub contributors Azure DevOps Pipeline Status Azure DevOps Code Coverage PowerShell Gallery License GitHub Sponsors Stable Release Preview Release

PowerShell 7.4

This module is currently incompatible with PowerShell 7.4. Please use PowerShell 7.3.10 for now. Halo are aware of the issue and are investigating.


This module provides a PowerShell interface to the Halo API. It's designed to for PowerShell developers to build their own PowerShell scripts and modules to interact with Halo. It's well tested for Halo Professional Services Automation (PSA) but should work with Halo IT Service Management (ITSM), Halo Service Desk and Halo Customer Relationship Management (CRM).


This module is published to the PowerShell Gallery. You can install it using the following command:

Install-Module -Name HaloAPI

From time-to-time, preview releases will be published to the PowerShell Gallery. These are not considered stable and should not be used in production. You can install preview releases using the following command:

Install-Module -Name HaloAPI -AllowPrerelease

Getting Started

The first and probably most important requirement for this module is getting it connected to your Halo instance.

Creating an application in Halo

  1. In your Halo instance head to Configuration > Integrations > Halo PSA API
    This might be Halo Service Desk API or Halo ITSM API.

  2. Select View Applications
    All going well you should be at config/integrations/api/applications.

  3. Select New to add a new API application.

  4. Enter the Application Name.
    For example HaloAPI PS Module.

  5. Make sure you check the Active box.

  6. Set the Authentication Method to Client ID and Secret (Services).

  7. Store the Client ID and Client Secret securely.

  8. Set the Login Type and Agent to login as appropriately.
    This setting determines who appears to be responsible for these API calls. You may want to create a dedicated agent user for this purpose.

  9. Select the Permissions tab.

  10. Grant the application the permissions required for your purposes.
    You should limit the API to only the permissions it needs to do the job you're scripting for.

Known Issues

Not all Halo's API endpoints have cmdlets but all documented endpoints exist in this module, along with many other undocumented endpoints. Want an endpoint / functionality implemented? Log an issue on GitHub and if possible someone might add it, or you can implement it yourself.

For little used or one-off endpoints you can call Invoke-HaloRequest directly to reuse the same authentication token/connection and run arbitrary requests. See the cmdlet documentation for more information.