API Reference
Freight v3 (preview1)

Intermodal Freight Endpoint version: V3 (preview 1)V3 (preview 1) ADD-ONADD-ON

⚠️
Preview Feature

This feature is currently in preview. That means that we believe the feature is good enough to start using, but:

  • There might still be bugs or edge cases we haven't covered.
  • The documentation and error messages might be less detailed.
  • We might need to make further changes in the API surface.

We need the ability to iterate quickly on preview versions, so we offer less guarantees of stability. When we make changes to the preview version, we will release a new version, and you must migrate to this new version within three months. Read more about API versioning at Climatiq here.For this reason, preview endpoints are not available without explicitly opting in. If you would like to opt-in to this preview feature, please contact us.

Climatiq allows you to use emission factors from the Global Logistics Emissions Council(GLEC) (opens in a new tab) to calculate the carbon emissions for shipping freight around the world using multiple modes of transport such as by sea, air, road or rail.

⚠️
Read the guide or changelog first

This is the API reference for the intermodal freight feature.

If you're just getting started, we highly recommend that you start with the guide that explains the concepts you will need to understand to effectively use the endpoint

If you're already using version 2 and are interested in upgrading, we suggest you start with the changelog which highlights which sections of this document to concentrate on.

Estimate

POST Calculate total estimated emissions produced by shipping an amount of cargo by the specified route.

https://preview.api.climatiq.io/freight/v3-preview1/intermodal

Request

This endpoint accepts the following parameters:

Request headersRequired HTTP headers for this request
    • Authorizationrequired string
      Bearer token containing your Climatiq API key. Example: Authorization: Bearer CLIMATIQ_API_KEY
      Don't have an API key? Get your API key here.
Request parametersShould be sent as a JSON object in the body
    • cargorequired object

      The details of the cargo being shipped

    • routerequired array of Route Legs or Locations

      An array of route parts that compose the route this cargo is taking. A route must start and end with a location, and have legs between each location. Sometimes you may omit some locations and rely on automatic routing.

curl --request POST \
--url https://preview.api.climatiq.io/freight/v3-preview1/intermodal \
--header "Authorization: Bearer $CLIMATIQ_API_KEY" \
--data '{
"route": [
{ "location": { "query": "Hamburg" } },
{
"transport_mode": "road",
"leg_details": {
"rest_of_world": {
"vehicle_type": "van",
"vehicle_weight": "lte_3.5t",
"fuel_source": "petrol"
},
"north_america": {
"vehicle_type": "moving"
},
"china": {
"vehicle_type": "rigid_truck",
"vehicle_weight": "gt_4.5t_lte_12t",
"fuel_source": "hydrogen"
}
}
},
{ "location": { "query": "Berlin" } }
],
"cargo": {
"weight": 10,
"weight_unit": "t"
}
}'

Response

A response consists of the following attributes.

Response parameters
    • co2efloat

      The total carbon dioxide equivalent emitted for the entire trip. This encompasses logistics hubs, vehicle operations and vehicle energy provisioning.

    • hub_equipment_co2efloat

      The carbon dioxide equivalent emitted for the operation of logistics hubs during the trip. This encompasses both operational and energy provisioning emissions. Logistics hubs emissions cover the transportation and movement of cargo from one mode of transportation to another, such as moving containers from a truck to a ship.

    • vehicle_operation_co2efloat

      The carbon dioxide equivalent emitted for the part of the trip where the vehicle is being operated, such as the combustion of fuel, leakage of refrigerants etc.

    • vehicle_energy_provision_co2efloat

      The carbon dioxide equivalent emitted for the provisioning of energy for the vehicle operations. This covers among others: electricity generation, electricity transmission and distribution losses, the production of fuel, and the transportation of fuel to the vehicle.

    • co2e_calculation_methodstring

      Which calculation methodology that was used for the calculation. The value of this is either "ipcc_ar4_gwp100", "ipcc_ar5_gwp100", "ipcc_ar6_gwp100" or "ipcc_mixed_gwp100". Learn more about calculation methods here.

    • co2e_unitstring

      The unit in which the CO2e field is expressed. The value of this is always kg

    • distance_kmfloat

      The distance in kilometers that the cargo has been shipped along the specified route.

    • cargo_tonnesfloat

      The weight in tonnes which is being shipped along the specified route.

    • An array that specifies the route the cargo took. This array will always consist of alternating response locations and response legs. It will always start and end with a location. Even if you have omitted any locations, they will not be omitted in the response.

