swagger: '2.0' info: title: Huntress API Reference Accounts Reseller API description: "\n

© Huntress - All rights reserved

\n

Introduction

\n\n

Webhook event payloads are available via the dropdown menu above the search bar on this page.

\n\n

The Huntress API follows a RESTful pattern. Requests are made via resource-oriented URLs as described in this document and API responses are formatted as JSON data.

\n\n

A command-line client is also available for interacting with the API from your terminal. It requires Ruby 3.1+ and has no external dependencies. You can download it from https://api.huntress.io/api/huntress-cli.

\n\n

Alternatively, if you'd prefer to use an MCP, we have instructions for setting up the Huntress MCP. Note that the MCP is read-only, so this is a good option if you're looking for a safer way to access your Huntress data from an LLM.

\n\n

If you'd like to request additional API endpoints or capabilities, submit feedback through our feedback portal.

\n\n

API Overview

\n
\n\t

Authentication

\n
$KEY = echo \"$HUNTRESS_PUBLIC_KEY:$HUNTRESS_PRIVATE_KEY\" | base64\ncurl \"https://api.huntress.io/v1/agents\" \\ -H \"Authorization: Basic $KEY\"\n
\n
\n

To begin, generate your API Key at <your_account_subdomain>.huntress.io. Once you are logged into your account on the Huntress site, check the dropdown menu at the top-right corner of the site header. You should see API Credentials among the options if your account has been granted access to the Huntress API. Click on the option to continue to the API Key generation page.

\n\n

Once on the API Key generation page, click on the green Setup button to begin the process to generate your API Key. You will be redirected to a page where you will be prompted to generate your API Key. Click the Generate button to generate a public and private key pair for Huntress API access. The inputs on the page will be filled in with your access credentials once you have done so.

\n\n

Your API Private Key will only be visible at this stage of API Key generation. Be sure to save the value provided somewhere secure, as once you navigate away from this page, this value will no longer be accessible and you must regenerate your API credentials if your secret key value is lost.

\n\n

If necessary, you can repeat the process to regenerate your API credentials with a new API Key and API Secret Key on the same API Key generation page, at <your_account_subdomain>.huntress.io/account/api_credentials.

\n\n

The Huntress API implements basic access authentication. Once you have your API Key and API Secret Key, provide these values as the result of a Base64 encoded string in every request to the Huntress API via the Authorization header. Your request header should look something like Authorization: Basic [Base64Encode(<your_api_key>:<your_api_secret_key>)]. Please refer to the code snippets for further examples.

\n
\n
\n\t

Rate Limits

\n

Every Huntress API account is rate limited to 60 requests per minute, on a sliding window. This means that no more than 60 requests can be made within a 60 second time interval between the first request and the last request.

\n\n

For example, if request 1 is made at T0, request 2 is made at T5, and requests 3 through 60 are made at T10, making request 61 at T55 would result in a 429 error response. Making request 61 at T61 would succeed, however making request 62 at T61 would fail, at least until the time has passed T65, corresponding to a minute after request 2 was made.

\n
\n
\n\t

HTTP Response Codes

\n

Huntress follows HTTP standards when delivering responses: a 2xx response is a success, a 4xx response indicates an issue with the client request, and a 5xx response indicates an issue with Huntress servers.\n
\n
\nSpecific error codes are detailed in the following table:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Error Status CodeDetails
400There is an unexpected value in the API request being made.
401Your request could not be authenticated. Check that your API key is properly formatted and included in the Authorization header.
404The requested resource is unavailable: either it doesn't exist, or your account does not hold correct permissions to access it.
429You have made too many requests within the rate limit timeframe. See the previous section on rate_limits for details.
500

An error has occurred within Huntress servers.

You could retry the request, but if you encounter continued errors, please contact Support with details of your error. If all traffic from Huntress is resulting in 500 responses, please check our Huntress Status Page.

\n
\n
\n\t

Pagination

\n

Certain Huntress API endpoints utilize a page_token and limit parameter to specify a window location and size, respectively, to the resources currently being requested.\n

\nEach API request will also return a pagination object with details about your current pagination state based on the parameters provided. The pagination object contains:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KeyTypeDescription
next_page_tokenstringThe token used to request the next page in paginated results. If no page token is included, the first page contains all results.
next_page_urlstringURL containing the next page and the limit provided in the original API request, to be used to continue sequentially accessing resources. Only displays when another page can be accessed.
\n
\n

Following is a formatted example of the pagination object in an API response:
\n

\n
\n\"pagination\": {\n  \"next_page_url\": \"https://api.huntress.io/v1/agents?page_token=MjAyMi0wMy0wMVQxODo1NDoyNFo&limit=10\",\n  \"next_page_token\": \"MjAyMi0wMy0wMVQxODo1NDoyNFo\"\n}
\n
\n
\n
\n\t

Request and Response Format

\n\t
\n\t\t

Request

\n\t
\n
\ncurl \"https://api.huntress.io/v1/agents?organization_id=1&page_token=MjAyMi0wMy0wMVQxODo1NDoyNFo\" -H \"Authorization: Basic <Your B64 encoded hash>\"
\n\t

The base URL for API requests is api.huntress.io/v1/, followed by the resource requested. Resources can be requested either singularly or as a list, which correspond to /v1/<resources>/:id or /v1/<resources> respectively, with the exception of the /v1/account and /v1/actor endpoints, which only returns the account associated with the API credentials provided.

\n\t

As an example, api.huntress.io/v1/agents would return a list of agents, while api.huntress.io/v1/agents/1 would return a singular agent with ID: 1.

\n\t

Parameters are provided to the API through a query string. As an example, providing the organization_id filter as a parameter to the /v1/agents endpoint would look like api.huntress/io/v1/agents?organization_id=1. Accessing a sequential page with the same filter active would look like api.huntress.io/v1/agents?organization_id=1&page_token=MjAyMi0wMy0wMVQxODo1NDoyNFo.

\n\t
\n\t
\n\t\t

Response

\n\t

The Huntress API responds with a JSON object containing requested resources if the request is valid and authorized.

\n\t

Singular Case

