Jamf API Command Builder assembles requests for Jamf Pro Classic API and Pro API endpoints, including multi-step workflows. It emits curl, Python, or URL output with placeholders that must be replaced with values from your own Jamf Pro environment.
Available at no cost in any modern web browser. JavaScript is required to generate output.
Use it to inspect request shape and endpoint parameters before running an administrative action. Do not paste production bearer tokens, passwords, or device passcodes into a shared command.
CSV bulk mode: columns are now matched by header name (not position), so CSV column order no longer matters; mapped columns can be substituted into JSON request bodies (not just URL path parameters), and the script warns when a required path parameter has no mapped column
Corrected payload schemas against Jamf's OpenAPI: static-group create/update now use the top-level assignments array of computer IDs (not a members/serial-number structure); the Computer PreStage create/update endpoints use /api/v3 with the full set of required fields (including the nested locationInformation and purchasingInformation objects and deviceEnrollmentProgramInstanceId)
v1.5.3
Corrected Pro API endpoint paths verified against Jamf's official API index: static computer/mobile-device groups now use /api/v2/…/static-groups (the bare paths are read-only lists); removed the non-existent Pro os-x-configuration-profiles (macOS profiles are Classic-API only); replaced the non-existent app-store-apps with Volume Purchasing (VPP) locations; MDM "Get Command Status" now uses the filtered list (there is no per-UUID path)
Python "Get Bearer Token" now authenticates with credentials instead of a circular bearer header
Inventory-preload CSV endpoints now generate a multipart file upload (-F file=@… / files=) instead of an empty JSON body; Classic MDM-command endpoints no longer emit a spurious body; Classic writes print the XML response
Corrected payload schemas: managed software update updateAction uses the DOWNLOAD_INSTALL family (not DOWNLOAD_AND_INSTALL); MDM commandType uses valid v2 values (SHUT_DOWN_DEVICE, no UNMANAGE_DEVICE/BLANK_PUSH); inventory-preload drops the invalid "Apple TV" device type
Chain builder: presets now bake their field values (managementId, command type) into the request body so they actually take effect; fixed presets that used the wrong operation or an unsupported nested iteration; query values are always URL-encoded; step list-detection covers filtered lists, not just "Get All"
v1.5.2
Basic Auth now generates a two-step token flow (mint a bearer token, then call the endpoint) — Jamf Pro 11.5+ rejects Basic Auth on resource endpoints, accepting it only to obtain a token
Python output for JSON bodies now uses json.loads() so true/false/null are valid (previously raised NameError)
Chain Python now wires captured step values into request bodies, iterates the correct field (e.g. general.managementId), and handles payload-driven iteration
The "Get Bearer Token" call now uses credentials (-u) instead of a circular bearer header
Managed Software Update plans: removed the invalid INSTALL_ASAP action and default specificVersion to "NA" unless versionType is SPECIFIC_VERSION
Chain bodies that reference a captured value more than once now substitute every occurrence; the bearer-token lifetime note no longer hard-codes a duration (tokens are short-lived — check the token response's expires value)
v1.5.1
Updated the deprecation note on the Jamf Pro API /api/v1/computers-inventory endpoints: the v1 Computer Inventory endpoints are deprecated in favor of the newer /api/v3/ (and /api/v2/) Computer Inventory endpoints. Classic /JSSResource/computers remains deprecated as of Jamf Pro 11.15.0
Mass offboarding presets: CSV-driven bulk lock and bulk wipe workflows for rapid device recovery during layoffs or security incidents
Smart Group → Bulk MDM Command preset: resolve managementIds and send commands to all group members
PreStage scope management, config profile backup, policy log flush, bulk EA update, and fleet security posture report presets
Each preset includes a tooltip description explaining what the workflow does
Added section-level deprecation banner when Classic API (Legacy) is selected
Download buttons now fall back to data URI when Blob URLs are blocked
Fixed workflow card clicks redirecting to homepage instead of populating the form
v1.4.0
Fixed inventory preload template — removed all placeholder/sample data; empty fields now default to blank
Payload builder now omits empty optional fields from generated JSON instead of including them as empty strings (only required fields like serialNumber and deviceType are always included)
Added visible breadcrumbs and related tool cross-links
v1.3.0
Added token refresh template in generated chain scripts (commented, ready to uncomment)
Added pagination loop template for paginated endpoints in chain mode
Added rate limiting (sleep 0.5s) in iteration loops to prevent API throttling
Python output now uses requests.Session() for connection reuse
Fixed section parameter to use multiple §ion= params instead of comma-separated
Added deprecation warnings inline for v1 computers-inventory endpoints
Added URL state sharing
v1.2.0
Fixed critical bug: payload variable references now use double-quoted strings so bash expands variables correctly
Chain builder now detects variable references in payload fields (not just URL params) and sets up proper iteration loops
Added managementId and serialNumber to Computers Inventory response fields — managementId is required for MDM commands
Iteration now extracts the correct field (e.g., general.managementId) instead of always using .id
Pagination warning upgraded to highlight risk of partial results in bulk operations
Added variable reference (📎) buttons to chain payload fields
Added deprecation warnings for /api/v1/computers-inventory endpoints
Added section query parameter to inventory endpoints for filtering response data
v1.1.1
Added interactive Payload Builder to chain builder steps (form fields, dropdowns, raw editor)
Chain-generated scripts now use actual payload templates instead of empty placeholders
v1.1.0
Added interactive Payload Builder with form fields, dropdowns for enum values, and boolean selectors
Added raw editor toggle for advanced payload editing
Added 7 new Pro API endpoint categories: Computer Groups, Mobile Device Groups, MDM Commands, Configuration Profiles, Inventory Preload, Managed Software Updates, App Store Apps
Pro API now defaults first; Classic API labeled as Legacy
Added CSV import for bulk operations with file upload, preview, and column mapping
Added Common Tasks workflow presets for scope management, MDM commands, and inventory preload
Fixed critical URL encoding bug where variable references were percent-encoded
Fixed Python-in-bash quoting issues in chain builder
Switched from python3 to jq for JSON parsing in generated bash scripts
Added error handling (HTTP status checking) to all generated scripts
Added chain step compatibility validation in analyzer
Improved credential handling with clear placeholder variables
v1.0.0
Initial release (Alpha)
Classic API support with 12 endpoint categories
Jamf Pro API support with 8 endpoint categories
Bearer Token, Basic Auth, and API Client authentication modes
Credential-safe design with placeholder variables
curl, Python, and URL-only output formats
Chain/Pipeline builder for multi-step API workflows
Common chain presets (Token→Request, Computer→Flush, Group→Command)
Iteration support for bulk operations
Safety warnings for DELETE operations and destructive MDM commands