QFM API Guide

QuickFreeze QFM API

Programmatically control and monitor your QFM units and zones from your WMS or building-automation system — set cycle times, pause and resume fans, and read live status.

The API lets your software address units by QFM serial number and zones by the zone ID QuickFreeze issues you. Everything runs through one secured endpoint, scoped to your facility’s own units and zones.

Connection

Endpoint
https://qfmonitoring.com/api/v1/integrations/http/{your-routing-key}
issued per facility
Auth header
X-QF-API-Key: {your-api-key} — issued per facility; SSL/TLS required
Methods
HTTP GET (query parameters) or POST (JSON body)
Responses
Control commands return 204 received; reads return 200 with a JSON body. A missing/invalid key returns 403.

Outcomes of control commands (completion, rejection) are delivered to your callback URL — see Callbacks.

1. Unit commands

Every unit call requires QFM_SERIAL (e.g. QFM-18083) and RACK_LOCATION (your location for that unit). The rack is validated against the unit as a safety check — a mismatch is rejected so you can’t adjust the wrong unit. COMMAND selects the action and defaults to set_cycle.

Set cycle time

ParameterRequiredNotes
INCUBATIONyes*Cycle run time in whole hours
ITEM_NUMBER*SKU — if INCUBATION is omitted, the cycle time comes from your SKU library
PALLET_TAGnoPallet / LP / LPN — echoed back on completion
POnoPO number — echoed back on completion

* Provide INCUBATION or ITEM_NUMBER (an explicit INCUBATION wins).

curl "https://qfmonitoring.com/api/v1/integrations/http/{your-routing-key}\
?QFM_SERIAL=QFM-18083&RACK_LOCATION=A12-03&INCUBATION=48&ITEM_NUMBER=11000&PO=PO12345" \
     -H "X-QF-API-Key: {your-api-key}"

Pause / resume fans

DURATION (optional, in minutes) is a dead-man auto-resume: if you don’t send resume within the window, the unit resumes itself — protection against a missed or failed resume.

curl ".../{your-routing-key}?QFM_SERIAL=QFM-18083&RACK_LOCATION=A12-03&COMMAND=pause&DURATION=30" \
     -H "X-QF-API-Key: {your-api-key}"

curl ".../{your-routing-key}?QFM_SERIAL=QFM-18083&RACK_LOCATION=A12-03&COMMAND=resume" \
     -H "X-QF-API-Key: {your-api-key}"

Poll a unit (read latest)

curl ".../{your-routing-key}?QFM_SERIAL=QFM-18083&RACK_LOCATION=A12-03&COMMAND=poll" \
     -H "X-QF-API-Key: {your-api-key}"

→ 200 {"QFM_SERIAL":"QFM-18083","rackLocation":"A12-03","status":"READY",
       "plenumTemp":"-12.4","deltap":"0.42","sealQuality":"GOOD","cycleRemainingHrs":"0"}

Bulk — many units in one call

POST a JSON array; each element is an independent unit command, individually authorized.

curl -X POST ".../{your-routing-key}" \
     -H "X-QF-API-Key: {your-api-key}" -H "Content-Type: application/json" \
     -d '[{"QFM_SERIAL":"QFM-18083","RACK_LOCATION":"A12-03","COMMAND":"pause","DURATION":30},
          {"QFM_SERIAL":"QFM-18090","RACK_LOCATION":"A12-04","COMMAND":"pause","DURATION":30}]'

2. Zone commands

A zone is addressed by the ZONE ID QuickFreeze issues you; ownership is verified server-side. Pause/resume apply to every unit in the zone (each re-checked for ownership). DURATION auto-resume works the same as for units.

Poll a zone (aggregate read)

curl ".../{your-routing-key}?ZONE=ZONE-ABC-01" -H "X-QF-API-Key: {your-api-key}"

→ 200 {"zone":"ZONE-ABC-01","avgPlenTemp":"-15.2","readyCountTotal":"2","runningDevices":"1",
       "deviceCountTotal":"3","offlineCount":"0","goodSealPercent":"98.5"}

Pause / resume a zone

curl ".../{your-routing-key}?ZONE=ZONE-ABC-01&COMMAND=pause&DURATION=30" -H "X-QF-API-Key: {your-api-key}"
curl ".../{your-routing-key}?ZONE=ZONE-ABC-01&COMMAND=resume" -H "X-QF-API-Key: {your-api-key}"

3. Callbacks (push notifications)

Register a callback URL and QuickFreeze POSTs JSON to it on these events:

Cycle complete

{ "event":"cycle_complete","status":"COMPLETE","qfmSerial":"QFM-18083","rackLocation":"A12-03",
  "po":"PO12345","sku":"11000","palletTag":"LP55","ts":"..." }

Command rejected

{ "event":"command","status":"REJECTED","command":"set_cycle","qfmSerial":"QFM-18083",
  "rackLocation":"A12-03","reason":"rack_location_mismatch","ts":"..." }

reason is one of rack_location_mismatch, not_authorized_for_device.

Identity & safety

  • Each facility authenticates with its own API key and is authorized to its own units and zones only.
  • For units, RACK_LOCATION must match the location mapped to that QFM_SERIAL, or the request is rejected — this prevents adjusting the wrong unit. Zone commands re-check ownership on every member unit before acting.
  • Units are addressed by QFM serial, which stays stable across control-box swaps.
  • Values should not contain spaces or special characters. QuickFreeze may rate-limit excessive request volumes.

Getting started

QuickFreeze issues your routing key, API key, the QFM_SERIAL ↔ RACK_LOCATION map, your zone IDs, and registers your callback URL. A sandbox is available to test against before you go live.

To request access, contact your QuickFreeze representative.