Guides
Create a Buyback Quote

Create a Buyback Quote

Buyback quotes let you price devices for a seller (e.g. a school district trading in old devices).

Prerequisites

  • API key with scopes buyback:read and buyback:write

Step 1 — Look up pricing

curl "https://api.spectradiag.com/api/v1/buyback/pricing/lookup?make=Apple&model=iPhone%2013&storage=128GB&carrier=Unlocked" \
  -H "Authorization: Bearer spk_live_xxx"

Response:

{
  "success": true,
  "data": {
    "sku": "APIP13128UN",
    "manufacturer": "Apple",
    "model": "iPhone 13",
    "capacity": "128GB",
    "carrier": "Unlocked",
    "conditionbrokenprice": 85.00,
    "conditionpoorprice": 180.00,
    "conditionaverageprice": 320.00,
    "conditionexcellentprice": 425.00,
    "conditionnewprice": 475.00
  }
}

Step 2 — Create a quote

curl -X POST "https://api.spectradiag.com/api/v1/buyback/quotes" \
  -H "Authorization: Bearer spk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Lincoln Elementary Spring 2026",
    "client_value": 85,
    "client_calc": 0
  }'

client_calc: 0 means the client keeps 85%. client_calc: 1 means a fixed $85 per device.

Response returns a { id: 42 }.

Step 3 — Add items to the quote

curl -X POST "https://api.spectradiag.com/api/v1/buyback/quotes/42/items" \
  -H "Authorization: Bearer spk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "APIP13128UN",
    "grade": "conditionaverageprice",
    "sim": "Unlocked",
    "quantity": 25,
    "value": 320.00,
    "client_share": 272.00
  }'

The value is what you pay; client_share is what goes to the client (if doing a percentage split).

Step 4 — Approve or decline

curl -X PATCH "https://api.spectradiag.com/api/v1/buyback/quotes/42/status" \
  -H "Authorization: Bearer spk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{ "status": 1 }'
StatusMeaning
0Declined
1Approved
2Pending (default)

Webhooks

  • buyback.quote.created fires when a quote is created
  • buyback.quote.approved fires on status → 1
  • buyback.quote.declined fires on status → 0

Subscribe via /webhooks (see Register Webhooks).