> ## Documentation Index
> Fetch the complete documentation index at: https://docs.terratwin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cargo

> Defines the goods being transported and helps TerraTwin to choose the right defaults for emissions modelling.

In TerraTwin, `weight` is the only required cargo input, but the additional cargo properties can materially improve the emissions calculation.
The `category`, `densityCharacteristics`, and `climateControl` properties help TerraTwin choose more appropriate defaults for vehicles,
routes, and logistics hubs.

<Columns cols={2}>
  <Card title="Road" icon="truck">
    **Defaults affected:** load factor, empty running, and temperature-control energy use.

    `cargo.densityCharacteristics` affects road defaults for **load factor** and **empty running**. If it is not provided, TerraTwin defaults it from `cargo.category`.

    Setting `cargo.climateControl` to `REQUIRED` increases energy consumption where temperature control is modelled.
  </Card>

  <Card title="Rail" icon="train">
    **Defaults affected:** train type and temperature-control energy use.

    When a train type is not supplied directly, TerraTwin uses `cargo.category` to select the default **train type**.

    Setting `cargo.climateControl` to `REQUIRED` increases energy consumption where temperature control is modelled.
  </Card>

  <Card title="Water" icon="ship">
    **Defaults affected:** vessel type and reefer container modelling.

    When a vessel type is not supplied directly, TerraTwin uses `cargo.category` to select the default **vessel type**.

    This lets liquid fuels, liquefied gases, dry bulk goods, automobiles, and manufactured goods map to different maritime equipment defaults.

    Setting `cargo.climateControl` to `REQUIRED` causes **reefer containers** to be modelled where relevant, increasing emissions intensity.
  </Card>

  <Card title="Hubs" icon="warehouse">
    **Defaults affected:** hub type and temperature-controlled handling.

    When a hub type is not supplied directly, TerraTwin uses `cargo.category` to select the default **logistics hub type**.

    Liquid cargo categories will default to `LIQUID_BULK_TERMINAL`, while maritime terminals are selected automatically for water transport operations.

    Setting `cargo.climateControl` to `REQUIRED` increases hub emissions where temperature-controlled handling or storage is modelled.
  </Card>
</Columns>

The result is a more specific energy consumption and emissions rate selection. Instead of applying one generic freight assumption to everything, TerraTwin can model different equipment and operating patterns for different goods.

<Note>
  Think of `cargo.category` as a modelling hint. A tonne of crude oil, a tonne of clothing, and a tonne of refrigerated fish may weigh the same, but they usually move through very different logistics systems.
</Note>

***

## The cargo object

A minimal cargo object only needs weight:

```json theme={null}
{
  "cargo": {
    "weight": {
      "value": 100,
      "unit": "KILOGRAM"
    }
  }
}
```

A more descriptive cargo object gives TerraTwin more to work with:

```json theme={null}
{
  "cargo": {
    "category": "MANUFACTURED_PRODUCTS",
    "densityCharacteristics": "LIGHT",
    "climateControl": "AT_AMBIENT",
    "weight": {
      "value": 12,
      "unit": "METRIC_TONNE"
    }
  }
}
```

***

### Properties

| Property                                                          | Required | What it does                                                                                                               |
| ----------------------------------------------------------------- | -------: | -------------------------------------------------------------------------------------------------------------------------- |
| <code className="whitespace-nowrap">weight</code>                 |      Yes | The net shipment mass used to scale activity and emissions.                                                                |
| <code className="whitespace-nowrap">category</code>               |       No | Selects commodity specific defaults for vehicles, logistics hubs, density, and temperature control. Defaults to `GENERAL`. |
| <code className="whitespace-nowrap">densityCharacteristics</code> |       No | Indicates whether cargo is light, average, or heavy. Defaults from `category`.                                             |
| <code className="whitespace-nowrap">climateControl</code>         |       No | Adds active temperature control energy in transport operations. Defaults based on `category`.                              |

***

## Weight

`cargo.weight` is the only mandatory cargo property.

