# Train: Base Empreinte 🇫🇷

## High-Level Description

Base Empreinte, managed by ADEME, is a comprehensive environmental impact database combining data from Base Carbone and Base IMPACTS. It supports environmental evaluations by offering multi-criteria data, including greenhouse gas (GHG) emissions and other environmental impacts.

Applied to train travel, Base Empreinte factors in key variables such as train type, location context (e.g., Corsica and Île‑de‑France), grid/fuel, and year of the factor, enabling accurate, audit‑ready emission calculations for stakeholders.

***

## Sample API Requests

### A. Without audit mode (for pre-booking/quotes)

```json
{
  "expand": ["items"],
  "items": [
    {
      "audit": false,
      "type": "train",
      "methodology": "BASE-EMPREINTE",
      "external_reference": "test_1",
      "number_of_travelers": 1,
      "origin": "FRA",
      "destination": "NCE",
      "train_type": "tram",
      "state": "Ile-de-France",
      "country": "FR",
      "year": "2021"
    }
  ]
}
```

### B. With audit mode (for finalized/post-booking calculations)

```json
{
  "expand": ["items"],
  "audit_for": "<Auditable Entity ID>",
  "items": [
    {
      "audit": true,
      "type": "train",
      "methodology": "BASE-EMPREINTE",
      "external_reference": "test_1",
      "number_of_travelers": 1,
      "origin": "FRA",
      "destination": "NCE",
      "train_type": "tram",
      "state": "Ile-de-France",
      "country": "FR",
      "year": "2021"
    }
  ]
}
```

> **Note:** `audit_for` is optional. Provide when calculating on behalf of a specific Auditable entity; otherwise omit.

***

## API Request Items

* `"type": "train"` **(required)**
* `"methodology": "BASE-EMPREINTE"` **(required)**
* `"external_reference"`: A unique identifier linking results to the requested item. Max length: 128 chars.
* `"number_of_travelers"`: Minimum `1`. **Default:** `1`.
* `"origin"`: Origin location (see **Origin/Destination Formats** below).
* `"destination"`: Destination location (see **Origin/Destination Formats** below).
* `"distance_in_km"`: If provided, this value is **prioritized** over `origin`/`destination`. If both are present, `distance_in_km` is used.
* `"train_type"`: One of `ter`, `tgv`, `intercity`, `metro`, `tram`, `trolleybus`, `main_line`. **Default:** `main_line` when only train type is passed.
* `"state"`: Supported regional specificity: `"Corsica"` or `"Ile-de-France"`. **Default:** `"Ile-de-France"`.
* `"country"`: ISO 3166‑1 alpha‑2 country code. **Default:** `"FR"`.
* `"year"`: Year of the factor. **Default:** latest available if not provided.
* `"city_type"`: Used when `state` not provided; one of `population_under_250000` (default) or `population_above_250000`.
* `"audit"`: boolean (optional). Set to `true` to create immutable audit records for finalized calculations. Must be enabled for your account.

### Default Values

```json
{
  "city_type": "population_under_250000",
  "country": "FR",
  "year": "latest_available",
  "train_type": "main_line",
  "number_of_travelers": 1
}
```

***

## Origin/Destination Formats (Enriched)

SQUAKE will try to resolve the `origin`/`destination` regardless of its format. Ideally:

* **Addresses:** Use the *Post* standard.
* **Airports:** Use IATA/ICAO code (regex: `^[A-Z]{3,4}$`, e.g., `"MUC"`).
* **Ports/Trade locations:** Use UN/LOCODE (regex: `^[A-Z]{2}\W?[A-Z2-9]{3}$`, e.g., `"DEHAM"`).
* **Coordinates:** Pass latitude/longitude (regex: `^[-+]?\d{1,3}\.\d{1,10}\s?,\s?[-+]?\d{1,3}\.\d{1,10}$`, e.g., `"+40.712,-74.006"`).

**UIC and Provider Codes for Trains**

* UIC code is also a valid format for trains. If the value is not valid, the system will **fallback to general, non‑journey‑specific emission data**.
* When you want to use a UIC or provider code, use the following format:
  * `<provider>:<uic_code>` (e.g., `sncf:FRAAA`)
* **Possible provider prefixes:**
  * `uic`
  * `uic8_sncf`
  * `sncf`
  * `sncf_tvs`
  * `entur`
  * `db`
  * `busbud`
  * `distribusion`
  * `flixbus`
  * `cff`
  * `leoexpress`
  * `obb`
  * `trenitalia`
  * `trenitalia_rtvt`
  * `trenord`
  * `ntv_rtiv`
  * `ntv`
  * `hkx`
  * `renfe`
  * `atoc`
  * `benerail`
  * `westbahn`

**Examples**

```jsonc
// Using UIC/provider code
{
  "type": "train",
  "methodology": "BASE-EMPREINTE",
  "origin": "db:8011160",        // Berlin Hbf (example code structure)
  "destination": "db:8000105",   // Frankfurt (Main) Hbf (example code structure)
  "number_of_travelers": 2
}

// Using UN/LOCODEs (for multimodal contexts)
{
  "type": "train",
  "methodology": "BASE-EMPREINTE",
  "origin": "DEBER",             // Berlin (city code example)
  "destination": "DEFRA",        // Frankfurt (city code example)
  "number_of_travelers": 1
}

// Using coordinates
{
  "type": "train",
  "methodology": "BASE-EMPREINTE",
  "origin": "+52.525,13.369",
  "destination": "+50.110,8.682",
  "number_of_travelers": 1
}
```

> **Notes**
>
> * If both `origin`/`destination` **and** `distance_in_km` are provided, `distance_in_km` is used for emissions.
> * Invalid, unsupported, or unresolvable location codes will trigger a **fallback** to generic (non‑journey‑specific) factors consistent with Base Empreinte/ADEME practice.

***

## Sample API Response

```json
{
  "carbon_quantity": 4890,
  "carbon_unit": "gram",
  "items": [
    {
      "carbon_quantity": 4890,
      "carbon_unit": "gram",
      "external_reference": "test_1",
      "type": "train",
      "methodology": "BASE-EMPREINTE",
      "distance": 685.0,
      "distance_unit": "kilometer"
    }
  ]
}
```

***

## Bibliography

* ADEME. (2025). Base Empreinte - Données d’impacts environnementaux. <https://www.ademe.fr/base-empreinte>
* ADEME. (2024). Base Carbone Methodological Guide. <https://www.ademe.fr/base-carbone>
* ADEME. (2023). Base IMPACTS & Rail emission factors — official ADEME documentation.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-integration.squake.earth/api-calculations-request-response/travel/train/train-base-empreinte.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
