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
| Parameter | Required | Notes |
|---|---|---|
INCUBATION | yes* | Cycle run time in whole hours |
ITEM_NUMBER | * | SKU — if INCUBATION is omitted, the cycle time comes from your SKU library |
PALLET_TAG | no | Pallet / LP / LPN — echoed back on completion |
PO | no | PO number — echoed back on completion |
* Provide INCUBATION o 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_LOCATIONmust match the location mapped to thatQFM_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.