The weight should include the goods and the packaging provided by the shipper. It should **not** include carrier or logistics-service-provider handling equipment, such as pallets, shipping containers, or other equipment added after handover.

Supported units:

* `KILOGRAM`
* `POUND`
* `METRIC_TONNE`
* `US_SHORT_TON`

Examples:

```json theme={null}
{
  "cargo": {
    "weight": {
      "value": 2500,
      "unit": "KILOGRAM"
    }
  }
}
```

```json theme={null}
{
  "cargo": {
    "weight": {
      "value": 40,
      "unit": "US_SHORT_TON"
    }
  }
}
```

***

## Cargo categories

`cargo.category` describes the type of goods being transported. If it is omitted, TerraTwin uses `GENERAL`.

| Category                                                          | Typical use                                           | Default density | Default climate control |
| ----------------------------------------------------------------- | ----------------------------------------------------- | --------------- | ----------------------- |
| <code className="whitespace-nowrap">AUTOMOBILES</code>            | Finished vehicles transported by specialized carriers | `AVERAGE_MIXED` | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">BUILDING\_MATERIALS</code>    | Cement, sand, gravel, bricks, stone, lumber           | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">CEREALS</code>                | Grain crops and similar agricultural bulk goods       | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">COAL\_AND\_STEEL</code>       | Extra heavy bulk where empty returns are common       | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">GENERAL</code>                | Unspecified or miscellaneous cargo                    | `AVERAGE_MIXED` | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">LIQUEFIED\_GAS</code>         | LNG, LPG, and similar liquefied gases                 | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">LIQUID\_CHEMICALS</code>      | Bulk liquid chemical products                         | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">MANUFACTURED\_PRODUCTS</code> | Consumer or industrial manufactured goods             | `AVERAGE_MIXED` | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">OIL</code>                    | Crude oil or refined petroleum products               | `HEAVY`         | `AT_AMBIENT`            |
| <code className="whitespace-nowrap">REFRIGERATED\_BULK</code>     | Perishable goods that must be kept cold               | `AVERAGE_MIXED` | `REQUIRED`              |
| <code className="whitespace-nowrap">SOLID\_CHEMICALS</code>       | Powders, granules, pellets, or dry chemical bulk      | `HEAVY`         | `AT_AMBIENT`            |

Example:

```json theme={null}
{
  "cargo": {
    "category": "CEREALS",
    "weight": {
      "value": 28000,
      "unit": "KILOGRAM"
    }
  }
}
```

***

## Temperature controlled cargo

Use `climateControl: "REQUIRED"` when goods need active temperature regulation.

```json theme={null}
{
  "cargo": {
    "category": "GENERAL",
    "climateControl": "REQUIRED",
    "weight": {
      "value": 8000,
      "unit": "KILOGRAM"
    }
  }
}
```

Or select the refrigerated bulk cargo category:

```json theme={null}
{
  "cargo": {
    "category": "REFRIGERATED_BULK",
    "weight": {
      "value": 22,
      "unit": "METRIC_TONNE"
    }
  }
}
```

`REFRIGERATED_BULK` defaults `climateControl` to `REQUIRED`.

When climate control is required, TerraTwin includes the extra energy used for powered temperature regulation. Depending on the operation, this can represent refrigeration power on trucks, reefer containers, or refrigerated bulk vessels.

<Columns cols={2}>
  <Card title="Ambient cargo" icon="temperature-half">
    Use `AT_AMBIENT` for goods moved under natural temperature conditions.

    This is the default for most categories.
  </Card>

  <Card title="Refrigerated cargo" icon="snowflake">
    Use `REQUIRED` when the cargo needs active cooling or heating.

    This increases emissions because powered temperature control consumes additional energy.
  </Card>
</Columns>

***

## Density characteristics

`densityCharacteristics` describes whether the cargo usually fills up a vehicle or container by weight or by space.

