Skip to main content

Public APIs - Device and evidence retrieval

Overview

On the settings page, you can retrieve your organization API token to pull Swif data into 3rd party platform.

For general patterns and examples of using Swif APIs, see:
APIs – Manage Employees

For retrieving device applications, see:
APIs – Device Application Retrieval

For retrieving device browser extensions, see:
APIs – Device Extensions

For APIs – Team Installer Retrieval, see:
APIs – Team Installer Retrieval.

Migration and Performance Optimization

As of August 2026, the applicationInfo and extension field has been removed from the main Device Inventory API (GET /restful/organization/devices) to significantly improve performance and reduce payload sizes.

If your existing integration relies on application data, you will need to update your workflow as follows:

  1. Retrieve Device IDs: Continue using the /devices endpoint to get your list of managed devices.

  2. Fetch Applications Individually: Use the id from the device record to call the new dedicated endpoint:

    1. Device Application Retrieval
      /restful/organization/devices/:deviceId/applications.

    2. Device Extension Retrieval
      /restful/organization/devices/:deviceId/extensions

  3. Implement Pagination: The new endpoint supports limit and offset parameters, allowing you to efficiently handle devices with a large number of installed applications.

This change ensures faster response times and prevents "Repository Entity Not Found" errors that could previously occur when processing massive data payloads.

Regional Endpoints

Ensure you are using the correct base URL for your organization's data residency:

  • US / Global: https://api.swifteam.com

  • EU Tenant: https://api.eu.swifteam.com


Device and evidence retrieval

CURL request

curl --location 'https://api.swifteam.com/restful/organization/devices?q=C02WX0L0JG5H&offset=0&limit=1' \
--header 'Authorization: Bearer {TOKEN}'

Sample JSON response and its type

{
"records": [
{
"id": "6351ac3532000014004ad63f",
"isAntiVirusAppInstalled": true,
"isPasswordManagerAppInstalled": true,
"isActive": true,
"owner": {
"firstName": "Elon",
"lastName": "Huang",
"emails": [
"elon@swifteam.com"
]
},
"deviceInfo": {
"deviceName": "Admin’s MacBook Pro",
"status": "ACTIVE",
"osVersion": "15.7.1",
"osName": "macOS",
"osBuildVersion": "24G231",
"modelName": "MacBook Pro",
"modelId": "MacBookPro15,1",
"productName": "MacBookPro15,1",
"deviceType": "Laptop",
"serialNumber": "C02WX0L0JG5H",
"deviceCapacity": 250,
"availableDeviceCapacity": 230
},
"mdmDeviceInfo": {
"mdmDeviceId": "xxxxxxxx",
"mdm_LastEnrolledAt": "2025-11-02T23:09:51.075Z",
"mdm_LastPingAt": "2025-11-14T06:00:20.961Z",
"encryption": {
"encryptionStatus": "Unencrypted",
"encryptionEnabled": false
}
},
"osQueryDeviceInfo": {
"os": {
"arch": "x86_64",
"build": "20G1427",
"major": "11",
"minor": "7",
"name": "macOS",
"patch": "10",
"version": "11.7.10"
},
"hardware": {
"chipType": "",
"cpuType": "Dual-Core Intel Core i5",
"currentProcessorSpeed": "2.4 GHz",
"l2CacheCore": "256 KB",
"l3Cache": "3 MB",
"machineModel": "MacBookPro6,2",
"machineName": "MacBook Pro",
"modelNumber": "",
"modelSpec": {
"colors": [],
"fullName": "MacBook Pro (15-inch, Mid 2010)",
"imageURL": "https://cdsassets.apple.com/live/7WUAS350/images/macbook-pro/macbook-pro-mid-2010-15in-device.jpg",
"modelIdentifier": [
"MacBookPro6,2"
],
"newestOperatingSystem": "macOS High Sierra",
"partNumbers": [
"MC373xx/A",
"MC372xx/A",
"MC371xx/A"
],
"productYear": "2010",
"productYearInt": 2010,
"screenSize": "15-inch",
"techSpecsURL": "https://support.apple.com/en-us/112605",
"userGuideURL": "https://cdsassets.apple.com/live/6GJYWVAV/user/ma1527_macbook_pro_15inch_mid2010.pdf"
},
"numberProcessors": "2",
"physicalMemory": "8 GB"
}
},
"systemPolicy": {
"password": {
"minLength": 4,
"pinHistory": 0,
"allowSimple": true,
"maxInactivity": 0,
"maxGracePeriod": 0,
"minimumPasswordAge": 0,
"maximumPasswordAge": 0,
"minComplexChars": 0,
"maxFailedAttempts": 0,
"requireAlphanumeric": false,
"minutesUntilFailedLoginReset": 0,
"lockoutBadCount": 0,
"lockoutDuration": 0
},
"screenSaver": {
"idleTime": 0,
"askForPassword": false,
"askForPasswordDelay": -1,
"screenSaveActive": false,
"screenSaverExe": "",
"screenSaverGracePeriod": 0
}
}
}
],
"meta": {
"totalCount": 1,
"resultCount": 1,
"haveMore": false
}
}
Did this answer your question?