---
title: "Return fleet-wide XFA agent adoption history"
method: GET
path: "/agent-adoption"
tags: ["Snapshots"]
---

# Return fleet-wide XFA agent adoption history

`GET /agent-adoption`

## Request

- Base URL: `https://api.xfa.tech`
- URL: `https://api.xfa.tech/agent-adoption`
- Auth: HTTP bearer

Returns the daily agent adoption aggregates, oldest first. System administrators only: the aggregate spans the whole fleet and is not scoped to any organization.
History starts at the day the aggregation job first ran, because the underlying shadow holds only a device's current state and earlier days cannot be recomputed. An empty list is therefore a normal answer.

## Query parameters

- `days` integer

## Response `200`

Returns the agent adoption aggregates, oldest first

- AgentAdoption[]
  - `date` string, required: Day the aggregate was produced, as YYYY-MM-DD
  - `windowDays` integer, required: How far back a device must have submitted to be counted
  - `generatedAt` integer, required: Unix timestamp (seconds) the aggregate was written
  - `desktop` AgentAdoptionPlatform, required: Counts for one platform grouping. Skipped and unsupported devices cannot run the agent, so they are carved out of the denominator: adoptable = total - skipped - unsupported, and adoptable = withAgent + agentless + withoutAgent.
    - `total` integer, required: Full active population for this platform
    - `adoptable` integer, required: Devices that could run the agent (total minus skipped and unsupported)
    - `skipped` integer, required: Devices whose user chose to skip the check
    - `unsupported` integer, required: Devices XFA does not support
    - `withAgent` integer, required: Devices reporting a real agent version
    - `agentless` integer, required: Devices reporting the agentless sentinel
    - `withoutAgent` integer, required: Adoptable devices reporting no version, i.e. browser flow only
    - `nativeClient` integer, required: Devices reporting the native client as installed
    - `versions` object: Agent version to device count, over withAgent devices only. Prerelease build metadata is collapsed and the optional v prefix is stripped.
    - `byOs` object: The same counts broken down per operating system
  - `mobile` AgentAdoptionPlatform, required: Counts for one platform grouping. Skipped and unsupported devices cannot run the agent, so they are carved out of the denominator: adoptable = total - skipped - unsupported, and adoptable = withAgent + agentless + withoutAgent.
    - `total` integer, required: Full active population for this platform
    - `adoptable` integer, required: Devices that could run the agent (total minus skipped and unsupported)
    - `skipped` integer, required: Devices whose user chose to skip the check
    - `unsupported` integer, required: Devices XFA does not support
    - `withAgent` integer, required: Devices reporting a real agent version
    - `agentless` integer, required: Devices reporting the agentless sentinel
    - `withoutAgent` integer, required: Adoptable devices reporting no version, i.e. browser flow only
    - `nativeClient` integer, required: Devices reporting the native client as installed
    - `versions` object: Agent version to device count, over withAgent devices only. Prerelease build metadata is collapsed and the optional v prefix is stripped.
    - `byOs` object: The same counts broken down per operating system
  - `other` AgentAdoptionPlatform, required: Counts for one platform grouping. Skipped and unsupported devices cannot run the agent, so they are carved out of the denominator: adoptable = total - skipped - unsupported, and adoptable = withAgent + agentless + withoutAgent.
    - `total` integer, required: Full active population for this platform
    - `adoptable` integer, required: Devices that could run the agent (total minus skipped and unsupported)
    - `skipped` integer, required: Devices whose user chose to skip the check
    - `unsupported` integer, required: Devices XFA does not support
    - `withAgent` integer, required: Devices reporting a real agent version
    - `agentless` integer, required: Devices reporting the agentless sentinel
    - `withoutAgent` integer, required: Adoptable devices reporting no version, i.e. browser flow only
    - `nativeClient` integer, required: Devices reporting the native client as installed
    - `versions` object: Agent version to device count, over withAgent devices only. Prerelease build metadata is collapsed and the optional v prefix is stripped.
    - `byOs` object: The same counts broken down per operating system

## Other responses

- `400`: Bad request
- `401`: Not authorized
- `403`: MFA required
- `500`: Internal server error

---

[API](https://skmtc.dev/xfa/apis/xfa-api.md) · [All operations](https://skmtc.dev/xfa/apis/xfa-api/llms.txt) · [OpenAPI document](https://skmtc.dev/xfa/apis/xfa-api/revisions/1a1be0e8972b?raw)
