ColdLatch

Guides

Connect any ERP or warehouse system to ColdLatch: the integration API

Published 9 October 2026. For developers and integrators. 6 minute read.

Short answer: an administrator makes a key in ColdLatch. With it your system does three things over HTTPS: it sends the stock of each storage unit, it reads the batch blocks that QA approved, and it tells ColdLatch when each block is done or could not be done.

ColdLatch connects to SAP S/4HANA by itself. This guide is for everything else: another ERP, a warehouse management system, or software your company wrote. Your system makes the calls; ColdLatch never needs to reach into your network.

How the pieces fit

  1. Your system sends its stock. For each storage unit: which materials and batches are in it, and how much. Send it whenever it changes, or once a night.
  2. A temperature excursion is confirmed. ColdLatch proposes a block for each line of that unit's stock and tells QA.
  3. QA decides and signs, batch by batch, with a password and a reason.
  4. Your system learns of each approved block, either by asking for the list, or at once through a webhook.
  5. Your system blocks the stock and says so. ColdLatch records the reference you give, and the alert can then be closed.

This applies when the company has no SAP connection in ColdLatch. With SAP connected, ColdLatch asks SAP for the stock and posts the blocks there, and the calls below have nothing to return.

Get a key

  1. In ColdLatch, an administrator opens Settings, then Integrations, and presses Keys for your own systems.
  2. Type what will use the key, for example "Warehouse system", and press Create a key.
  3. Copy the key at once. ColdLatch keeps only a fingerprint and cannot show it again. A lost key is revoked and replaced by a new one.

Send the key with every call. It opens only the addresses in this guide, for your company only. The audit log records each change with the name you gave the key.

Authorization: Bearer cli_your-key

1. Find the storage units

GET https://coldlatch.com/api/v1/integration/storage-units
[
  {
    "id": "5d0c7a0e-3b1f-4f58-9a43-0d6d2b6a1c11",
    "name": "Vaccine store B",
    "plant": "1710",
    "storageLocation": "0002",
    "status": "active"
  }
]

Match each one to a location in your system once, by name or by the plant and storageLocation codes entered in ColdLatch, and keep its id.

2. Send the stock of a storage unit

PUT https://coldlatch.com/api/v1/integration/storage-units/{id}/stock
Content-Type: application/json

{
  "items": [
    { "material": "VAC-MMR-2026", "batch": "MMR260411", "quantity": 1200, "unit": "EA" },
    { "material": "INS-GLARGINE-100", "batch": "", "quantity": 220.5, "unit": "KG" }
  ]
}
FieldMeaning
materialRequired. Your material or article number, up to 40 characters.
batchUp to 10 characters. An empty string for stock that is not kept by batch.
quantityRequired. Above zero, with at most three decimals.
unitRequired. Up to 3 characters, for example EA or KG.

3. Read the blocks waiting for you

GET https://coldlatch.com/api/v1/integration/blocks
[
  {
    "id": "0b7e6d5c-4a3f-4e2d-9c1b-0a9f8e7d6c5b",
    "ref": "TC-000042",
    "alertId": "8f3c2a1e-6b1d-4c0a-9a55-2f0d6f1b7c21",
    "status": "approved",
    "material": "VAC-MMR-2026",
    "batch": "MMR260411",
    "quantity": 1200,
    "unit": "EA",
    "plant": "1710",
    "storageLocation": "0002",
    "reference": null,
    "error": null
  }
]

Without a parameter the list holds the blocks QA has approved and nobody has confirmed yet: the ones your system should act on. Add ?status= with proposed, approved, rejected, succeeded or failed to see the others. Only blocks of alerts that are still open are listed, oldest first.

Asking once a minute is plenty. To be told at once instead, add a webhook in ColdLatch and act on action.approved messages whose action.type is EXTERNAL_BLOCK; action.id there is the id here.

4. Say that a block is done

POST https://coldlatch.com/api/v1/integration/blocks/{id}/confirm
Content-Type: application/json

{ "reference": "WMS-HOLD-7781" }

reference is optional: the number of the hold or block in your system, up to 20 characters. It is shown on the alert and printed in the excursion report. The answer is the block, now with the status succeeded.

5. Or say that it could not be done

POST https://coldlatch.com/api/v1/integration/blocks/{id}/fail
Content-Type: application/json

{ "error": "Batch MMR260411 is not in bin C-14" }

Write error for a person (up to 500 characters): QA sees it on the alert and it is sent to the company's notification channels. The block stays open. When it has been done after all, call confirm, or a QA user marks it as blocked in ColdLatch.

The answers

AnswerWhat it means
200, 201Done.
400The body is not as described above. The message names the field.
401The key is missing, wrong or revoked.
404No such storage unit or block in your company.
409The block is not in a state for that call: not approved yet, rejected, or already confirmed. Read it again with GET; a block that is already succeeded needs nothing more.
429More than 300 calls in a minute from one address.

What it does not do yet

Also: Connect your own system to ColdLatch with a webhook