\n\t
\n\t
{\n  \"report\": { ... }\n}\n
\n\t

In the case of accessing a singular resource, the JSON object in question will contain one key that maps the singular resource to the singular representation of the resource name. As an example, if you were to request api.huntress.io/v1/reports/1, the JSON response would contain a single key report that maps to the report with ID: 1.

\n\t

Multiple Case

\n
{\n  \"reports\": [ ... ],\n  \"pagination\": { ... }\n}\n
\n\t

When accessing a list of resources, the JSON response contains two keys at the root level. The first key is the plural representation of that resource. The second is a pagination key that represents the current state of pagination based on parameters provided in the original request. As an example, a request to api.huntress.io/v1/reports returns a JSON object with the keys reports and pagination at its root level. Further details on the fields within the pagination object can be seen at the relevant section.

\n\t
\n
\n" version: 1.0.0 host: api.huntress.io schemes: - https produces: - application/json security: - basic: - basic_auth tags: - name: Reseller description: Operations for Reseller-level API credentials. These are mostly the same endpoints available in the rest of the API. However, the account ID is included in the URL, so that you can specify which account's resources you want to access. paths: /v1/reseller/invoices: get: summary: List Reseller Invoices description: 'Shows Invoices associated with the current reseller. **Note:** To see the details of a given invoice, you will probably want to also fetch the associated Account Usage Line Items and Organization Usage Line Items. **Note:** This endpoint will also return a `pagination` key on the root level. Please refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information. ' produces: - application/json parameters: - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: status description: Filter by status. One of open, paid, failed, partial_refund, full_refund, draft, voided, processing type: string enum: - open - paid - failed - partial_refund - full_refund - draft - voided - processing required: false responses: '200': description: List Reseller Invoices schema: type: object properties: invoices: type: array items: $ref: '#/definitions/Invoice' pagination: $ref: '#/definitions/Pagination' required: - invoices - pagination '400': description: Invalid query parameters '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Invoice' tags: - Reseller operationId: getV1ResellerInvoices /v1/reseller/invoices/{id}: get: summary: Get Reseller Invoice description: 'Shows a specific Reseller Invoice associated with the current reseller. Note: To see the details of this invoice, you will probably want to also fetch the associated Account Usage Line Items and Organization Usage Line Items. ' produces: - application/json parameters: - in: path name: id type: integer format: int32 required: true responses: '200': description: Get Reseller Invoice schema: type: object properties: invoice: $ref: '#/definitions/Invoice' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Invoice' '404': description: Invoice not found tags: - Reseller operationId: getV1ResellerInvoicesId /v1/reseller/invoices/{id}/account_usage_line_items: get: summary: List Account Usage Line Items description: "Shows a list of Account Usage Line Items.\n\nThis list provides a detailed breakdown of product usage per account from a given invoice.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false responses: '200': description: List Account Usage Line Items schema: type: object properties: account_usage_line_items: type: array items: $ref: '#/definitions/AccountUsageLineItem' pagination: $ref: '#/definitions/Pagination' required: - account_usage_line_items - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/AccountUsageLineItem' tags: - Reseller operationId: getV1ResellerInvoicesIdAccountUsageLineItems /v1/reseller/invoices/{id}/organization_usage_line_items: get: summary: List Organization Usage Line Items description: "Shows a list of Organization Usage Line Items.\n\nThis list provides a detailed breakdown of product usage per organization from a given invoice.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false responses: '200': description: List Organization Usage Line Items schema: type: object properties: organization_usage_line_items: type: array items: $ref: '#/definitions/OrganizationUsageLineItem' pagination: $ref: '#/definitions/Pagination' required: - organization_usage_line_items - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/OrganizationUsageLineItem' tags: - Reseller operationId: getV1ResellerInvoicesIdOrganizationUsageLineItems /v1/reseller/subscriptions: get: summary: List Reseller Subscriptions description: 'Shows subscriptions associated with the current reseller''s managed accounts. **Note:** This endpoint will also return a `pagination` key on the root level. Please refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information. ' produces: - application/json parameters: - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - status - minimum - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: product description: Filter by product type type: string enum: - edr - ispm - itdr - sat - siem required: false - in: query name: status description: Filter by status type: string enum: - draft - approved - accepted - active - completed required: false responses: '200': description: List Reseller Subscriptions schema: type: object properties: subscriptions: type: array items: $ref: '#/definitions/Subscription' pagination: $ref: '#/definitions/Pagination' required: - subscriptions - pagination '400': description: Invalid query parameters '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Subscription' tags: - Reseller operationId: getV1ResellerSubscriptions post: summary: Create Reseller Subscription description: 'Creates a subscription for a product on a reseller-managed account. **Note:** This endpoint only allows the creation of subscriptions that use the default terms, conditions, and pricing. Please contact your account admin for any terms that are not covered by our standard API. ' produces: - application/json consumes: - application/json parameters: - name: SubscriptionCreationParameters in: body required: true schema: $ref: '#/definitions/SubscriptionCreationParameters' responses: '201': description: Create Reseller Subscription schema: type: object properties: subscription: $ref: '#/definitions/Subscription' '400': description: Invalid parameters '404': description: Record not found (likely the account) '422': description: Could not create subscription tags: - Reseller operationId: SubscriptionCreationParameters /v1/reseller/subscriptions/{id}: get: summary: Get Reseller Subscription description: Shows details on a single subscription associated with the current reseller's managed accounts. produces: - application/json parameters: - in: path name: id type: integer format: int32 required: true responses: '200': description: Get Reseller Subscription schema: type: object properties: subscription: $ref: '#/definitions/Subscription' '400': description: Something about the request is malformed. '404': description: Record not found. tags: - Reseller operationId: getV1ResellerSubscriptionsId patch: summary: Update Reseller Subscription description: 'Updates a subscription associated with the current reseller''s managed accounts. For **approved** subscriptions: updates minimum, billing_interval, and purchase_order. For **active** subscriptions: toggles `auto_renew` and/or adds units via `additional_units` (with optional `purchase_order`). ' produces: - application/json consumes: - application/json parameters: - in: path name: id type: integer format: int32 required: true - name: SubscriptionUpdateParameters in: body required: true schema: $ref: '#/definitions/SubscriptionUpdateParameters' responses: '200': description: Update Reseller Subscription schema: type: object properties: subscription: $ref: '#/definitions/Subscription' '400': description: Something about the request is malformed. '404': description: Record not found. '409': description: Subscription is not in a valid status for this update. '422': description: Could not update subscription. tags: - Reseller operationId: SubscriptionUpdateParameters /v1/reseller/subscriptions/{id}/upgrade: post: summary: Upgrade Reseller Subscription description: 'Upgrades an active subscription by creating a new subscription with a higher minimum and/or price tier, replacing the existing one. This is modeled as a sub-resource because the operation creates a new subscription record rather than modifying the existing one in place. ' produces: - application/json consumes: - application/json parameters: - in: path name: id type: integer format: int32 required: true - name: SubscriptionUpgradeParameters in: body required: true schema: $ref: '#/definitions/SubscriptionUpgradeParameters' responses: '201': description: Upgrade Reseller Subscription schema: type: object properties: subscription: $ref: '#/definitions/Subscription' '400': description: Something about the request is malformed. '404': description: Record not found. '422': description: Could not upgrade subscription. tags: - Reseller operationId: SubscriptionUpgradeParameters /v1/accounts: get: summary: List Accounts description: "Shows all accounts associated with your API credentials.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - name - subdomain - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: status description: Filter by status. type: string enum: - enabled - disabled required: false - in: query name: name description: Filter by account name. type: string required: false - in: query name: subdomain description: Filter by subdomain. type: string required: false responses: '200': description: List Accounts schema: type: object properties: accounts: type: array items: $ref: '#/definitions/Account' pagination: $ref: '#/definitions/Pagination' required: - accounts - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Account' tags: - Reseller operationId: getV1Accounts post: summary: Create Account description: Create a new account under the reseller associated with the supplied API credential. produces: - application/json consumes: - application/json parameters: - name: AccountCreationParameters in: body required: true schema: $ref: '#/definitions/AccountCreationParameters' responses: '201': description: Create Account schema: type: object properties: account: $ref: '#/definitions/Account' '400': description: Invalid account creation parameters '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Account' '409': description: Something about the state of this reseller prevents this account from being created '422': description: Could not create account tags: - Reseller operationId: AccountCreationParameters /v1/accounts/{account_id}: get: summary: Get Specific Account description: Shows the details of a specific account which your API credentials grant access to. produces: - application/json parameters: - in: path name: account_id description: Account ID for an account associated with your API credentials type: integer format: int32 required: true responses: '200': description: Get Specific Account schema: type: object properties: account: $ref: '#/definitions/Account' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Account' tags: - Reseller operationId: getV1AccountsAccountId patch: summary: Update Account description: Updates the details of a specific account. produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - name: AccountUpdateParameters in: body required: true schema: $ref: '#/definitions/AccountUpdateParameters' responses: '200': description: Update Account schema: type: object properties: account: $ref: '#/definitions/Account' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Account' '422': description: Invalid parameters or unable to update model tags: - Reseller operationId: AccountUpdateParameters delete: summary: Permanently Disable an Account description: "Marks the account as disabled and will be deleted after 10 days from initial request.\n\n**Please Note:** This is irreversible and will uninstall all of the agents for this account, as well as completing other similar operations. \n[Contact support](https://support.huntress.io/hc/en-us) if this was done unintentionally.\n" produces: - application/json parameters: - in: path name: account_id description: Account ID for deletion. type: integer format: int32 required: true responses: '202': description: Permanently Disable an Account schema: type: object properties: account: $ref: '#/definitions/Account' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Account' '422': description: Account failed to be disabled. tags: - Reseller operationId: deleteV1AccountsAccountId /v1/accounts/{account_id}/agents: get: summary: List Agents description: "Shows Agents associated with your account.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: organization_id description: Filter by organization ID within Huntress account type: integer format: int32 required: false - in: query name: platform description: Filter by platform. One of windows, darwin, linux type: string enum: - windows - darwin - linux required: false - in: query name: hostname description: Filter by hostname. type: string required: false - in: query name: os description: Filter by operating system. type: string required: false - in: query name: version description: Filter by agent version. type: string required: false responses: '200': description: List Agents schema: type: object properties: agents: type: array items: $ref: '#/definitions/Agent' pagination: $ref: '#/definitions/Pagination' required: - agents - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Agent' tags: - Reseller operationId: getV1AccountsAccountIdAgents /v1/accounts/{account_id}/agents/{id}: get: summary: Get Agent description: Shows details on a single Agent associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true responses: '200': description: Get Agent schema: type: object properties: agent: $ref: '#/definitions/Agent' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Agent' tags: - Reseller operationId: getV1AccountsAccountIdAgentsId patch: summary: Update Agent description: 'Updates the editable attributes of a single Agent. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint.** ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true - name: UpdateAgent in: body required: true schema: $ref: '#/definitions/UpdateAgent' responses: '200': description: Update Agent schema: type: object properties: agent: $ref: '#/definitions/Agent' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Agent' '404': description: Agent not found. schema: $ref: '#/definitions/Agent' '409': description: Agent does not support tamper protection. schema: $ref: '#/definitions/Agent' tags: - Reseller operationId: UpdateAgent delete: summary: Uninstall Agent description: 'Schedules a remote uninstall of a single Agent, removing the Huntress agent from the host. Uninstall is asynchronous: the host is tasked to uninstall on its next callback, and the Agent is immediately removed from your account, so subsequent requests for it return 404. This endpoint requires an API key with permission to uninstall agents. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint.** ' produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true responses: '204': description: Agent scheduled for uninstall. '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Agent' '404': description: Agent not found. schema: $ref: '#/definitions/Agent' tags: - Reseller operationId: UninstallAgent /v1/accounts/{account_id}/agents/{id}/isolation: post: summary: Isolate Agent description: 'Schedules host isolation for a single Agent, cutting the host off from the network while leaving Huntress connectivity intact. Isolation is asynchronous: a successful request returns the Agent with a `firewall_status` of "Pending Isolation" until the endpoint confirms isolation. This endpoint requires an API key with permission to isolate agents. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint.** ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true - name: IsolateAgent in: body required: true schema: $ref: '#/definitions/IsolateAgent' responses: '201': description: Isolate Agent schema: type: object properties: agent: $ref: '#/definitions/Agent' '403': description: There was an issue with your API credential or permissions. '404': description: Agent not found. '409': description: Agent does not support host isolation, or isolation could not be scheduled. tags: - Reseller operationId: IsolateAgent delete: summary: Release Agent Isolation description: 'Schedules release of host isolation for a single Agent, restoring the host''s network connectivity. Release is asynchronous: a successful request returns the Agent with a `firewall_status` of "Pending Release" until the endpoint confirms the host is back online. This endpoint requires an API key with permission to release agents. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint.** ' produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true responses: '204': description: There was an issue with your API credential or permissions. '404': description: Agent not found. '409': description: Agent does not support host isolation, or release could not be scheduled. tags: - Reseller operationId: ReleaseAgent /v1/accounts/{account_id}/external_ports: get: summary: List External Ports description: Shows external port records from External Recon scans associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - port - protocol - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: organization_id description: Filter by organization ID within Huntress account type: integer format: int32 required: false - in: query name: protocol description: Filter by protocol. type: string enum: - TCP - UDP required: false - in: query name: port description: Filter by port number. type: integer format: int32 required: false - in: query name: risky_service description: Filter by whether the detected service is considered risky. type: boolean required: false - in: query name: service description: Filter by the detected service name (lowercase Shodan module name, e.g. 'ssh', 'http', 'rdp'). type: string required: false responses: '200': description: List External Ports schema: type: object properties: external_ports: type: array items: $ref: '#/definitions/ExternalPort' pagination: $ref: '#/definitions/Pagination' required: - external_ports - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/ExternalPort' tags: - Reseller operationId: getV1AccountsAccountIdExternalPorts /v1/accounts/{account_id}/external_ports/{id}: get: summary: Get External Port description: Shows details on a single external port record associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: External port record ID type: integer format: int32 required: true responses: '200': description: Get External Port schema: type: object properties: external_port: $ref: '#/definitions/ExternalPort' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/ExternalPort' tags: - Reseller operationId: getV1AccountsAccountIdExternalPortsId /v1/accounts/{account_id}/invoices: get: summary: List Account Invoices description: "Shows Invoices associated with your account.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at - status required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: status description: Filter by status. One of open, paid, failed, partial_refund, full_refund, draft, voided, processing type: string enum: - open - paid - failed - partial_refund - full_refund - draft - voided - processing required: false - in: query name: has_usage description: When true, returns only invoices with usage (subscription-cycle invoices). When false, returns only invoices without usage (manually-created invoices). type: boolean required: false responses: '200': description: List Account Invoices schema: type: object properties: invoices: type: array items: $ref: '#/definitions/Invoice' pagination: $ref: '#/definitions/Pagination' required: - invoices - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Invoice' tags: - Reseller operationId: getV1AccountsAccountIdInvoices /v1/accounts/{account_id}/invoices/{id}: get: summary: Get Account Invoice description: Shows details on a single Invoice associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Invoice ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Account Invoice schema: type: object properties: invoice: $ref: '#/definitions/Invoice' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Invoice' tags: - Reseller operationId: getV1AccountsAccountIdInvoicesId /v1/accounts/{account_id}/incident_reports: get: summary: List Incident Reports description: "Shows Incident Reports associated with your account.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: indicator_type description: Filter by indicator type. One of footholds, monitored_files, ransomware_canaries, antivirus_detections, process_detections, managed_identity, mde_detections, siem_detections, favicon_detections, behavioral_detections, email_security_detections, app_control, ai_misuse type: string enum: - footholds - monitored_files - ransomware_canaries - antivirus_detections - process_detections - managed_identity - mde_detections - siem_detections - favicon_detections - behavioral_detections - email_security_detections - app_control - ai_misuse required: false - in: query name: status description: Filter by status. One of sent, closed, dismissed, auto_remediating, deleting, partner_dismissed type: string enum: - sent - closed - dismissed - auto_remediating - deleting - partner_dismissed required: false - in: query name: severity description: Filter by severity. One of low, high, critical type: string enum: - low - high - critical required: false - in: query name: platform description: Filter by platform. One of windows, darwin, microsoft_365, google, linux, email_security, other type: string enum: - windows - darwin - microsoft_365 - google - linux - email_security - other required: false - in: query name: organization_id description: Filter by organization ID within Huntress account type: integer format: int32 required: false - in: query name: agent_id description: Filter by agent ID within Huntress account type: integer format: int32 required: false responses: '200': description: List Incident Reports schema: type: object properties: incident_reports: type: array items: $ref: '#/definitions/IncidentReport' pagination: $ref: '#/definitions/Pagination' required: - incident_reports - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/IncidentReport' tags: - Reseller operationId: getV1AccountsAccountIdIncidentReports /v1/accounts/{account_id}/incident_reports/{id}: get: summary: Get Incident Report description: Shows details on a single Incident Report associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Incident Report ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Incident Report schema: type: object properties: incident_report: $ref: '#/definitions/IncidentReport' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/IncidentReport' tags: - Reseller operationId: getV1AccountsAccountIdIncidentReportsId /v1/accounts/{account_id}/incident_reports/{id}/resolution: post: summary: Create an Incident Report Resolution description: 'Use this endpoint to resolve a single Incident Report. All remediations belonging to the Incident Report must be approved first. While resolution updates the report status to resolved, assisted remediations may still be running in the background and manual remediations may still require completion by a user. This endpoint requires an API key with permissions to resolve incident reports. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint**. ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true responses: '201': description: Create an Incident Report Resolution schema: type: object properties: incident_report: $ref: '#/definitions/IncidentReport' '403': description: There was an issue with your API credential or permissions. '409': description: Incident Report cannot be resolved. Confirm that all remediations are approved and report status is 'sent'. '422': description: Incident Report cannot be resolved unless report status is 'sent'. tags: - Reseller operationId: postV1AccountsAccountIdIncidentReportsIdResolution /v1/accounts/{account_id}/memberships: get: summary: List Memberships description: "Shows a list of memberships.\n\nBy default, this endpoint returns both account and organization\nmemberships, but if an organization ID is supplied, it will return\nonly organization memberships, instead.\n\nThe example return value shows both an organization and an account, but\na given membership will only have one or the other.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - user_id - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: organization_id description: Filter by organization ID to return only memberships for that organization. type: integer format: int32 required: false - in: query name: user_id description: Filter by user ID to return only memberships for that user. type: integer format: int32 required: false - in: query name: permissions description: Filter by permission label. type: string enum: - Admin - Security Engineer - User - Read-only - Finance - Marketing - Provisioner required: false responses: '200': description: List Memberships schema: type: object properties: memberships: type: array items: $ref: '#/definitions/Membership' pagination: $ref: '#/definitions/Pagination' required: - memberships - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Membership' tags: - Reseller operationId: getV1AccountsAccountIdMemberships post: summary: Create a Membership description: 'This endpoint allows you to invite a user to join your organization or account. A user will often be a person you wish to grant access to, but it could also represent a team, an automated system, or any other type of actor. If an organization ID is provided, the user will be invited to that organization. If not, they will be invited to the account associated with this API credential. Note that while the sample return value includes both an organization and an account for completeness, in practice, only one or the other will be included. Note that this is technically creating a Membership Invitation - the actual membership won''t be created until the user accepts the invitation. ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - name: MembershipCreationParameters in: body required: true schema: $ref: '#/definitions/MembershipCreationParameters' responses: '201': description: Create a Membership schema: type: object properties: member_invitation: $ref: '#/definitions/MemberInvitation' '400': description: Something about the request is malformed. '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Membership' '404': description: Organization not found. '422': description: Invalid creation parameters. tags: - Reseller operationId: MembershipCreationParameters /v1/accounts/{account_id}/memberships/{id}: get: summary: Get Membership description: Shows details on a single Membership associated with your account or organization. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Membership ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Membership schema: type: object properties: membership: $ref: '#/definitions/Membership' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Membership' tags: - Reseller operationId: getV1AccountsAccountIdMembershipsId delete: summary: Delete Membership description: Deletes a single Membership associated with your account or organization. Does not delete the user associated with the membership. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Membership ID within Huntress account type: integer format: int32 required: true responses: '202': description: Membership deleted schema: type: object properties: membership: $ref: '#/definitions/Membership' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Membership' '404': description: Membership not found, possibly because it has already been deleted. '422': description: Failed to delete membership. Please contact support. tags: - Reseller operationId: deleteV1AccountsAccountIdMembershipsId patch: summary: Update a User's membership description: '' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Membership ID within Huntress account type: integer format: int32 required: true - name: MembershipUpdateParameters in: body required: true schema: $ref: '#/definitions/MembershipUpdateParameters' responses: '200': description: Update a User's membership schema: type: object properties: membership: $ref: '#/definitions/Membership' '400': description: Something about the request is malformed. '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Membership' '422': description: Something prevented the update. tags: - Reseller operationId: MembershipUpdateParameters /v1/accounts/{account_id}/organizations: get: summary: List Organizations description: "Shows details of Organizations belonging to the account associated with your API credentials.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at - name - key required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: name description: Filter by organization name. type: string required: false - in: query name: key description: Filter by organization key. type: string required: false responses: '200': description: List Organizations schema: type: object properties: organizations: type: array items: $ref: '#/definitions/Organization' pagination: $ref: '#/definitions/Pagination' required: - organizations - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Organization' tags: - Reseller operationId: getV1AccountsAccountIdOrganizations post: summary: Create an Organization description: '' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - name: OrganizationCreationParameters in: body required: true schema: $ref: '#/definitions/OrganizationCreationParameters' responses: '201': description: Create an Organization schema: type: object properties: organization: $ref: '#/definitions/Organization' '400': description: Something about the request is malformed. '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Organization' '422': description: Invalid creation parameters. tags: - Reseller operationId: OrganizationCreationParameters /v1/accounts/{account_id}/organizations/{id}: get: summary: Get Organization description: Shows details on a single Organization associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Organization ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Organization schema: type: object properties: organization: $ref: '#/definitions/OrganizationWithActualProductUsages' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Organization' tags: - Reseller operationId: getV1AccountsAccountIdOrganizationsId patch: summary: Update an Organization description: '' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id type: integer format: int32 required: true - name: OrganizationUpdateParameters in: body required: true schema: $ref: '#/definitions/OrganizationUpdateParameters' responses: '200': description: Update an Organization schema: type: object properties: organization: $ref: '#/definitions/Organization' '400': description: Something about the request is malformed. '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Organization' '422': description: Invalid update parameters. tags: - Reseller operationId: OrganizationUpdateParameters delete: summary: Delete an Organization description: 'Deletes the specified Organization. **Please note:** This will remove the organization and associated configurations across the Huntress Platform, including Managed SAT. For more information, see our [offboarding guide](https://support.huntress.io/hc/en-us/articles/51332785737235-Huntress-Product-Offboarding-Guide). ' produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: The id of the organization to be deleted type: integer format: int32 required: true responses: '202': description: Organization deleted schema: type: object properties: organization: $ref: '#/definitions/Organization' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Organization' '404': description: Organization not found, possibly because it has already been deleted. '409': description: There is a conflict about the organization that prevents deletion. See error message for more details. '422': description: Failed to delete organization. Please contact support. tags: - Reseller operationId: deleteV1AccountsAccountIdOrganizationsId /v1/accounts/{account_id}/incident_reports/{incident_report_id}/remediations: get: summary: List Remediations description: "Shows details of Remediations belonging to a single Incident Report.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: incident_report_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: types[] description: 'Filter by type of remediation. Must be a comma-separated string containing the values: assisted, manual, containment' type: array items: type: string enum: - assisted - manual - containment required: false - in: query name: statuses[] description: 'Filter by status of remediation. Must be a comma-separated string containing the values: unapproved, approved, completed, failed, cancelled' type: array items: type: string enum: - unapproved - approved - completed - failed - cancelled required: false responses: '200': description: List Remediations schema: type: object properties: remediations: type: array items: $ref: '#/definitions/Remediation' pagination: $ref: '#/definitions/Pagination' required: - remediations - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Remediation' tags: - Reseller operationId: getV1AccountsAccountIdIncidentReportsIncidentReportIdRemediations /v1/accounts/{account_id}/incident_reports/{incident_report_id}/remediations/{remediation_id}: get: summary: Get Remediation description: Shows details for a single Remediation belonging to a single Incident Report produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: incident_report_id type: integer format: int32 required: true - in: path name: remediation_id description: Incident Report ID type: integer format: int32 required: true responses: '200': description: Get Remediation schema: type: object properties: remediation: $ref: '#/definitions/Remediation' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Remediation' tags: - Reseller operationId: getV1AccountsAccountIdIncidentReportsIncidentReportIdRemediationsRemediationId /v1/accounts/{account_id}/incident_reports/{incident_report_id}/remediations/bulk_approval: post: summary: Bulk Approve Remediations description: 'Approve all unapproved remediations for an Incident Report. Approval immediately triggers the execution of assisted remediations. Manual remediations are not executed, and must be independently completed. Once all remediations are approved, the incident report becomes eligible for resolution. This endpoint requires an API key with permissions to write to remediations. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint**. ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: incident_report_id type: integer format: int32 required: true responses: '201': description: Bulk Approve Remediations schema: type: object properties: incident_report: $ref: '#/definitions/IncidentReport' '403': description: There was an issue with your API credential or permissions. '409': description: Incident Report must have a status of 'sent'. '422': description: Unable to approve remediations tags: - Reseller operationId: postV1AccountsAccountIdIncidentReportsIncidentReportIdRemediationsBulkApproval /v1/accounts/{account_id}/incident_reports/{incident_report_id}/remediations/bulk_rejection: post: summary: Bulk Reject Remediations description: 'Reject all unapproved remediations for an Incident Report. Rejecting the remediations will send the incident report back to the Huntress SOC. This endpoint requires an API key with permissions to write to remediations. **Note that the default account API key is read-only, so you''ll need to create a user-based API key with the appropriate permissions to access this endpoint**. ' produces: - application/json consumes: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: incident_report_id type: integer format: int32 required: true - name: RemediationBulkRejectionParameters in: body required: true schema: $ref: '#/definitions/RemediationBulkRejectionParameters' responses: '201': description: Remediations rejected. '403': description: There was an issue with your API credential or permissions. '409': description: Incident Report must have a status of 'sent'. '422': description: Unable to reject remediations tags: - Reseller operationId: RemediationBulkRejectionParameters /v1/accounts/{account_id}/reports: get: summary: List Summary Reports description: "Shows Summary Reports associated with your account.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: period_min description: Filter by an ISO-8601 formatted date string that represents the lower bound of the search range for the period date. type: string required: false - in: query name: period_max description: Filter by an ISO-8601 formatted date string that represents the upper bound of the search range for the period date. type: string required: false - in: query name: organization_id description: Filter by organization ID within Huntress account type: integer format: int32 required: false - in: query name: type description: Filter by report type. One of monthly_summary, quarterly_summary, yearly_summary type: string enum: - monthly_summary - quarterly_summary - yearly_summary required: false responses: '200': description: List Summary Reports schema: type: object properties: reports: type: array items: $ref: '#/definitions/SummaryReport' pagination: $ref: '#/definitions/Pagination' required: - reports - pagination '403': description: There was an issue with your API credential or permissions. tags: - Reseller operationId: getV1AccountsAccountIdReports /v1/accounts/{account_id}/reports/{id}: get: summary: Get Summary Report description: Shows details on a single Summary Report associated with your account. produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Report ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Summary Report schema: type: object properties: report: $ref: '#/definitions/SummaryReport' '403': description: There was an issue with your API credential or permissions. tags: - Reseller operationId: getV1AccountsAccountIdReportsId /v1/accounts/{account_id}/signals: get: summary: List Signals description: "Shows details of Signals belonging to the account associated with your API credentials.\n\nSignals are used to highlight interesting user or system behaviors that an analyst can reference during a cyber investigation.\nA detected Signal could be as broad and low fidelity as the detection of a command line user running whoami, or it could be as specific and high fidelity as detecting a known malware file.\n\n**Note:** This endpoint will also return a `pagination` key on the root level. \nPlease refer to the [pagination section](https://api.huntress.io/docs#pagination) within our docs for more information.\n" produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: query name: limit description: Max number of resources returned in a paged collection. Defaults to 10, with a minimum of 1 and maximum 500. type: integer format: int32 default: 10 minimum: 1 maximum: 500 required: false - in: query name: page_token description: Token used to request the next page in paginated results. Defaults to 'null' type: string required: false - in: query name: sort_field description: Field to sort by. Defaults to 'id'. type: string default: id enum: - id - created_at - updated_at - status required: false - in: query name: sort_direction description: Sort direction. Defaults to 'desc'. type: string default: desc enum: - asc - desc required: false - in: query name: investigated_at_min description: Filter by an ISO-8601 formatted date string that represents the lower bound of the search range for the investigated_at date. type: string required: false - in: query name: investigated_at_max description: Filter by an ISO-8601 formatted date string that represents the upper bound of the search range for the investigated_at date. type: string required: false - in: query name: entity_type description: Filter by the entity type that the Signal originated from. This filter can be used without specifying entity_id. type: string enum: - user_entity - source - mailbox - service_principal - agent - identity required: false - in: query name: entity_id description: Filter by the entity ID that the Signal originated from. Must be used in tandem with entity_type parameter. type: string required: false - in: query name: organization_id description: Filter by organization ID within Huntress account type: integer format: int32 required: false - in: query name: types description: 'Filter by the types of Signal, must be comma-separated string containing the values: `Antivirus, Process Insights, Managed ITDR, Footholds, MDE Detections, SIEM, Ransomware Canaries, Favicon Detections, Attack Disruptions, App Control`' type: string required: false - in: query name: statuses description: 'Filter by status. Must be comma-separated string containing the values: `reported`, `closed`' type: string required: false responses: '200': description: List Signals schema: type: object properties: signals: type: array items: $ref: '#/definitions/Signal' pagination: $ref: '#/definitions/Pagination' required: - signals - pagination '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Signal' tags: - Reseller operationId: getV1AccountsAccountIdSignals /v1/accounts/{account_id}/signals/{id}: get: summary: Get Signal description: 'Shows details of a single Signal belonging to the account associated with your API credentials. Signals are used to highlight interesting user or system behaviors that an analyst can reference during a cyber investigation. A detected Signal could be as broad and low fidelity as the detection of a command line user running whoami, or it could be as specific and high fidelity as detecting a known malware file. ' produces: - application/json parameters: - in: path name: account_id type: integer format: int32 required: true - in: path name: id description: Signal ID within Huntress account type: integer format: int32 required: true responses: '200': description: Get Signal schema: type: object properties: signal: $ref: '#/definitions/Signal' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Signal' tags: - Reseller operationId: getV1AccountsAccountIdSignalsId /v1/actor: get: summary: Get Actor description: 'Shows details of the entities associated with the supplied API credentials. It will only return the fields relevant to the current credentials. For more information on User management, see [Product Support](https://support.huntress.io/hc/en-us/articles/4404012574227-Adding-and-Managing-Huntress-Users) ' produces: - application/json responses: '200': description: Get Actor schema: $ref: '#/definitions/Actor' '403': description: There was an issue with your API credential or permissions. schema: $ref: '#/definitions/Actor' tags: - Reseller operationId: getV1Actor definitions: SubscriptionUpgradeParameters: type: object properties: minimum: type: integer format: int32 description: New minimum usage commitment (must be greater than zero) purchase_order: type: string description: Purchase order number (defaults to existing subscription's PO) on_renewal: type: boolean description: Schedule upgrade for next renewal instead of immediately default: false required: - minimum description: Upgrade Reseller Subscription Subscription: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the subscription. account: type: Object example: id: 1 name: Little Bobby's Table Emporium description: The account associated with this subscription. product: type: string enum: - edr - ispm - itdr - sat - siem example: edr description: The product type for this subscription. status: type: string enum: - draft - approved - accepted - active - completed example: active description: The subscription status. minimum_usage: type: integer format: int64 example: 50 description: The current minimum usage commitment for this subscription. terminal_minimum_usage: type: integer format: int64 example: 100 description: The minimum usage commitment for this subscription after all subscription schedules are completed. Usually, this will be the same as the current minimum, but it may be higher during an ongoing schedule. billing_interval: type: string enum: - monthly - annual example: monthly description: The billing interval for this subscription. effective_date: type: string example: '2024-01-01T00:00:00Z' description: ISO-8601 formatted date when this subscription becomes effective. renewal_date: type: string example: '2025-01-01T00:00:00Z' description: ISO-8601 formatted date when this subscription renews. auto_renew: type: boolean example: true description: Whether this subscription will auto-renew. schedules: type: array items: $ref: '#/definitions/SubscriptionSchedule' example: - id: 1 minimum: 100 maximum: 500 status: active target_price: 200 months: 12 promo_units: 0 starts_at: '2024-01-01T00:00:00Z' ends_at: '2025-01-01T00:00:00Z' description: The schedules associated with this subscription. description: Subscription model OrganizationWithActualProductUsages: type: object properties: id: type: integer format: int64 example: 1 description: A Huntress-unique identifier for the organization. agents_count: type: integer format: int64 example: 42 description: Number of all agents for the organization. account_id: type: integer format: int64 example: 5 description: The unique identifier of the account associated with the organization. created_at: type: string format: date-time example: '2022-03-01T18:54:02Z' description: A timestamp for when the organization was created, formatted as per ISO-8601. incident_reports_count: type: integer format: int64 example: 42 description: Number of incident reports for the organization. key: type: string example: test1 description: The subdomain associated with the organization. logs_sources_count: type: integer format: int64 example: 42 description: Number of SIEM log sources that are billable and eligible for billing. identity_provider_tenant_id: type: string example: dcd219dd-bc68-4b9b-bf0b-4a33a796be35 description: The Identity Provider Tenant ID associated with the organization billable_identity_count: type: integer format: int64 example: 42 description: Number of billable identities for the organization. name: type: string example: Acme Inc. description: The public facing name for this organization. report_recipients: type: array items: type: string example: - test@test.com - fakenotificiation@test.com description: A list of emails Huntress is configured to send notification emails for the organization. sat_learner_count: type: integer format: int64 example: 42 description: Number of SAT learners. updated_at: type: string format: date-time example: '2022-03-01T18:54:02Z' description: A timestamp for when the organization was updated, formatted as per ISO-8601. actual_usages: type: string example: siem: billable_log_sources_count: 5 retention: 90/7 current_billing_cycle: online_gb: 12.34 service_period_start: '2026-04-15T00:00:00Z' service_period_end: '2026-05-15T00:00:00Z' previous_billing_cycle: online_gb: 10.5 service_period_start: '2026-03-15T00:00:00Z' service_period_end: '2026-04-15T00:00:00Z' edr: billable_agents_count: 42 unresponsive_agents_count: 2 outdated_agents_count: 1 isolated_agents_count: 0 sat: learners_count: 25 ispm: - type: microsoft identity_provider_tenant_id: abcd-1234 billable_identities_count: 100 total_identities_count: 150 itdr: - type: microsoft identity_provider_tenant_id: abcd-1234 billable_identities_count: 100 total_identities_count: 150 - type: google identity_provider_tenant_id: efgh-5678 billable_identities_count: 50 total_identities_count: 75 description: Actual usage metrics for the organization's active products, broken down by product type. **NOTE:** log usage data has a max retention of 90 days. required: - microsoft_365_tenant_id - microsoft_365_users_count - notify_emails description: OrganizationWithActualProductUsages model Account: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the account. name: type: string example: Your Account description: The public facing display name for the account. subdomain: type: string example: exampleaccount description: The subdomain for the account. status: type: string enum: - enabled - disabled example: enabled description: The current status of the account. support_type: type: string enum: - huntress_supported - partner_supported - not_applicable example: huntress_supported description: For accounts that have been provisioned through a reseller, this field indicates whether the account is huntress supported or partner supported. neighborhood_watch: type: Object example: edr: 10 ispm: 10 itdr: 10 sat: 10 siem: 10 description: The count of Neighborhood Watch seats assigned to the account, by product. billing_address: $ref: '#/definitions/Address' description: The billing address for the account, or null if not set. shipping_address: $ref: '#/definitions/Address' description: The shipping address for the account, or null if not set. description: Account model SubscriptionCreationParameters: type: object properties: account_id: type: integer format: int32 description: The reseller subaccount ID product: type: string description: Filter by product type enum: - edr - ispm - itdr - sat - siem minimum: type: integer format: int32 description: Minimum usage commitment (must be greater than zero) purchase_order: type: string description: Purchase order number billing_interval: type: string description: Billing interval enum: - monthly - annual default: monthly required: - account_id - product - minimum - purchase_order description: Create Reseller Subscription Agent: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for an agent. account_id: type: integer format: int64 example: 5 description: The unique identifier of the account associated with the agent. arch: type: string example: x86_64 description: The architecture on the host machine. created_at: type: string format: date-time example: '2022-03-01T20:05:10Z' description: A timestamp for when the agent was created, formatted as per ISO-8601. domain_name: type: string example: WORKGROUP description: Domain that refers to the host machine. edr_version: type: string example: 0.3.20 description: The semantic versioning number of the Huntress EDR software installed on the machine or `null` if EDR is not installed. external_ip: type: string example: 198.51.100.42 description: The external IP of the host machine, if applicable. hostname: type: string example: laptop01 description: The hostname of the host machine. defender_policy_status: type: string example: Compliant description: Policy status of Defender AV for Managed Antivirus. defender_status: type: string example: Healthy description: Status of Defender AV Managed Antivirus. defender_substatus: type: string example: Up to date description: Sub-status of Defender AV Managed Antivirus. firewall_status: type: string example: Disabled description: Status of agent firewall. Can be one of Disabled, Enabled, Pending Isolation, Isolated, Pending Release tamper_protection_configured: type: boolean example: true description: The desired EDR tamper protection state for the agent. `null` when the agent does not support tamper protection. tamper_protection_actual: type: boolean example: true description: The tamper protection state most recently reported by the host. May lag `tamper_protection_configured` and is `null` until the host reports. ipv4_address: type: string example: 146.134.139.9 description: The internal IP of the host machine. last_callback_at: type: string format: date-time example: '2022-03-01T20:05:10Z' description: A timestamp for when the last time Huntress was able to access the host machine. last_survey_at: type: string format: date-time example: '2022-03-01T20:05:10Z' description: A timestamp for when the last Microsoft Defender survey was received by Huntress for this host machine. mac_addresses: type: array items: type: string example: - 7c:a7:b0:16:2f:78 description: The unique media access control (MAC) addresses associated with the agent. service_pack_major: type: integer format: int32 example: 0 description: The major version of the Windows service pack installed on the host machine. service_pack_minor: type: integer format: int32 example: 0 description: The minor version of the Windows service pack installed on the host machine. organization_id: type: integer format: int64 example: 7 description: The unique identifier of the organization associated with the agent. os: type: string example: Windows 8 Pro description: The operating system of the host machine. os_build_version: type: string example: '19044' description: The operating system build number of the host machine corresponding to its platform (windows or darwin). os_major: type: integer format: int32 example: 6 description: The major OS version of the host machine. Corresponds with the major releases of Windows operating systems. A list is accessible here. os_minor: type: integer format: int32 example: 2 description: ' The minor OS version of the host machine. Refer to the `os_major` field details for further details.' os_patch: type: integer format: int32 example: 0 description: The patch version of the macOS update installed on the host machine, such as 1 in version 12.5.1. platform: type: string example: windows description: The platform of the host machine (`darwin`, `windows`, or `linux`). serial_number: type: string example: wtIe1bvDbh description: The serial number of the host machine as reported to the operating system. tags: type: array items: type: string example: - Server - Production description: User classifications on the host machine. updated_at: type: string format: date-time example: '2022-03-01T20:05:10Z' description: A timestamp for when the agent was last updated, formatted as per ISO-8601. version: type: string example: 0.11.3 description: The semantic versioning number of the agent installed on the host machine. version_number: type: integer format: int32 example: 720899 description: Windows version number. win_build_number: type: integer format: int32 example: 19044 description: The Windows Build Number. Should correspond to information on the Microsoft site. description: Agent model Address: type: object properties: line1: type: string description: Street address line 1. line2: type: string description: Street address line 2. city: type: string description: City. state: type: string description: State or province. Required for US and CA addresses. postal_code: type: string description: Postal or ZIP code. Required for US and GB addresses. country: type: string description: Two-letter ISO 3166-1 alpha-2 country code. OrganizationUpdateParameters: type: object properties: name: type: string description: The name of the organization. Value cannot be blank and must be 256 characters or less. example: Most Amazing Company, Ltd. key: type: string description: Organization keys are used to associate a Huntress Agent into a grouping. Value cannot be blank and must be 256 characters or less. example: amazing report_recipients: type: array description: Any emails specified here will automatically receive quarterly and monthly branded reports. example: - vera@bradley.com - my@user.net items: null description: Update an Organization AccountUsageLineItem: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for this Account Usage Line Item. period_start: type: string example: 2026-01-10 01:07:08 UTC description: The time and date that this billing period started. period_end: type: string example: 2026-02-09 01:07:08 UTC description: The time and date that this billing period ended. account: type: Object example: id: 123 name: Willy Wonka subdomain: willy_wonka description: The account in which this data belongs to. product: type: string enum: - edr - ispm - itdr - sat - siem - siem_extended_retention example: edr description: The product that this data pertains to. subscription: type: Object example: start_date: 2025-11-10 22:35:14 UTC end_date: 2025-11-10 22:35:14 UTC minimum: 400 description: Subscription information that is tied to the account and invoice. usage: type: Object example: billable: 400 non_billable: 0 actual: 300 description: The accounts breakdown of its use of the product and the billing around it. description: AccountUsageLineItem model IncidentReport: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for an incident report. account_id: type: integer format: int64 example: 5 description: Unique identifier for the account this incident report is associated with. agent_id: type: integer format: int64 example: 12 description: Unique identifier for the agent this incident report is associated with. body: type: string example: description: Autogenerated content describing the details of the incident in question. closed_at: type: string format: date-time example: '2022-03-15T14:22:00Z' description: ISO-8601 formatted timestamp for when this incident report had its status set to `closed`. Null if non-applicable. indicator_counts: type: object example: footholds: 1 monitored_files: 0 process_detections: 0 ransomware_canaries: 0 antivirus_detections: 0 description: Mapping of indicator types to number of incidences of that threat in the context of this incident report. indicator_types: type: array items: type: string example: - footholds description: Unique list of threat indicators that have been found in the context of this incident report. organization_id: type: integer format: int64 example: 4 description: Unique identifier for the organization this incident report is associated with. platform: type: string example: windows description: The platform of the host machine (`darwin`,`google`,`microsoft_365`,`linux`,`windows`, or `other`). remediations: type: object example: total_count: 1 has_more: false items: - id: 1 type: manual action: Delete File parameters: - name: path description: c:\windows\system32\tasks\malicious_task status: completed approved_at: '2025-06-26T18:57:03Z' approved_by: id: '123123' email: john.smith@example.com name: John smith completed_at: '2025-06-26T18:57:03Z' description: This represents an itemized list of the first 10 remediations for an incident report. If there are more than 10, use the remediations endpoint to retrieve information about them. sent_at: type: string format: date-time example: '2022-03-01T21:00:00Z' description: ISO-8601 formatted timestamp for when a Huntress SOC analyst has notified necessary parties regarding this incident report. Null if not sent. severity: type: string example: low description: The severity of the incident report. Can be one of `low`, `high`, `critical`. status: type: string example: closed description: Status of the incident report. Can be one of `sent`, `closed`, `dismissed` status_updated_at: type: string format: date-time example: '2022-03-15T14:22:00Z' description: ISO-8601 formatted timestamp for when the status of this incident report was last updated. subject: type: string example: LOW - Incident on laptop01 (Test) description: Autogenerated one-line description of the incident. summary: type: string example: Huntress detected a malicious scheduled task on this host. We recommend removing the file and scheduled task listed in the remediation steps below. description: Details of the incident report, as provided by a Huntress SOC analyst. updated_at: type: string format: date-time example: '2022-03-01T20:31:30Z' description: ISO-8601 formatted timestamp for when this incident report was last updated. description: IncidentReport model AccountUpdateParameters: type: object properties: name: type: string description: Name of the account subdomain: type: string description: Subdomain this account will use to access the Huntress portal phone_number: type: string description: Primary phone number used to contact account owner support_type: type: string description: 'Specifies whether a reseller account is managed by the partner or by Huntress. NOTE: This field is only applicable for Managed Resellers. For all other types of resellers, there is only one valid support type, so it cannot be updated. ' enum: - huntress_supported - partner_supported billing_address: type: object description: Billing address for the account. If provided, must be valid. properties: line1: type: string description: Street address line 1 line2: type: string description: Street address line 2 city: type: string description: City state: type: string description: State or province (required for US and CA) postal_code: type: string description: Postal or ZIP code (required for US and GB) country: type: string description: Two-letter ISO 3166-1 alpha-2 country code shipping_address: type: object description: Shipping address for the account. If provided, must be valid. properties: line1: type: string description: Street address line 1 line2: type: string description: Street address line 2 city: type: string description: City state: type: string description: State or province (required for US and CA) postal_code: type: string description: Postal or ZIP code (required for US and GB) country: type: string description: Two-letter ISO 3166-1 alpha-2 country code description: Update Account ReportIncidentRemediation: type: object properties: type: type: string example: Remediations::SessionRevocation description: The remediation type. subtype: type: string example: containment description: The remediation action category. MembershipUpdateParameters: type: object properties: permissions: type: string description: 'The specific level of permissions that have been granted to the user in the context of this membership. For more information, see our [support article](https://support.huntress.io/hc/en-us/articles/4404012728083-Huntress-Portal-User-Permissions) on permissions. Accepted values: ' enum: - Admin - Finance - Marketing - Provisioner - Read-only - Security Engineer - User example: Security Engineer description: Update a User's membership Remediation: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for a remediation. type: type: string example: manual description: 'The type of the remediation. Can be one of: assisted, manual, containment' action: type: string example: Delete File description: Description of the remediation's required steps. parameters: type: array items: type: string example: - name: path description: c:\windows\system32\tasks\malicious_task description: Additional context on how the remediation will be performed.
For containment remediations, this will be a string showing the entity to which the remediation was applied.
For assisted remediations this will be an array of key value pairs representing all the parameters that are related to the remediation.
Manual remediations will have no information. status: type: string example: completed description: 'The status of the remediation. Can be one of: unapproved, approved, completed, failed, cancelled' approved_at: type: string format: date-time example: '2025-06-26T18:57:03Z' description: ISO-8601 formatted timestamp for when the remediation was approved. approved_by: $ref: '#/definitions/User' example: id: 123123 name: John Smith email: john.smith@example.com description: The user that approved the remediation. completed_at: type: string format: date-time example: '2025-06-26T18:57:03Z' description: ISO-8601 formatted timestamp for when the remediation was completed. description: Remediation model OrganizationUsageLineItem: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for this Organization Usage Line Item. period_start: type: string example: '2026-02-11T14:12:08Z' description: The time and date that this billing period started. period_end: type: string example: '2027-02-11T14:12:08Z' description: The time and date that this billing period ended. account: type: Object example: id: 123 name: Willy Wonka subdomain: willy_wonka description: The account in which this data belongs to. organization: type: Object example: id: 123 name: Willy Wonka description: The organization to which this data belongs. actual_usage: type: Object example: edr: 400 itdr: 20 sat: 300 siem: 50 description: A breakdown by Huntress product of the number of units actually used for an organization. description: OrganizationUsageLineItem model AccountCreationParameters: type: object properties: name: type: string description: Name of the account to be created subdomain: type: string description: Subdomain this account will use to access the Huntress portal phone_number: type: string description: Primary phone number used to contact account owner admin: type: object properties: first_name: type: string description: First name of the initial admin user for this account last_name: type: string description: Last name of the initial admin user for this account email: type: string description: Email address of the initial admin user for this account required: - first_name - last_name - email additional_admin_emails: type: array description: Email addresses of additional admin users to invite to this account example: - another_admin@example.com - one_more@example.com items: type: string additionalProperties: type: String support_type: type: string description: 'Specifies whether a reseller account is managed by the partner or by Huntress. NOTE: This field is only required for Managed Resellers. For all other types of resellers, there is only one valid support type, so it will be selected automatically. ' enum: - huntress_supported - partner_supported products: type: array description: 'A list of the products to provision for this account. NOTE: This field is only relevant for Aggregators. For all other types of resellers, the appropriate trials will be created automatically and this field will be ignored. (If you aren''t sure whether this applies to you, you can probably ignore this field.) ' example: - edr - ispm - itdr - sat - siem items: type: string enum: - edr - ispm - itdr - sat - siem additionalProperties: type: String product_trials: type: array description: 'A list of the products that should receive trials for this account. Only applies to trial-supporting resellers (this field is ignored for Aggregators). If omitted, trials are started for every product enabled for the reseller. If supplied, must include at least one product, and each listed product must be enabled for the reseller. ' example: - edr - ispm - itdr - sat - siem items: type: string enum: - edr - ispm - itdr - sat - siem additionalProperties: type: String product_trials_start_date: type: string description: 'The date that the trials in product_trials should start in ISO-8601 format (YYYY-MM-DD). Only applies if product_trials are provided. If product_trials are provided and product_trials_start_date is left blank, trials will start today. The date is assumed to be in the API caller''s time zone. ' billing_address: type: object description: Billing address for the account. If provided, must be valid. properties: line1: type: string description: Street address line 1 line2: type: string description: Street address line 2 city: type: string description: City state: type: string description: State or province (required for US and CA) postal_code: type: string description: Postal or ZIP code (required for US and GB) country: type: string description: Two-letter ISO 3166-1 alpha-2 country code shipping_address: type: object description: Shipping address for the account. If provided, must be valid. properties: line1: type: string description: Street address line 1 line2: type: string description: Street address line 2 city: type: string description: City state: type: string description: State or province (required for US and CA) postal_code: type: string description: Postal or ZIP code (required for US and GB) country: type: string description: Two-letter ISO 3166-1 alpha-2 country code required: - name - subdomain - phone_number - admin description: Create Account User: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the user. email: type: string example: john.smith@example.com description: The user's email. name: type: string example: John Smith description: The user's name. Actor: type: object properties: reseller: type: Object example: id: 12345 name: ResellerCo description: Information about the reseller associated with the supplied API credentials (if any). account: type: Object example: id: 12345 name: Huntress subdomain: huntress status: enabled description: Information about the account associated with the supplied API credentials (if any). user: type: Object example: id: 12345 email: email@example.com name: Your User description: Information about the user associated with the supplied API credentials (if any). description: Actor model ReportExternalService: type: object properties: name: type: string example: SSH description: The name of the external service. risky: type: boolean example: true description: Whether this service is considered risky. Organization: type: object properties: id: type: integer format: int64 example: 1 description: A Huntress-unique identifier for the organization. agents_count: type: integer format: int64 example: 42 description: Number of all agents for the organization. account_id: type: integer format: int64 example: 5 description: The unique identifier of the account associated with the organization. created_at: type: string format: date-time example: '2022-03-01T18:54:02Z' description: A timestamp for when the organization was created, formatted as per ISO-8601. incident_reports_count: type: integer format: int64 example: 42 description: Number of incident reports for the organization. key: type: string example: test1 description: The subdomain associated with the organization. logs_sources_count: type: integer format: int64 example: 42 description: Number of SIEM log sources that are billable and eligible for billing. identity_provider_tenant_id: type: string example: dcd219dd-bc68-4b9b-bf0b-4a33a796be35 description: The Identity Provider Tenant ID associated with the organization billable_identity_count: type: integer format: int64 example: 42 description: Number of billable identities for the organization. name: type: string example: Acme Inc. description: The public facing name for this organization. report_recipients: type: array items: type: string example: - test@test.com - fakenotificiation@test.com description: A list of emails Huntress is configured to send notification emails for the organization. sat_learner_count: type: integer format: int64 example: 42 description: Number of SAT learners. updated_at: type: string format: date-time example: '2022-03-01T18:54:02Z' description: A timestamp for when the organization was updated, formatted as per ISO-8601. required: - microsoft_365_tenant_id - microsoft_365_users_count - notify_emails description: Organization model ExternalPort: type: object properties: id: type: integer format: int64 example: 42 description: A unique identifier for an external port record. ip_address: type: string example: 203.0.113.5 description: The public IPv4 address associated with this external port. port: type: integer format: int32 example: 22 description: The port number. protocol: type: string example: TCP description: The transport protocol (usually TCP or UDP). service: type: string example: ssh description: The service or application detected on the port. risky_service: type: boolean example: true description: Whether the detected service is considered risky. last_scan_at: type: string format: date-time example: '2026-03-15T12:00:00Z' description: Timestamp of the last Huntress scan, formatted as per ISO-8601. last_external_scan_at: type: string format: date-time example: '2026-03-14T08:00:00Z' description: Timestamp of the last external scan, formatted as per ISO-8601. organization_ids: type: array example: - 1 - 5 description: IDs of organizations associated with this external port that are accessible to the current user. description: ExternalPort model SummaryReport: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the summary report. agents_count: type: integer format: int64 example: 2 description: The number of agents deployed. allowed_exclusions_count: type: integer format: int64 example: 0 description: The number of allowed exclusions. analyst_name: type: string example: Jane Doe description: The name of the analyst who reviewed this report. analyst_note: type: string example: Everything is awesome! Thanks for using Huntress. description: The analyst note for this report. analyst_threats: type: array items: type: string example: - Ransomware - Dridex - Jupyter description: Global threat landscape information curated by the analyst. analyst_title: type: string example: Senior Security Analyst description: The title of the analyst who reviewed this report. antivirus_exclusions_count: type: integer format: int64 example: 0 description: The number of antivirus exclusions. autorun_events: type: integer format: int64 example: 0 description: The total number of autorun (auto-starting application) events in this report. autorun_signals_detected: type: integer format: int64 example: 0 description: The total number of autorun (auto-starting application) signals detected autorun_signals_reviewed: type: integer format: int64 example: 0 description: The number of autorun signals (auto-starting application) reviewed. autoruns_reviewed: type: integer format: int64 example: 0 description: A count of all the autoruns (auto-starting application) reviewed. blocked_malware_count: type: integer format: int64 example: 0 description: A count of blocked malware. created_at: type: string format: date-time example: '2022-03-01T20:56:15Z' description: ISO-8601 formatted timestamp for when this summary report was created. deployed_canaries_count: type: integer format: int64 example: 0 description: The number of canaries deployed. events_analyzed: type: integer format: int64 example: 0 description: A count of the events analyzed. external_ips_count: type: integer format: int64 example: 3 description: The number of external IP addresses discovered. external_ports_count: type: integer format: int64 example: 12 description: The number of external ports discovered. external_services: type: array items: $ref: '#/definitions/ReportExternalService' example: - name: SSH risky: true - name: HTTP risky: false description: Details of external services discovered during reconnaissance. firewall_disabled_count: type: integer format: int64 example: 0 description: The number of endpoints with firewall disabled. firewall_disabled_with_conflict_count: type: integer format: int64 example: 0 description: The number of endpoints with firewall disabled due to a conflict. firewall_enabled_count: type: integer format: int64 example: 10 description: The number of endpoints with firewall enabled. firewall_enabled_with_conflict_count: type: integer format: int64 example: 0 description: The number of endpoints with firewall enabled but with a conflict. global_threats_note: type: string example: World peace! No threats to see here. description: The global threats note for this report. host_processes_analyzed: type: integer format: int64 example: 0 description: A count of host processes analyzed. incident_indicator_counts: type: Object example: managed_av: 0 description: A map of incident indicators (as strings) to counts (as integers). incident_log: type: array items: type: string example: [] description: A JSON representation of any critical or high severity incidents from this report. incident_product_counts: type: Object example: edr: 16 itdr: 0 siem: 0 description: A map of product names (as strings) to counts (as integers). incident_severity_counts: type: Object example: low: 16 description: A map of incident severities (as strings) to counts (as integers). incidents_reported: type: integer format: int64 example: 16 description: The total number of incidents reported. incidents_resolved: type: integer format: int64 example: 1 description: The total number of incidents resolved. investigated_mav_detection_count: type: integer format: int64 example: 0 description: A count of investigated Managed Antivirus (MAV) detections. investigations_completed: type: integer format: int64 example: 0 description: The total number of investigations completed in this report. itdr_entities: type: integer format: int64 example: 0 description: A count of Identity Threat Detection Response entities itdr_events: type: integer format: int64 example: 0 description: A count of Identity Threat Detection Response events itdr_incidents_reported: type: integer format: int64 example: 0 description: The number of Identity Threat Detection Response incidents reported itdr_investigations_completed: type: integer format: int64 example: 0 description: A count of Identity Threat Detection Response investigations completed itdr_signals: type: integer format: int64 example: 0 description: The total number of Identity Threat Detection Response signals itdr_billable_identity_count: type: integer format: int64 example: 50 description: The number of billable identities for Identity Threat Detection Response. itdr_non_billable_identity_count: type: integer format: int64 example: 10 description: The number of non-billable identities for Identity Threat Detection Response. itdr_license_distribution: type: Object example: Microsoft 365 E3: 25 Microsoft 365 E5: 15 Other: 10 description: A breakdown of Identity Threat Detection Response license types and their counts. itdr_usage_locations: type: array items: type: string example: - US - CA - GB - DE description: Top usage locations for Identity Threat Detection Response, as ISO country codes. linux_agent_count: type: integer format: int64 example: 0 description: The number of Linux agents. macos_agent_count: type: integer format: int64 example: 0 description: The number of MacOS agents. macos_agents: type: boolean example: false description: Indicates whether there are _any_ MacOS agents. mav_incident_report_count: type: integer format: int64 example: 0 description: A count of Managed Antivirus (MAV) incident reports. new_exclusions_count: type: integer format: int64 example: 0 description: The number of new exclusions since the last summary report. only_macos_agents: type: boolean example: false description: Indicates whether there are _only_ MacOS agents. organization_id: type: integer format: int64 example: 7 description: Unique identifier for the organization this summary report is associated with. period: type: string example: 2022-02-01...2022-03-02 description: A date range representing the coverage of the report, formatted as `start_date...end_date`. powerful_application_count: type: integer format: int64 example: 3 description: The number of powerful applications detected. potential_threat_indicators: type: integer format: int64 example: 0 description: A count of the potential threat indicators. process_detections: type: integer format: int64 example: 0 description: The total number of process detections. process_detections_reported: type: integer format: int64 example: 0 description: ' A count of the process detections reported.' process_detections_reviewed: type: integer format: int64 example: 0 description: ' A count of the process detections reviewed.' protected_profiles_count: type: integer format: int64 example: 0 description: The number of protected profiles. ransomware_note: type: string example: No ransoms to report, all is well. description: The ransomware note for this report. risky_exclusions_removed_count: type: integer format: int64 example: 0 description: The number of risky exclusions removed. risky_services_count: type: integer format: int64 example: 1 description: The number of risky external services discovered. rogue_app_incidents: type: array items: $ref: '#/definitions/ReportIncident' description: Details of rogue application incidents detected. servers_agent_count: type: integer format: int64 example: 0 description: The number of server agents. shadow_workflow_incidents: type: array items: $ref: '#/definitions/ReportIncident' description: Details of shadow workflow incidents detected. siem_incidents_reported: type: integer format: int64 example: 0 description: The number of Security Information & Event Management incidents reported siem_ingested_logs: type: integer format: int64 example: 0 description: A count of Security Information & Event Management ingested logs siem_investigations_completed: type: integer format: int64 example: 0 description: A count of Security Information & Event Management signals that have been investigated siem_signals: type: integer format: int64 example: 0 description: The total number of Security Information & Event Management signals siem_total_logs: type: integer format: int64 example: 0 description: A count of Security Information & Event Management total logs signals_detected: type: integer format: int64 example: 0 description: A count of total signals detected. signals_investigated: type: integer format: int64 example: 0 description: A count of total signals investigated. top_incident_av_threats: type: array items: type: string example: - some_threat - another_threat - threats_threats_threats description: A list of the top av threats. top_incident_hosts: type: array items: type: string example: - some_host - another_host - hosts_hosts_hosts description: A list of the top hosts by number of incidents. total_entities: type: integer format: int64 example: 2 description: A count of the total entities included in this report. total_mav_detection_count: type: integer format: int64 example: 0 description: A count of the Managed Antivirus (MAV) detections. type: type: string example: monthly_summary description: The report type. Can be one of `monthly_summary`, `quarterly_summary`, `yearly_summary`. unwanted_access_incidents: type: array items: $ref: '#/definitions/ReportIncident' description: Details of unwanted access incidents detected. updated_at: type: string format: date-time example: '2022-03-01T20:56:15Z' description: ISO-8601 formatted timestamp for when this summary report was last updated. url: type: string example: https://huntress.io/rails/active_storage/blobs/redirect/uuid.pdf?disposition=download description: The direct url to the pdf version of this summary report. windows_agent_count: type: integer format: int64 example: 2 description: The number of Windows agents. weak_application_count: type: integer format: int64 example: 1 description: The number of weak applications detected. windows_agents: type: boolean example: true description: Indicates whether there are _any_ Windows agents. description: SummaryReport model UpdateAgent: type: object properties: tags: type: array description: The full set of user classifications on the host. The supplied list replaces any existing tags. Values are normalized to lowercase, hyphenated values (for example, "My Server" becomes "my-server"), and blank or duplicate values are dropped. items: type: object properties: ? '' : type: array description: The full set of user classifications on the host. The supplied list replaces any existing tags. Values are normalized to lowercase, hyphenated values (for example, "My Server" becomes "my-server"), and blank or duplicate values are dropped. items: type: string tamper_protection_configured: type: boolean description: Enable or disable EDR tamper protection for the agent. Applies asynchronously, so the host-reported state is exposed separately as tamper_protection_actual. Requires an API key with permission to manage agent security settings, and the agent must support tamper protection. description: Update Agent Pagination: type: object properties: next_page_url: type: string next_page_token: type: string description: Pagination model Membership: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for this membership. Note that this is _not_ the id of the user, account, etc. Instead, it identifies this specific relationship, which can be used to modify or delete the membership. permissions: type: string enum: - Admin - Security Engineer - User - Read-only - Finance - Marketing - Admin-Read-only - Provisioner example: Read-only description: The specific level of permissions that have been granted to this user in the context of this membership. account: type: Object example: id: 1234 name: Exemplary Accounting, LLC description: The account associated with this membership (if any). organization: type: Object example: id: 5678 name: Organic Zations description: The organization associated with this membership (if any). user: type: Object example: id: 90210 email: little_bobby@example.com name: Robert Tables description: The user associated with this membership. created_at: type: string example: 2026-01-22 01:07:08 UTC description: The time and date that this membership was created. updated_at: type: string example: 2026-01-22 01:07:08 UTC description: The time and date that this membership was last updated. description: Membership model IsolateAgent: type: object properties: reason: type: string description: Reason recorded for the isolation. strict_isolation: type: boolean description: Apply strict isolation. Only honored on Windows (WFP) and Linux (eBPF). default: false description: Isolate Agent MembershipCreationParameters: type: object properties: email: type: string description: The email address of the user you are inviting. example: accounting@example.com first_name: type: string description: The first name of the user you are inviting. example: Accounting last_name: type: string description: The last name of the user you are inviting. example: Department permissions: type: string description: The specific permissions this membership will grant to the user. enum: - Admin - Security Engineer - User - Read-only - Finance - Marketing - Provisioner example: Read-only organization_id: type: integer format: int32 description: Include this parameter to invite a user to an organization instead of your account. example: 123456 required: - email - first_name - last_name - permissions description: Create a Membership SubscriptionUpdateParameters: type: object properties: minimum: type: integer format: int32 description: Minimum usage commitment (must be greater than zero) purchase_order: type: string description: Purchase order number billing_interval: type: string description: Billing interval enum: - monthly - annual additional_units: type: integer format: int32 description: Units to add (active subscriptions only) auto_renew: type: boolean description: Set auto-renew (active subscriptions only) description: Update Reseller Subscription SubscriptionSchedule: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the subscription schedule. minimum: type: integer format: int64 example: 100 description: The minimum usage commitment for this schedule period. maximum: type: integer format: int64 example: 500 description: The maximum usage limit for this schedule period. status: type: string enum: - active - completed - pending example: active description: The schedule status. target_price: type: integer format: int64 example: 200 description: The target price per unit for this schedule period. months: type: integer format: int64 example: 12 description: The number of months this schedule period covers. promo_units: type: integer format: int64 example: 0 description: The number of promotional units for this schedule period. starts_at: type: string example: '2024-01-01T00:00:00Z' description: ISO-8601 formatted date when this schedule period starts. ends_at: type: string example: '2025-01-01T00:00:00Z' description: ISO-8601 formatted date when this schedule period ends. MemberInvitation: type: object properties: permissions: type: string example: Read-only description: The specific level of permissions that have been granted to this user in the context of this membership. account: type: Object example: id: 1234 name: Exemplary Accounting, LLC description: The account associated with this membership (if any). organization: type: Object example: id: 5678 name: Organic Zations description: The organization associated with this membership (if any). user: type: Object example: email: little_bobby@example.com name: Robert Tables description: The user associated with this membership. description: MemberInvitation model Signal: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the signal. created_at: type: string format: date-time example: '2025-06-26T18:57:03Z' description: ISO-8601 formatted timestamp for when this signal was created. details: type: object example: rule_name: Firewall Disabled via Netsh username: admin22 process_name: C:\WINDOWS\system32\netsh.exe command_line: NetSh.exe Advfirewall set allprofiles state off registry_key: '' file_path: '' file_rename_target: '' cleartext: '' description: Additional details attached to this signal. These details differ based on the signal type and contain information about where the signal originated. entity: type: object example: id: 72183 name: Laptop 52 type: agent description: Additional details about the entity from which the signal originated. This will always contain an ID, Type and Name. investigated_at: type: string example: '2025-06-26T18:57:03Z' description: ISO-8601 formatted timestamp for when this signal was investigated. investigation_context: type: string example: False Positive, Business Accepted Risk description: Represents categories attached to the signal by a SOC analyst which give extra insight on the investigation. name: type: string example: Firewall Disabled via Netsh description: The name of the signal. organization: type: object example: id: 232 name: Huntress description: Contains information about the organization this signal came from. Includes the organization ID and name. status: type: string example: closed description: 'The status of the signal. Can be one of: `reported`, `closed`' type: type: string example: Process Insights description: 'The type of the signal. Can be one of: `Antivirus, Process Insights, Managed ITDR, Footholds, MDE Detections, SIEM, Ransomware Canaries, Favicon Detections, Attack Disruptions, App Control`' updated_at: type: string format: date-time example: '2025-06-26T18:57:03Z' description: ISO-8601 formatted timestamp for when this signal was last updated. description: Signal model RemediationBulkRejectionParameters: type: object properties: comment: type: string description: A description of why the remediations were rejected. This explanation helps Huntress SOC analysts fix the remediation plan and re-issue the incident report. useful: type: boolean description: Whether or not the remediation plan was useful. name: type: string description: Name of the user rejecting the remediations. Falls back to the user attached to the API key if not provided. phone_number: type: string description: Phone number to be contacted by the Huntress SOC. Falls back to the phone number of the user attached to the API key if not provided. email: type: string description: Email to be contacted by the Huntress SOC. Falls back to the email of the user attached to the API key if not provided. required: - comment - useful description: Bulk Reject Remediations Remediations Invoice: type: object properties: id: type: integer format: int64 example: 1 description: A unique identifier for the invoice. amount: type: integer format: int32 example: 303 description: The amount intended to be collected by this invoice. Mimics Stripe.. created_at: type: string format: date-time example: '2022-03-01T20:56:15Z' description: ISO-8601 formatted timestamp for when this invoice was created. currency_type: type: string example: usd description: The currency type, using a ISO-4217 three-letter code in lowercase. plan: type: string example: Huntress Partner 100 Agents description: The corresponding name of huntress subscription plan sku. quantity: type: integer format: int64 example: 101 description: The total count of licensed agents accounted for in this invoice. receipt: type: string example: https://pay.stripe/com/invoice/invst_uuid description: A direct link to stripe payment invoice for this invoice. status: type: string example: paid description: The invoice status. Can be one of `open`, `paid`, `failed`, `partial_refund`, `full_refund`. has_usage: type: boolean example: true description: Whether this invoice has associated usage line items. updated_at: type: string format: date-time example: '2022-03-01T20:56:15Z' description: ISO-8601 formatted timestamp for when this invoice was last updated. description: Invoice model ReportIncident: type: object properties: id: type: integer format: int64 example: 12345678 description: The incident report identifier. severity: type: string example: critical description: The severity level of the incident. sent_at: type: string example: '2026-04-17T12:34:56Z' description: ISO-8601 formatted timestamp for when the incident was sent. event_summary: type: string example: Suspicious login detected from unusual location. description: A brief summary of the incident event. body: type: string example: A suspicious login was detected from an unusual location. description: The full description of the incident. remediations: type: array items: $ref: '#/definitions/ReportIncidentRemediation' description: Remediation actions taken for this incident. OrganizationCreationParameters: type: object properties: name: type: string description: The name of the organization. Value cannot be blank and must be 256 characters or less. example: Most Amazing Company, Ltd. key: type: string description: Organization keys are used to associate a Huntress Agent into a grouping. Value cannot be blank and must be 256 characters or less. example: amazing required: - name - key description: Create an Organization securityDefinitions: basic_auth: type: basic desc: Base 64 encoded string of your Huntress Account API key and API secret.