{
"co2e": 2951,
"hub_equipment_co2e": 26,
"vehicle_operation_co2e": 2216,
"vehicle_energy_provision_co2e": 708.8,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"cargo_tonnes": 10,
"distance_km": 290.5,
"route": [
{
"type": "location",
"co2e": 13,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"source_trail": [
{
"data_category": "emission_factor",
"name": "Freight logistics - transshipment - ambient",
"source": "GLEC",
"source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
"year": "2024",
"region": "GLOBAL",
"region_name": "Global",
"id": "6207e899-11d9-425e-a3d7-10f7bb1b17cb"
}
],
"name": "Hamburg, Germany",
"latitude": 53.55562,
"longitude": 9.98745,
"confidence_score": 1
},
{
"type": "leg",
"co2e": 2925,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"source_trail": [
{
"data_category": "emission_factor",
"name": "Van <3.5t - Petrol",
"source": "GLEC",
"source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
"year": "2024",
"region": "EU_S_AMERICA",
"region_name": "Europe and South America",
"id": "20f49f02-821e-49a7-a98d-55158f48ef28"
},
{
"data_category": "emission_factor",
"name": "Van <3.5t - Petrol",
"source": "GLEC",
"source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
"year": "2024",
"region": "EU_S_AMERICA",
"region_name": "Europe and South America",
"id": "bac33059-8af3-4099-b6b6-741218db6ab9"
}
],
"vehicle_operation_co2e": 2216,
"vehicle_energy_provision_co2e": 708.8,
"transport_mode": "road",
"distance_km": 290.5,
"notices": []
},
{
"type": "location",
"co2e": 13,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"source_trail": [
{
"data_category": "emission_factor",
"name": "Freight logistics - transshipment - ambient",
"source": "GLEC",
"source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
"year": "2024",
"region": "GLOBAL",
"region_name": "Global",
"id": "6207e899-11d9-425e-a3d7-10f7bb1b17cb"
}
],
"name": "Berlin, Germany",
"latitude": 52.51604,
"longitude": 13.37691,
"confidence_score": 1
}
]
}
OpenStreetMap attribution

Climatiq draws information from many sources, including OpenStreetMap (opens in a new tab). The license of that information requires you to provide attribution where this information comes from. If you display information such as routes and location names externally, you should make sure you correctly attribute this data to OpenStreetMaps, e.g. by writing "May contain information from OpenStreetMap".

Route Leg

Each route in the request has one or more legs. A leg is a transition between two locations. A leg contains the following properties.

  • transport_moderequired string

    How the goods are transported. Allowed values are air, sea, road, rail.

  • leg_detailsobject

    The details of the leg such as fuel and vessel type. Valid values here vary between transport_mode. Allowed values are RoadDetails, SeaDetails, AirDetails or RailDetails.

  • planned_distance_kmfloat

    Planned Distance or Shortest Feasible Distance for the leg. We will use this distance instead of the planned distance we would normally calculate. If you need to use an actual distance, be careful to apply a Distance Adjustment Factor (DAF) in order to reduce the distance. For example, GLEC suggests that for sea transport, a DAF of 15% can be used to account for average container sea transport distances being on average 15% longer than the shortest feasible distance - ie. divide the actual distance by 1.15 to get the appropriate planned distance. GLEC does not provide guidance for any other transport modes.

A route cannot by default have more than three legs. If you need more than three legs, you can call the API endpoint multiple times, or contact Climatiq (opens in a new tab) to get this limit raised

Road

A leg with the "transport_mode": "road" can include more specific journey details through the leg_details object.

As GLEC uses different methodologies and sources for North America, China, and the rest of the world, the parameters you can provide are different for these regions. The API allows you to provide parameters for all regions, and the API will only use the relevant one, depending on the actual trip taken.

For more information on vehicle types for road transport, see the vehicle types section.

  • north_americaobject
    Default value: See here

    Details used for trips within North America. These parameters can always be provided, but will only apply to road legs within North America. Use this object for combustion vehicles or this object for electric vehicles.

  • chinaobject
    Default value: See here

    Details used for trips within China. These parameters can always be provided, but will only apply to road legs within China. Use this object for all vehicles.

  • rest_of_worldobject
    Default value: See here

    Details used for trips in other regions. These parameters can always be provided, but will only apply to road legs outside of North America and China. Use this object for combustion vehicles or this object for electric vehicles.

