snipeit-skillInteract with Snipe-IT asset management via REST API. Use when working with assets (hardware), users, licenses, accessories, consumables, components, locatio...
Install via ClawdBot CLI:
clawdbot install bivex/snipeit-skillSnipe-IT REST API returns 200 OK for all valid HTTP requests.
Check .status field in response — "success" or "error".
Base URL: $SNIPEIT_URL/api/v1
snipe() {
local method="${1:-GET}"
local endpoint="$2"
local data="${3:-}"
local args=(
-s -X "$method"
-H "Authorization: Bearer $SNIPEIT_API_TOKEN"
-H "Accept: application/json"
-H "Content-Type: application/json"
)
[ -n "$data" ] && args+=(-d "$data")
curl "${args[@]}" "${SNIPEIT_URL}/api/v1${endpoint}" | jq .
}
# Shortcuts
snipe_get() { snipe GET "$1"; }
snipe_post() { snipe POST "$1" "$2"; }
snipe_patch() { snipe PATCH "$1" "$2"; }
snipe_put() { snipe PUT "$1" "$2"; }
snipe_delete() { snipe DELETE "$1"; }
# List all assets (with pagination)
snipe_get "/hardware?limit=50&offset=0"
# Search assets
snipe_get "/hardware?search=MacBook&limit=20"
# Filter by status label
snipe_get "/hardware?status_id=2&limit=50"
# Get asset by ID
snipe_get "/hardware/42"
# Get asset by asset tag
snipe_get "/hardware/bytag/ASSET-001"
# Get asset by serial number
snipe_get "/hardware/byserial/SN123456"
# Create asset
snipe_post "/hardware" '{
"asset_tag": "ASSET-001",
"model_id": 5,
"status_id": 2,
"name": "MacBook Pro 16",
"serial": "SN123456",
"location_id": 1,
"notes": "Assigned to dev team"
}'
# Update asset (PATCH = partial update)
snipe_patch "/hardware/42" '{
"name": "MacBook Pro 16 (updated)",
"status_id": 3,
"notes": "Screen replaced"
}'
# Full update (PUT = replace all fields)
snipe_put "/hardware/42" '{
"asset_tag": "ASSET-001",
"model_id": 5,
"status_id": 2,
"name": "MacBook Pro 16",
"serial": "SN123456"
}'
# Delete asset
snipe_delete "/hardware/42"
# Checkout asset to user
snipe_post "/hardware/42/checkout" '{
"checkout_to_type": "user",
"assigned_user": 7,
"note": "Assigned for remote work",
"checkout_at": "2025-01-15",
"expected_checkin": "2025-12-31"
}'
# Checkout asset to location
snipe_post "/hardware/42/checkout" '{
"checkout_to_type": "location",
"assigned_location": 3,
"note": "Conference room setup"
}'
# Checkout asset to another asset
snipe_post "/hardware/42/checkout" '{
"checkout_to_type": "asset",
"assigned_asset": 15
}'
# Checkin asset
snipe_post "/hardware/42/checkin" '{
"note": "Returned after use",
"checkin_at": "2025-06-01"
}'
# Audit asset (confirm location)
snipe_post "/hardware/audit" '{
"asset_tag": "ASSET-001",
"location_id": 2,
"note": "Verified during quarterly audit"
}'
# Get audit history
snipe_get "/hardware/audit/due"
snipe_get "/hardware/audit/overdue"
# List assets checked out to a user
snipe_get "/users/7/assets"
# Restore deleted asset
snipe_post "/hardware/42/restore" '{}'
# List all users
snipe_get "/users?limit=50"
# Search users
snipe_get "/users?search=john&limit=20"
# Get user by ID
snipe_get "/users/7"
# Get current API user
snipe_get "/users/me"
# Create user
snipe_post "/users" '{
"first_name": "John",
"last_name": "Doe",
"username": "john.doe",
"email": "john.doe@example.com",
"password": "SecurePass123!",
"password_confirmation": "SecurePass123!",
"department_id": 2,
"location_id": 1,
"employee_num": "EMP-001",
"jobtitle": "Developer",
"activated": true
}'
# Update user
snipe_patch "/users/7" '{
"department_id": 3,
"jobtitle": "Senior Developer"
}'
# Delete user
snipe_delete "/users/7"
# Get user's assets
snipe_get "/users/7/assets"
# Get user's licenses
snipe_get "/users/7/licenses"
# Get user's accessories
snipe_get "/users/7/accessories"
# Get user's consumables
snipe_get "/users/7/consumables"
# List all licenses
snipe_get "/licenses?limit=50"
# Search licenses
snipe_get "/licenses?search=Office&limit=20"
# Get license by ID
snipe_get "/licenses/3"
# Create license
snipe_post "/licenses" '{
"name": "Microsoft Office 365",
"serial": "XXXXX-XXXXX-XXXXX",
"seats": 25,
"category_id": 4,
"manufacturer_id": 2,
"license_email": "it@example.com",
"purchase_date": "2025-01-01",
"expiration_date": "2026-01-01",
"purchase_cost": "299.99",
"notes": "Annual subscription"
}'
# Update license
snipe_patch "/licenses/3" '{
"seats": 30,
"notes": "Seats increased"
}'
# Delete license
snipe_delete "/licenses/3"
# List license seats (who has it checked out)
snipe_get "/licenses/3/seats"
# Checkout license seat to user
snipe_post "/licenses/3/seats/12/checkout" '{
"assigned_to": 7,
"note": "Developer license"
}'
# Checkin license seat
snipe_delete "/licenses/3/seats/12/checkin"
# List all accessories
snipe_get "/accessories?limit=50"
# Get accessory by ID
snipe_get "/accessories/8"
# Create accessory
snipe_post "/accessories" '{
"name": "USB-C Hub",
"category_id": 5,
"manufacturer_id": 3,
"qty": 10,
"purchase_date": "2025-01-01",
"purchase_cost": "49.99",
"location_id": 1
}'
# Update accessory
snipe_patch "/accessories/8" '{"qty": 15}'
# Delete accessory
snipe_delete "/accessories/8"
# Checkout accessory to user
snipe_post "/accessories/8/checkout" '{
"assigned_to": 7,
"note": "For home office"
}'
# Checkin accessory
snipe_post "/accessories/8/checkin" '{
"note": "Returned"
}'
# List checked-out accessories
snipe_get "/accessories/8/checkedout"
# List consumables
snipe_get "/consumables?limit=50"
# Get consumable by ID
snipe_get "/consumables/5"
# Create consumable
snipe_post "/consumables" '{
"name": "Printer Paper A4",
"category_id": 6,
"qty": 500,
"item_no": "PP-A4-500",
"purchase_cost": "9.99",
"location_id": 1
}'
# Checkout consumable (decrements qty)
snipe_post "/consumables/5/checkout" '{
"assigned_to": 7,
"note": "For printer"
}'
# List components
snipe_get "/components?limit=50"
# Get component by ID
snipe_get "/components/12"
# Create component
snipe_post "/components" '{
"name": "RAM 16GB DDR4",
"category_id": 7,
"qty": 20,
"serial": "RAM-SN-001",
"purchase_cost": "89.99",
"location_id": 1
}'
# Checkout component to asset
snipe_post "/components/12/checkout" '{
"assigned_to": 42,
"assigned_qty": 2,
"note": "Upgrade"
}'
# Checkin component
snipe_post "/components/12/checkin" '{
"checkin_qty": 2
}'
# List locations
snipe_get "/locations?limit=50"
# Get location by ID
snipe_get "/locations/1"
# Create location
snipe_post "/locations" '{
"name": "Kyiv Office",
"address": "Khreschatyk 1",
"city": "Kyiv",
"country": "UA",
"currency": "UAH"
}'
# Update location
snipe_patch "/locations/1" '{"name": "Kyiv HQ"}'
# Delete location
snipe_delete "/locations/1"
# Get assets at location
snipe_get "/locations/1/assets"
# Get users at location
snipe_get "/locations/1/users"
# List departments
snipe_get "/departments?limit=50"
# Get department by ID
snipe_get "/departments/2"
# Create department
snipe_post "/departments" '{
"name": "Engineering",
"location_id": 1,
"manager_id": 5
}'
# Update / Delete
snipe_patch "/departments/2" '{"name": "Engineering & DevOps"}'
snipe_delete "/departments/2"
# List models
snipe_get "/models?limit=50"
# Get model by ID
snipe_get "/models/5"
# Create model
snipe_post "/models" '{
"name": "MacBook Pro 16 M3",
"manufacturer_id": 1,
"category_id": 1,
"model_number": "MBP16-M3-2024",
"depreciation_id": 1,
"eol": 36
}'
# List all status labels
snipe_get "/statuslabels"
# Get status label by ID
snipe_get "/statuslabels/2"
# Create status label
snipe_post "/statuslabels" '{
"name": "In Repair",
"type": "undeployable",
"color": "#ff6600",
"show_in_nav": true,
"default_label": false
}'
# Types: deployable | pending | undeployable | archived
# List categories
snipe_get "/categories?limit=50"
# Create category
snipe_post "/categories" '{
"name": "Laptops",
"category_type": "asset",
"eula": false,
"require_acceptance": false
}'
# category_type: asset | accessory | consumable | component | license
# Manufacturers
snipe_get "/manufacturers?limit=50"
snipe_post "/manufacturers" '{"name": "Apple", "url": "https://apple.com"}'
snipe_patch "/manufacturers/1" '{"support_email": "support@apple.com"}'
# Suppliers
snipe_get "/suppliers?limit=50"
snipe_post "/suppliers" '{
"name": "Tech Distributor LLC",
"email": "orders@techdist.com",
"phone": "+380441234567",
"address": "Kyiv, Ukraine"
}'
# List maintenances
snipe_get "/maintenances?limit=50"
# Get maintenance by ID
snipe_get "/maintenances/3"
# Create maintenance record
snipe_post "/maintenances" '{
"asset_id": 42,
"supplier_id": 2,
"asset_maintenance_type": "Repair",
"title": "Screen replacement",
"start_date": "2025-06-01",
"completion_date": "2025-06-05",
"cost": "150.00",
"notes": "Cracked screen replaced under warranty",
"is_warranty": true
}'
# Update maintenance
snipe_patch "/maintenances/3" '{"completion_date": "2025-06-04", "cost": "120.00"}'
# Delete maintenance
snipe_delete "/maintenances/3"
# Activity log (recent actions)
snipe_get "/reports/activity?limit=50"
# Filter activity by item type
snipe_get "/reports/activity?item_type=App%5CModels%5CAsset&limit=20"
# Filter by action type
snipe_get "/reports/activity?action_type=checkout&limit=20"
# Filter by user
snipe_get "/reports/activity?user_id=7&limit=20"
# List all custom fields
snipe_get "/fields"
# List fieldsets
snipe_get "/fieldsets"
# Get fieldset by ID (includes its fields)
snipe_get "/fieldsets/2"
# Update custom field value on asset (use field's db_column_name)
snipe_patch "/hardware/42" '{
"custom_fields": {
"_snipeit_purchase_order_1": "PO-2025-001",
"_snipeit_warranty_months_2": "36"
}
}'
# Get app settings
snipe_get "/settings"
# List backup files
snipe_get "/settings/backups"
# Download backup
snipe_get "/settings/backups/download/backup-2025-06-01.zip"
# Get app version
snipe_get "/version"
# 1. Get or create model
model_id=$(snipe_get "/models?search=MacBook+Pro+16" | jq '.rows[0].id // empty')
# 2. Create asset
asset_id=$(snipe_post "/hardware" "{
\"asset_tag\": \"ASSET-$(date +%Y%m%d-%H%M)\",
\"model_id\": $model_id,
\"status_id\": 2,
\"name\": \"MacBook Pro 16\",
\"location_id\": 1
}" | jq '.payload.id')
echo "Created asset ID: $asset_id"
# 3. Checkout to user
snipe_post "/hardware/$asset_id/checkout" "{
\"checkout_to_type\": \"user\",
\"assigned_user\": 7,
\"note\": \"New hire onboarding\"
}"
# Get all assets overdue for audit
snipe_get "/hardware/audit/overdue" | jq '.rows[] | {id, asset_tag, name, last_audit_date}'
# Confirm each asset location
while IFS= read -r asset_tag; do
snipe_post "/hardware/audit" "{
\"asset_tag\": \"$asset_tag\",
\"location_id\": 1
}" | jq '{status, messages}'
done < asset_tags.txt
# For each license, compare seats vs checked out
snipe_get "/licenses?limit=100" | jq '.rows[] | {
name,
total_seats: .seats,
available_seats: .free_seats_count,
checked_out: (.seats - .free_seats_count)
}'
user_id=7
# Get all assets
snipe_get "/users/$user_id/assets" | jq '.rows[] | .id' | while read asset_id; do
snipe_post "/hardware/$asset_id/checkin" '{"note": "User offboarding"}'
echo "Checked in asset $asset_id"
done
# Get all accessories
snipe_get "/users/$user_id/accessories" | jq '.rows[] | .id' | while read acc_id; do
snipe_post "/accessories/$acc_id/checkin" '{"note": "User offboarding"}'
done
# Deactivate user
snipe_patch "/users/$user_id" '{"activated": false}'
echo "User $user_id deactivated"
snipe_safe() {
local result
result=$(snipe "$@")
local status=$(echo "$result" | jq -r '.status // "success"')
if [ "$status" = "error" ]; then
echo "❌ Error: $(echo "$result" | jq -r '.messages')" >&2
return 1
fi
echo "$result"
}
# Usage
snipe_safe GET "/hardware/42"
snipe_safe POST "/hardware/42/checkout" '{"checkout_to_type":"user","assigned_user":7}'
export SNIPEIT_URL="https://assets.w-w.top"
export SNIPEIT_API_TOKEN="your_token_here"
Getting API token:
Important notes:
Content-Type: application/json AND Accept: application/json200 OK — check .status field for "success" / "error"?limit= and ?offset= for pagination (max 500 per request)YYYY-MM-DD"99.99" not numberGenerated Mar 1, 2026
An IT department uses the skill to track hardware assets like laptops and servers across multiple locations. They can quickly search for devices, update statuses after maintenance, and generate audit reports to ensure compliance with asset policies, reducing manual tracking errors.
HR and IT teams automate equipment assignment during onboarding by checking out assets and licenses to new hires. During offboarding, they use the skill to check in all items, update records, and reassign resources, streamlining the process and preventing asset loss.
A company manages software licenses to avoid legal risks and optimize costs. The skill helps track license seats, check them out to specific users, and monitor expiration dates, ensuring compliance with vendor agreements and reducing overspending on unused licenses.
A field service organization uses the skill to manage tools and equipment checked out to technicians. They can update locations in real-time, schedule maintenance, and verify asset conditions during audits, improving operational efficiency and reducing equipment downtime.
A university or school tracks IT equipment like projectors and laptops across departments. The skill enables checking out items for classes or events, monitoring usage patterns, and managing consumables, ensuring resources are available when needed and reducing losses.
Offer the skill as part of a subscription-based IT management platform, charging monthly fees per user or asset. This provides recurring revenue while helping clients automate asset tracking and reduce operational costs through efficient API integrations.
Provide custom integration services to businesses implementing Snipe-IT, using the skill to tailor workflows like automated audits or reporting. Revenue comes from project-based fees and ongoing support contracts, leveraging expertise in asset management systems.
Release a basic version of the skill for free to attract users, then monetize through premium features like advanced analytics, bulk operations, or compliance reporting. This model drives adoption and converts users to paid plans for enhanced functionality.
💬 Integration Tip
Ensure environment variables SNIPEIT_URL and SNIPEIT_API_TOKEN are securely configured, and use the provided helper functions to simplify API calls, focusing on common operations like asset checkouts and searches.
Automatically update Clawdbot and all installed skills once daily. Runs via cron, checks for updates, applies them, and messages the user with a summary of what changed.
Full desktop computer use for headless Linux servers. Xvfb + XFCE virtual desktop with xdotool automation. 17 actions (click, type, scroll, screenshot, drag,...
Essential Docker commands and workflows for container management, image operations, and debugging.
Tool discovery and shell one-liner reference for sysadmin, DevOps, and security tasks. AUTO-CONSULT this skill when the user is: troubleshooting network issues, debugging processes, analyzing logs, working with SSL/TLS, managing DNS, testing HTTP endpoints, auditing security, working with containers, writing shell scripts, or asks 'what tool should I use for X'. Source: github.com/trimstray/the-book-of-secret-knowledge
Deploy applications and manage projects with complete CLI reference. Commands for deployments, projects, domains, environment variables, and live documentation access.
Monitor topics of interest and proactively alert when important developments occur. Use when user wants automated monitoring of specific subjects (e.g., product releases, price changes, news topics, technology updates). Supports scheduled web searches, AI-powered importance scoring, smart alerts vs weekly digests, and memory-aware contextual summaries.