Batch Valuation

POST /devices/batch — value up to 10,000 devices in one request.

POST /devices/batch

Value multiple devices in one request. Supports three input formats per item. The server deduplicates by normalized device ID and sums quantities.

Costs ceil(uniqueDevicesResolved / 10) credits.

Request body

{
  "devices": [
    "MBA-M2-256-8GB",
    { "id": "IPAD-10-64-WIFI", "qty": 5 },
    {
      "deviceModelIdentifier": "mac14,2",
      "stats": {
        "memoryTotalGB": 8.5,
        "storageTotalGB": 243.8
      },
      "qty": 3
    }
  ]
}

Input formats

Each item in the devices array can be one of three formats:

FormatExampleDescription
String"MBA-M2-256-8GB"Device ID, quantity = 1
Object with id{ "id": "MBA-M2-256-8GB", "qty": 5 }Device ID with quantity
MDM payloadSee aboveRaw MDM device data — storage and RAM are auto-normalized

Limits: 1–10,000 devices per request.

Example request

curl -X POST https://api.trusttrade.com/v1/devices/batch \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "devices": [
      "MBA-M2-256-8GB",
      { "id": "IPAD-10-64-WIFI", "qty": 5 }
    ]
  }'

Example response

{
  "results": [
    {
      "deviceId": "MBA-M2-256-8GB",
      "displayName": "MacBook Air 13\" M2 256GB 8GB",
      "quantity": 1,
      "currentValuation": {
        "fair": 475,
        "good": 500,
        "excellent": 525
      },
      "msrp": 1199,
      "residualPct": 41.7,
      "valueTier": "Strong",
      "depreciation": {
        "trend": "decreasing",
        "projection": {
          "months": 12,
          "fair": 402,
          "good": 425,
          "excellent": 447
        },
        "refreshSignal": "hold",
        "confidence": "high"
      }
    }
  ],
  "unmatched": [
    {
      "input": "UNKNOWN-SKU",
      "reason": "not_found",
      "suggestions": []
    }
  ],
  "summary": {
    "itemsReceived": 10,
    "uniqueDevicesResolved": 8,
    "totalUnits": 42,
    "totalCurrentValue": 18500,
    "projectedValue": {
      "months": 12,
      "total": 15725,
      "percentChange": -15.0
    },
    "refreshBreakdown": {
      "hold": 6,
      "considerRefreshing": 1,
      "refreshNow": 1
    },
    "confidence": "high"
  },
  "currency": "USD",
  "validUntil": "2026-03-30T09:00:00Z"
}

Summary fields

The summary object provides fleet-level aggregations:

FieldDescription
itemsReceivedTotal items in the request (before deduplication)
uniqueDevicesResolvedNumber of unique device models matched
totalUnitsTotal unit count across all resolved devices
totalCurrentValueSum of good-condition values across all units
projectedValueProjected total value and percent change over N months
refreshBreakdownCount of devices by refresh signal category
confidenceOverall confidence level

Unmatched reasons

ReasonDescription
not_foundSKU not in catalog
invalid_identifierFailed validation
no_pricingIn catalog but no pricing data available
unsupported_modelKnown device but not supported (e.g., Intel Mac)
virtual_machineDetected as VM (Parallels, VMware, etc.)
unknown_modelIdentifier not recognized

Errors

StatusCodeDescription
400invalid_requestMalformed JSON body
401unauthorized / invalid_api_keyMissing or invalid API key
402insufficient_creditsInsufficient credits for this batch
422validation_errorRequest body failed schema validation
429rate_limitedRate limit exceeded
503service_unavailablePricing data temporarily unavailable