Road in China

A leg with the "transport_mode": "road", taking place inside China can specify further details about the journey by including this object under leg_details.china.

  • vehicle_typerequired string
    Default value: rigid_truck

    The type of vehicle that is used for the transportation. articulated and rigid refers to truck types. All valid values are: rigid_truck, articulated_truck, dump_truck

  • vehicle_weightrequired string
    Default value: gt_16t_lte_20t

    The carrying capacity of the vehicle, as a string specifying the range. E.g. gt_60t_lte_72tmeans a carrying capacity greater than 60tons and less than or equal to 72tons. Refer to the table below for all valid combinations of values.

  • fuel_sourcerequired string
    Default value: diesel

    The fuel source that the vehicle is running on. Valid values vary depending on the vehicle type, but all valid values are: diesel, lng, electricity, hydrogen

Valid parameter combinations in China
vehicle_type Parameterfuel_source Parametervehicle_weight Parameter
articulated_truckdiesel

lte_18t, gt_18t_lte_27t, gt_27t_lte_35t, gt_35t_lte_40t, gt_40t_lte_43t, gt_43t_lte_46t, gt_46t_lte_49t, gt_49t,

dump_truck, rigid_truckdiesel

gt_3.5t_lte_4.5t, gt_4.5t_lte_5.5t, gt_5.5t_lte_7t, gt_7t_lte_8.5t, gt_8.5t_lte_10.5t, gt_10.5t_lte_12.5t, gt_12.5t_lte_16t, gt_16t_lte_20t, gt_20t_lte_25t, gt_25t_lte_31t, gt_31t

articulated_truck, dump_truck, rigid_trucklng

gt_14t_lte_24t, gt_24t_lte_25t, gt_25t_lte_29t, gt_29t_lte_31t, gt_31t_lte_60t

rigid_truckelectricity, hydrogenlte_4.5t, gt_4.5t_lte_12t, gt_12t

Road in North America

A leg with the "transport_mode": "road", taking place inside North America and using a combustion vehicle can specify further details about the journey by including this object under leg_details.north_america.

  • vehicle_typerequired string
    Default value: general

    The type of vehicle that is used for the transportation. All valid values are: auto_carrier, dray, expedited, flatbed, general, heavy_bulk, ltl_or_dry_van, mixed, moving, package, refrigerated, specialized, tanker, tl_or_dry_van, van

For electric vehicles in North America, see valid parameter combinations for electric vehicles in other regions.

Road in other regions

A leg with the "transport_mode": "road", that is taking place outside of North America and China can specify further details about the journey by including this object under leg_details.rest_of_world.

These options do not apply to trips within North America or China. If your trip is in one of these regions, see the corresponding section.

Different vehicle_types have different requirements and options. Please consult the table further down for the list of valid parameter combinations.

  • vehicle_typerequired string
    Default value: articulated_truck

    The type of vehicle that is used for the transportation. articulated and rigid refers to truck types. All valid values are: van, rigid_truck, articulated_truck, articulated_truck_incl_lightweight_trailer

  • vehicle_weightrequired string
    Default value: lte_34t

    The carrying capacity of the vehicle, as a string specifying the range. E.g. gt_60t_lte_72tmeans a carrying capacity greater than 60tons and less than or equal to 72tons. Refer to the table below for all valid combinations of values.

  • fuel_sourcerequired string
    Default value: diesel

    The fuel source that the vehicle is running on. Valid values vary depending on the vehicle type, but all valid values are: diesel, cng, lng, bio_lng, bio_lng_or_diesel, cng_or_diesel,lng_or_diesel, petrol, electricity

  • load_typestring
    Default value: Average

    The type of load the vehicle carries. Valid values vary depending on the vehicle type, but all valid values are: light, heavy, container.

Valid parameter combinations in other regions

Please consult this table to see what valid combinations of values are for other regions, this includes electrical vehicles:

vehicle_type Parameterfuel_source Parametervehicle_weight Parameterload_type Parameter
articulated_trucklng, lng_or_diesel, bio_lng, bio_lng_or_diesel, cng, cng_or_diesellte_40tcontainer, null
diesellte_34t, gt_34t_lte_40tcontainer, null
gt_40t_lte_44tcontainer, heavy, light, null
gt_44t_lte_60tcontainer, heavy, null`
gt_60t_lte_72tcontainer, heavy
articulated_truck_incl_lightweight_trailerdiesellte_40theavy
rigid_truckcnggt_3.5t_lte_7.5t, gt_7.5t_lte_12t, gt_12t_lte_20t, gt_20t_lte_26tnull
dieselgt_3.5t_lte_7.5t, gt_7.5t_lte_12t, gt_12t_lte_20t, gt_20t_lte_26tnull
gt_26t_lte_32tcontainer, null
lnggt_20t_lte_26tnull
electricitygt_3.5t_lte_7.5t, gt_7.5t_lte_12t, gt_12t_lte_20t gt_26t_lte_40tlight, null
vandiesel, petrol, cng, lpg, electricitylte_3.5tnull
Valid parameter combinations (Electric only)

A leg with the "transport_mode": "road", with an electric car can specify further details about the journey by including this object under either leg_details.north_america or leg_details.rest_of_world. If the fuel_source is electricity, the vehicle is considered an electric vehicle.

These options are valid globally (with the exception of China), but only apply to electric vehicles. If your transportation uses combustion engine, see the above sections.

Different vehicle_types have different requirements and options. Please consult the table further down for the list of valid parameter combinations.

  • fuel_sourcerequired string

    Must be electricity for electric vehicles.

  • vehicle_typerequired string

    The type of vehicle that is used for the transportation. All valid values are: van, rigid_truck

  • vehicle_weightrequired string

    The carrying capacity of the vehicle, as a string specifying the range. E.g. gt_34t_lte_40tmeans a carrying capacity greater than 34tonnes and less than or equal to 40tonnes. Refer to the table below for all valid combinations of values.

  • load_typestring
    Default value: Average

    The type of load the vehicle carries. Valid values vary depending on the vehicle type, but all valid values are: light

Please consult this table to see what valid combinations of values are then using Electric trucks worldwide:

fuel_source Parametervehicle_type Parametervehicle_weight Parameterload_type Parameter
electricityrigid_truckgt_3.5t_lte_7.5t, gt_7.5t_lte_12t, gt_12t_lte_20t gt_26t_lte_40tlight, null
electricityvanlte_3.5tnull

Vehicle types

Here is an overview of some of the different types of vehicle:

Vehicle typeDescription
articulated_truckA large commercial vehicle consisting of a tractor unit (cab) connected to one or more semi-trailers via a pivoting joint that allows the vehicle to bend and maneuver around corners.
dump_truckA truck equipped with an open-box bed that can be hydraulically tilted to dump its contents, commonly used for transporting loose materials like sand, gravel, or construction debris.
rigid_truckA commercial vehicle where the cab and cargo area (or flatbed) are built on a single, non-separable chassis frame.
drayDrayage is the transport of goods over a short distance. Dray carriers mainly transport container or bulk freight between port and rail-head connections or transfer facilities. Drayage trucks are generally diesel-fueled, heavy-duty (Class 8) trucks.
auto_carrierA specialized truck designed with multiple levels and ramps to transport several passenger vehicles simultaneously from manufacturers to dealerships.
flatbedA truck with an open, flat cargo platform without sides or roof, used for hauling large, heavy, or irregularly shaped items that need to be loaded from the top or sides.
vanA enclosed truck with solid walls and a roof covering the cargo area, designed to protect goods from weather and theft during transportation.

Sea

A leg with the "transport_mode": "sea", can specify further details about the journey by including this object under leg_details.

  • vessel_typestring
    Default value: container

    The type of vessel that is used for the transportation. Refer to the table below for all valid combinations of values. See Typical vessel types by cargo for an overview of what types of cargo typically go on which kind of vessel.

  • tonnagestring

    The tonnage the ship can carry, as a string specifying the range E.g. gte_5dwkt_lt_10dwkt means more than (or equal to) 5 deadweight kilotonnes, and less than 10 deadweight kilotonnes. You might also see the abbreviation gt for gross tonnage. Refer to the table below for all valid combinations of values.

  • fuel_sourcestring

    The type of fuel that the ship uses. Refer to the table below for all valid combinations of values.

  • avoid_zonesarray of strings
    Default value: [northeast, northwest, magellan, kiel, corinth, bering]

    Sea zones to avoid in the routing step. Any sea passage in this array is disregarded during routing and port discovery, i.e. sea lanes and ports located in such a passage are not used. If this is null or unspecified, the default value is used. The following sea routes are available: northeast, northwest, dover, magellan, suez, panama, kiel, corinth, malacca, bering, babelmandeb, gibraltar. It is recommended to consider the default values when specifying this parameter, i.e. if you want to block the Panama Canal, extend the default array by panama instead of just sending [panama].

Valid parameter combinations

Please consult this table to see what valid combinations of values are:

vessel_type Parametertonnage Parameterfuel_source Parameter
containernullnull
bulk_carrier

lt_10dwkt, gte_10dwkt_lt_35dwkt, gte_35dwkt_lt_60dwkt, gte_60dwkt_lt_100dwkt, gte_100dwkt_lt_200dwkt, gte_200dwkt

hfo, vlsfo, mdo
chemical_tankerlt_5dwkt, gte_5dwkt_lt_10dwkt, gte_10dwkt_lt_20dwkt, gte_20dwkt_lt_40dwkt, gte_40dwkthfo, vlsfo, mdo
ferry_ropaxlt_2000gt, gte_2000gt_lt_5000gt, gte_5000gt_lt_10000gt, gte_10000gt_lt_20000gt, gte_20000gthfo, vlsfo, mdo
general_cargolt_5dwkt, gte_5dwkt_lt_10dwkt, gte_10dwkt_lt_20dwkt, gte_20dwkthfo, vlsfo, mdo
liquefied_gas_tankerlt_50000cbm, gte_50000cbm_lt_100000cbm, gte_100000cbm_lt_200000cbm, gte_200000cbmhfo, vlsfo, mdo
oil_tankerlt_5dwkt, gte_5dwkt_lt_10dwkt, gte_10dwkt_lt_20dwkt, gte_20dwkt_lt_60dwkt, gte_60dwkt_lt_80dwkt, gte_80dwkt_lt_120dwkt, gte_120dwkt_lt_200dwkt, gte_200dwkthfo, vlsfo, mdo
other_liquids_tankerslt_1dwkt, gte_1dwkthfo, vlsfo, mdo
refrigerated_bulklt_2dwkt, gte_2dwkt_lt_6dwkt, gte_6dwkt_lt_10dwkt, gte_10dwkthfo, vlsfo, mdo
ro_rolt_5dwkt, gte_5dwkt_lt_10dwkt, gte_10dwkt_lt_15dwkt, gte_15dwkthfo, vlsfo, mdo
vehiclelt_30000gt, gte_30000gt_lt_50000gt, gte_50000gthfo, vlsfo, mdo
⚠️
Roll on - Roll off (ro-ro) vessel type behavior

The emission factors for the ro_ro (Roll on - Roll off) vessel type are calculated differently than other types of vessels. For ro_ro vessels, the weight should include both the vehicle and any cargo it carries. In contrast, for other vessel types, only the weight of the cargo should be considered.

If you're shipping cargo using a vehicle on a ro_ro vessel, you'll need to adjust your API request accordingly. You may also choose to attribute only a portion of the emissions to yourself if you are transporting only part of the vehicle's cargo.

Please note that the Climatiq API does not automatically select ro_ro vessels as the default option, so you only need to take this into account if you explicitly choose this vessel type.

Typical vessel types by cargo

The following table stems from the Fourth IMO Greenhouse Gas Study (opens in a new tab). It lists examples of cargo types and appropriate vessel types to transport them with.

Cargovessel_type parameter
Bulk Agriculture - High Added Valuecontainer
Bulk Agriculture - Low Added Valuebulk_carrier
Chemical, rubber, plastic products - Bulk solidbulk_carrier
Chemical, rubber, plastic products - High Added Valuecontainer
Chemical, rubber, plastic products - High Added Value Solidcontainer
Chemical, rubber, plastic products - Liquidchemical_tanker
Electronic equipmentcontainer
Ferrous metals – Bulkbulk_carrier
Ferrous metals - Semi-Finishedcontainer
Fishingcontainer
Forestrybulk_carrier
Leather productscontainer
LNGliquefied_gas_tanker
LPGliquefied_gas_tanker
Machinery and equipment not elsewhere classifiedcontainer
Manufactures neccontainer
Metal products – Largebulk_carrier
Metal products – Smallcontainer
Metals nec – Bulkbulk_carrier
Metals nec - High Added Valuecontainer
Mineral products nec - Bulkbulk_carrier
Mineral products nec - High Added Valuecontainer
Minerals – Bulkbulk_carrier
Minerals - High Added Valuecontainer
Motor vehicles and parts - Partscontainer
Motor vehicles and parts - Vehiclesro_ro
Oiloil_tanker
Paper products, publishing - Bulkbulk_carrier
Paper products, publishing - High Added Valuecontainer
Petroleum, coal products - Liquidoil_tanker
Petroleum, coal products - Solidbulk_carrier
Processed Agriculture - High Added Valuecontainer
Processed Agriculture - Live animalscontainer
Textilescontainer
Transport equipment neccontainer
Wearing apparelcontainer
Wood productscontainer

Air

A leg with the "transport_mode": "air", can specify further details about the journey by including this object under leg_details.

  • aircraft_typestring
    Default value: Unknown

    The aircraft type used to carry the shipment. Use freighter if it is a dedicated cargo plane, or belly_freight if it is transported in the belly of a passenger plane.

  • radiative_forcing_indexfloat
    Default value: 2

    The radiative forcing index to multiply the emissions by (see info box below). If you do not want a radiative forcing index to be applied, you may specify 1

Air travel and radiative forcing

GLEC default emission factors do not include a Radiative Forcing Index (RFI). RFIs are applied to account for the increased impact on global heating made by greenhouse gases released directly into the upper atmosphere by aircraft. RFI values depend on things like altitude and trip length and are subject to uncertainty and disagreements. To perform the most accurate calculations, this endpoint currently applies an RFI of 2 to all flights, based on the latest available science (opens in a new tab). If a Radiative Forcing Index has been applied, a notice will be returned.

Rail

A leg with the "transport_mode": "rail"; you can specify further details about the journey by including this object under leg_details.

  • fuel_sourcestring
    Default value: Regional average or default

    The fuel type that the train runs on. Valid values are diesel, electricity; do not include if hybrid or unknown (an averaged factor will be applied). electricity can only be specified for journeys within Europe or Asia.

  • load_typestring
    Default value: Average

    The load that the train is carrying. Valid values are building_materials, cars, cereals, chemicals, coal_steel, container, manufactured_products, trailer_only_on_train, truck_plus_trailer_on_train

⚠️
Rail freight parameters in the United States of America

Please note that for the United States, the only valid parameter combination is diesel with no load_type specified.

Location

A trip always has two or more locations.

Request Location AttributesRequired
location Location
Either a QueryLocation, an IataCodeLocation, an UNLocodeLocation or a CoordinateLocation
required
location_options Location Options
Extra options that a location can have. See section below.
optional

Location Options

There are other options that are sometimes relevant to change. If a location is adjacent to a fixed-transition point leg, Climatiq automatically makes small corrections to turn your provided location into the proper port, airport or railway station. See Automatic Location Correction for more details.

Location Options AttributesRequiredDefault
override_transition boolean
If the location is known to be valid for transition between different modalities, for example when providing the coordinates of a private railway terminal or dock, this overrides our attempts to automatically correct the location to a known fixed transition point and prevents errors.
optionalfalse
tolerance_km float
The maximum distance, in km, that we would correct a location to match a mixed transition point. Increasing this can help with some errors which occur with very large ports, etc. for which different locations may be identified.
optional10
logistics_hubs_type string
The type of logistics hub operation performed at this location, if you wish to override the default. Logistics hubs are where freight is stored and processed, and where freight is moved between vehicles. Valid values are: none, transshipment, storage_and_transshipment, warehouse, liquid_bulk_terminals and maritime_container_terminals. Refrigerated variants exist for all these values, and are selected if the cargo is marked as refrigerated.
optionaltransshipment unless one of the adjacent legs is sea container shipping, then maritime_container_terminals

Response Models

These are more in-depth explanations of the models returned by the intermodal freight endpoint.

ResponseLocation

The location in the route array of the response will contain the following properties

Response Location attributes
type "location"
constant to easily show whether the item is a location or leg
co2e float
The carbon dioxide equivalent emitted for the operation of logistics hubs at this location. This encompasses both operational and energy provisioning emissions. Logistics hubs emissions cover the transportation and movement of cargo from one mode of transportation to another, such as moving containers from a truck to a ship.
co2e_calculation_method string or null
Which calculation methodology that was used for the calculation. The value of this is either "ipcc_ar4_gwp100", "ipcc_ar5_gwp100", "ipcc_ar6_gwp100", "ipcc_mixed_gwp100" or null (if the request specified that no transshipment should be estimated).
Learn more about calculation methods here.
co2e_unit string
The unit in which the CO2e fields is expressed. The value of this is always kg
name string
A human-readable name of the location
latitude string or null
The latitude of the location. This is only returned if you have access to view coordinates. Please contact us if you need this enabled.
longitude string or null
The longitude of the location. This is only returned if you have access to view coordinates. Please contact us if you need this enabled.
confidence_score float
A confidence score between 0 and 1, determining how certain we are that the location matches your query. Only exists if the input location was a QueryLocation
source_trail array of SourceDataPoint
An array of Source Data Points that help explain and provide trust in the calculation. Click to view more details about Source Trail.

ResponseLeg

The leg in the route array of the response will contain the following properties

Response Leg attributes
type "leg"
constant to easily show whether the item is a location or leg
co2e float
The total carbon dioxide equivalent emitted for this leg of the trip. This encompasses both vehicle operations and vehicle energy provisioning.
co2e_calculation_method string
Which calculation methodology that was used for the calculation. The value of this is either ipcc_ar4_gwp100, ipcc_ar5_gwp100, ipcc_ar6_gwp100 or ipcc_mixed_gwp100.
Learn more about calculation methods here.
co2e_unit string
The unit in which the CO2e fields is expressed. The value of this is always kg
vehicle_operation_co2e float
The carbon dioxide equivalent emitted for the part of the trip where the vehicle is being operated, such as the combustion of fuel, leakage of refrigerants etc.
vehicle_energy_provision_co2e float
The carbon dioxide equivalent emitted for the provisioning of energy for the vehicle operations. This covers among others: electricity generation, electricity transmission and distribution losses, the production of fuel, and the transportation of fuel to the vehicle.
transport_mode string
What transport mode this leg corresponds to. Will be "road", "air", "sea" or "rail"
distance_km float
The distance in kilometers for this leg of the trip.
source_trail array of SourceDataPoint
An array of Source Data Points that help explain and provide trust in the calculation. Click to view more details about Source Trail.
notices array of Notice
An array of notices for this leg, that is relevant for understanding the result. This could be if Climatiq cannot accurately calculate the distance for a certain route, but still performed a less-accurate calculation.

Notice

The notices array can contain these objects:

Notice attributes
severity string
Either warning or info. warning is for messages that might lead to inaccurate calculations. You should check these to make sure the results are fit for your intended purpose. info is for information that will help you understand the calculation result better.
message string
An explanation of the notice.
code string
A programmatic value you can use to disambiguate the different notice types.

The different possible values for code are as follows. You should not treat this list as exhaustive as more values may be added with time:

Notice code valuedescription
great_circle_distance_usedGreat Circle Distance was used for the leg in absence of more detailed routing capability.
partial_great_circle_distance_usedWe were not able to route the entire leg successfully. Parts of the leg was filled with great circle distance calculations.
truck_ferry_usedThe truck used for the journey was put on a ferry for part of the journey, sea factors were used for the covered distance
truck_rail_usedThe truck used for the journey was put on a train for part of the journey, rail factors were used for the covered distance
region_fallbackFactors or calculation methods for the exact region are not available, we have used a fallback region which we believe best covers the specified region
radiative_forcing_appliedAn adjustment was applied to the co2e of the estimate, due to the effects of radiative forcing.
global_electricity_factor_usedA country-specific electricity factor wasn't available, so global was used instead.

FAQ

What's the difference between using automatic routing versus specifying exact locations for each leg of my route?

Automatic routing allows you to omit intermediate locations and let the API find the closest ports, airports, or rail stations automatically. See more details here

When you specify exact locations, you have full control over which specific ports, airports, or terminals to use, and you can define the exact route path your shipment takes. This is particularly useful for private terminals or non-standard locations.

Use automatic routing when you don't know exact port or airport locations, want simplified route specification, or trust the API's location selection. Use exact locations when: your route contains specific terminals or hubs, when automatic selection picks wrong locations, or when you're using private facilities (in which case you should set override_transition: true).

How should I handle the regional differences in parameter availability, like North America vs rest of world for road transport?

The simplest approach is to provide both parameter objects and let the API use the appropriate one. For road transport, you can include both north_america and rest_of_world objects in your request:

{
"transport_mode": "road",
"leg_details": {
"north_america": {
"vehicle_type": "general"
},
"rest_of_world": {
"vehicle_type": "articulated_truck",
"vehicle_weight": "lte_34t",
"fuel_source": "diesel"
}
}
}

The API automatically uses north_america parameters for routes within North America, uses the default values for china as no object was provided and uses rest_of_world parameters for routes outside of those regions. This way your application will use the correct parameters, and you don't need to know where your routes are located ahead of time.

When calculating emissions for a large shipment, should I use the total weight or break it down by individual items? Does it make a difference?

If the route and the cargo type is identical, use the total weight - breaking down by individual items doesn't change the emission calculation. Since emission factors scale linearly with weight and all items follow the same route with the same emission factors, using total weight is more computationally efficient with one API call instead of multiple.

You might want to break it down when items take different routes, use different transport modes (some by air, others by sea), have different characteristics (some refrigerated, others ambient), or when you need separate reporting for individual item carbon footprints. As a best practice, use total weight for efficiency unless you have specific business requirements for item-level tracking.

What if I don't know the main transport type for my shipment?

The API requires you to input a main transport type. If you do not know one, you can attempt to make a qualified guess:

  • For longer routes and international shipping, sea is a good first guess. Around 80% of global freight moves via the ocean (opens in a new tab).
  • For shorter inland routes, or last-mile delivery, road freight is the most common.
  • For large volumes of goods, particularly across Europe or North America, rail transportation is also popular.
  • Air freight is mostly used for time-sensitive or highly valuable cargo.

How do I handle last mile delivery in my route calculations?

If you know your distribution center, you can handle last-mile delivery like this:

  • First API call
  • Transport the goods from your production center to your delivery hub
  • Second API call
  • Transport the goods from your delivery hub to your end-user

By default, the API supports 3 legs per trip, requiring you to use 2 calls. If you need to handle last-mile delivery, you can also contact Climatiq to have this limit raised, allowing you to handle the entire trip in one call.

What should I do if the API picks a port or airport that wouldn't be the right one for my shipment?

If you know the airport or port that is used for a shipment, you should specify it explicitly in the API request. That way you will get the most appropriate route for your shipment.

Do I need to account for empty return trips when calculating emissions?

You do not. The GLEC emission factors we use already account for things like idle-running and empty return trips.

How do I handle cases where I get an error that no coordinates are found for a valid LOCODE?

Please contact Climatiq, and we might be able to update our internal LOCODE database. As a temporary workaround, you can use a CoordinateLocation to manually specify the coordinates.

Does the API account for vehicle idling time in the emission calculations?

Yes, the GLEC emission factors we use already account for things like idle-running and empty return trips.

Does the location input mean anything in a request if we're also using planned_distance_km?

Yes, the location input still matter even when overriding the calculated distance using planned_distance_km, as the API uses the locations to determine the appropriate emission factors to use.

For Scope 2 electric vehicles, should I use the Energy or the Freight feature?

It depends on what data you have available and how you want to use the data:

  • If you know the total electricity (kWh) consumed by the electric vehicle, allocated to your particular package, you should use the Energy feature, as it will be more accurate for Scope 2 calculations.
  • If you only have the shipping details, such as the cargo weight and location/destination, you should use the Freight feature. It will estimate the electricity consumption based on the journey specifics.
  • If you know the total electricity consumed by the electric vehicle, but not how much of it can be allocated to your specific package, you can either:
  • Figure out how to allocate parts of the electricity consumption to your package, if you need to report carbon emissions per shipment. You can then use the Energy feature to calculate the emissions per package.
  • Use the energy endpoint to calculate the emissions for the entire truck, e.g. if all packages in the truck belong to you, and you do not need per-package emissions.
  • Use the Freight feature if none of the above options makes sense for you, e.g. if you cannot perform allocation, or part of the shipping route is not electrified.

If you have both electricity consumption per package and shipping details, you should prefer the energy endpoint for Scope 2 reporting, as the estimate will be more accurate and granular.