| Value           | Meaning                                                                                                |  Density assumption |
| --------------- | ------------------------------------------------------------------------------------------------------ | ------------------: |
| `LIGHT`         | Low-density cargo that often cubes out before it weighs out, such as furniture, clothing, and footwear |    6 tonnes per TEU |
| `AVERAGE_MIXED` | Medium-density or mixed cargo                                                                          |   10 tonnes per TEU |
| `HEAVY`         | Tightly packed high-density cargo, such as metals and raw or bulk commodities                          | 14.5 tonnes per TEU |

Example: light manufactured products.

```json theme={null}
{
  "cargo": {
    "category": "MANUFACTURED_PRODUCTS",
    "densityCharacteristics": "LIGHT",
    "weight": {
      "value": 12,
      "unit": "METRIC_TONNE"
    }
  }
}
```

Example: heavy solid chemicals.

```json theme={null}
{
  "cargo": {
    "category": "SOLID_CHEMICALS",
    "densityCharacteristics": "HEAVY",
    "weight": {
      "value": 12,
      "unit": "METRIC_TONNE"
    }
  }
}
```

These two examples have the same mass. The light cargo may need more container space or different vehicle utilisation assumptions than the heavy cargo, which can change both transport and hub emissions.

***

## Examples

### 1. Minimal request using defaults

```json theme={null}
{
  "cargo": {
    "weight": {
      "value": 100,
      "unit": "KILOGRAM"
    }
  },
  "origin": {
    "type": "PLACE",
    "city": "London",
    "countryCode": "GB"
  },
  "destination": {
    "type": "PLACE",
    "city": "Berlin",
    "countryCode": "DE"
  }
}
```

TerraTwin treats the cargo as `GENERAL`, with average mixed density and ambient temperature control.

***

### 2. Climate controlled road shipment

```json theme={null}
{
  "cargo": {
    "climateControl": "REQUIRED",
    "weight": {
      "value": 5000,
      "unit": "KILOGRAM"
    }
  },
  "origin": {
    "type": "PLACE",
    "city": "Stockholm",
    "countryCode": "SE"
  },
  "destination": {
    "type": "PLACE",
    "city": "Oslo",
    "countryCode": "NO"
  },
  "transportChain": [
    {
      "type": "ROAD"
    }
  ]
}
```

This request sets `cargo.climateControl` directly to `REQUIRED`, so TerraTwin includes the additional energy needed for temperature controlled road transport.

***

### 3. Category affects harbor selection (part 1)

```json theme={null}
{
  "cargo": {
    "category": "MANUFACTURED_PRODUCTS",
    "weight": {
      "value": 10,
      "unit": "METRIC_TONNE"
    }
  },
  "origin": {
    "type": "PLACE",
    "city": "Barcelona",
    "countryCode": "ES"
  },
  "destination": {
    "type": "PLACE",
    "city": "Corfu",
    "countryCode": "GR"
  },
  "transportChain": [
    {
      "type": "WATER"
    }
  ]
}
```

For manufactured products, Terratwin defaults to container shipping. Since the destination, Corfu, does not typically support container ships, the product is routed to an alternate port, Astakos \[`GRAST`], and then transported onward by truck and ferry.

<Tabs defaultTabIndex={0}>
  <Tab title="Barcelona to Corfu via Astakos">
    <Frame caption="Barcelona to Corfu via Port of Astakos [`GRAST`]">
      <img className="block dark:hidden" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/barcelona-to-corfu-via-astakos-light.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=25b8d5a7e187d2172e495565609796c6" width="1000" height="393" data-path="images/cargo/barcelona-to-corfu-via-astakos-light.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/barcelona-to-corfu-via-astakos-dark.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=c6ed0b65ef2ac1e12aa31ad00160033f" width="1000" height="393" data-path="images/cargo/barcelona-to-corfu-via-astakos-dark.png" />
    </Frame>
  </Tab>

  <Tab title="Astakos transfer">
    <Frame caption="Port of Astakos [`GRAST`] to Corfu">
      <img className="block dark:hidden" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/astakos-to-corfu-light.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=2c442cf3a44eb690654b20187232d616" width="776" height="704" data-path="images/cargo/astakos-to-corfu-light.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/astakos-to-corfu-dark.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=308104a4e287a858b4dcd54a38325d59" width="776" height="704" data-path="images/cargo/astakos-to-corfu-dark.png" />
    </Frame>
  </Tab>
</Tabs>

***

### 4. Category affects harbor selection (part 2)

```json theme={null}
{
  "cargo": {
    "category": "BUILDING_MATERIALS",
    "weight": {
      "value": 10,
      "unit": "METRIC_TONNE"
    }
  },
  "origin": {
    "type": "PLACE",
    "city": "Barcelona",
    "countryCode": "ES"
  },
  "destination": {
    "type": "PLACE",
    "city": "Corfu",
    "countryCode": "GR"
  },
  "transportChain": [
    {
      "type": "WATER"
    }
  ]
}
```

Change the product category to building materials and the shipment follows different routing logic. This category defaults to a bulker vessel rather than container shipping, allowing the product to be shipped directly to the port of Corfu, where small bulker vessels are supported.

<Tabs defaultTabIndex={0}>
  <Tab title="Barcelona to Corfu direct">
    <Frame caption="Barcelona to Corfu">
      <img className="block dark:hidden" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/barcelona-to-corfu-direct-light.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=9978f7facdf72b68f51bfc1a6cc40434" width="955" height="380" data-path="images/cargo/barcelona-to-corfu-direct-light.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/barcelona-to-corfu-direct-dark.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=7a54d589f059bdccfc9b6b681d5555d7" width="955" height="380" data-path="images/cargo/barcelona-to-corfu-direct-dark.png" />
    </Frame>
  </Tab>

  <Tab title="Corfu harbor transfer">
    <Frame caption="Port of Corfu [`GRCFU`]">
      <img className="block dark:hidden" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/corfu-transfer-light.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=c0cec714d2e7517e16d224a4bcb0ee22" width="1175" height="708" data-path="images/cargo/corfu-transfer-light.png" />

      <img className="hidden dark:block" src="https://mintcdn.com/terratwin/0hbUXmLqgbSI5-VO/images/cargo/corfu-transfer-dark.png?fit=max&auto=format&n=0hbUXmLqgbSI5-VO&q=85&s=60590248001eaa9ce4ec07031f26bcf4" width="1175" height="708" data-path="images/cargo/corfu-transfer-dark.png" />
    </Frame>
  </Tab>
</Tabs>

***

## Recommendations

<Steps>
  <Step title="Always provide weight">
    Include `cargo.weight.value` and `cargo.weight.unit` on every calculation request.
  </Step>

  <Step title="Provide category when you know it">
    Use `cargo.category` whenever the goods fit one of the supported categories. This improves default vehicle, hub, and temperature-control assumptions.
  </Step>

  <Step title="Override density for unusual goods">
    Set `densityCharacteristics` when the category default is not representative, such as lightweight furniture under manufactured products or unusually dense packaged cargo.
  </Step>

  <Step title="Set climate control explicitly">
    Use `climateControl: "REQUIRED"` for any temperature-controlled shipment, even if the cargo category is not `REFRIGERATED_BULK`.
  </Step>

  <Step title="Provide operational details when available">
    Cargo-aware defaults are useful, but actual vehicle, vessel, train, fuel, electricity, load factor, and energy-consumption data should be provided when known.
  </Step>
</Steps>

***

## Common mistakes

* Omitting `weight` from `cargo`.
* Using `GENERAL` when a more precise category is known.
* Forgetting `climateControl: "REQUIRED"` for chilled, frozen, refrigerated, or otherwise temperature-controlled cargo outside the `REFRIGERATED_BULK` category.
* Treating `densityCharacteristics` as cosmetic metadata. It can affect road, rail, and terminal handling emissions.
* Including carrier-supplied pallets, containers, or handling equipment in `cargo.weight` when those are not part of the goods being transported.
