POST /v1/carbon · TMS Integration · Scope 3 Cat. 6

    Add CO₂ data to your travel management system.

    One REST call per flight segment. Works with SAP Concur, Amadeus cytric, TravelPerk, or any system that stores IATA airport codes. Returns CO₂ per the ICAO CEC v13.1 methodology — what GHG Protocol recommends for Scope 3 Category 6 business travel reporting.

    No native integration required. If your TMS knows origin, destination, and cabin class — you can calculate Scope 3 emissions today.

    IATA codes

    Only input needed

    <100 ms

    Per segment

    GHG Protocol

    Scope 3 Cat. 6

    No vendor lock

    Any TMS

    Integration pattern

    Three steps from TMS to ESG report

    1

    Extract from TMS

    Pull trip segments from your TMS via webhook, API, or CSV export. You need: origin IATA, destination IATA, cabin class. Aircraft type is optional but improves accuracy.

    2

    Call /v1/carbon

    POST one request per segment. The API returns co2_kg, co2_with_rfi_kg, confidence_score, and full methodology reference. Under 100 ms. Process 1,000 trips in seconds.

    3

    Aggregate & report

    Store co2_kg linked to your employee, cost center, and trip IDs. Sum at year-close: divide by 1,000 to get tCO₂e. Paste into your ESRS E1-6 or CDP C6.5 template.

    TMS compatibility

    Works with what you already use

    No partnership or native connector needed — just IATA codes.

    SAP Concur

    Compatible

    Trips v2 API / webhook

    Fields: OriginLocation, DestinationLocation, ClassOfService, Equipment

    Webhook fires on TripApproved — calculate CO₂ before travel happens for pre-trip approval workflows.

    Amadeus cytric

    Compatible

    PNR export / cytric API

    Fields: Origin, Destination, CabinClass, EquipmentCode from PNR segments

    GDS-sourced bookings include equipment code (e.g. 359, 77W) — enables exact aircraft matching.

    TravelPerk

    Compatible

    Trips webhook / Trips API

    Fields: origin, destination, cabin_class in segment objects

    TravelPerk's Trips API returns segments with cabin class directly — straightforward field mapping.

    Custom / in-house booking

    Compatible

    CSV export or internal API

    Fields: Any store of IATA codes + cabin class

    Batch via CSV: export trips, enrich with co2_kg, import back. See Python example below.

    Integration code

    Ready-to-use integration patterns

    // SAP Concur → Carbon API integration
    // Triggered via Concur Trips v2 webhook on TripApproved event
    
    async function onConcurTripApproved(event) {
      const { segments } = event.trip.itinerary;
    
      const results = await Promise.all(
        segments.map(seg =>
          fetch("https://aviation-api.logostream.dev/v1/carbon", {
            method: "POST",
            headers: {
              "x-api-key": process.env.AVIATION_API_KEY,
              "Content-Type": "application/json",
            },
            body: JSON.stringify({
              from:        seg.OriginLocation,       // IATA code from Concur
              to:          seg.DestinationLocation,   // IATA code from Concur
              cabin_class: mapConcurCabin(seg.ClassOfService),
              passengers:  1,
              aircraft:    seg.Equipment ?? undefined, // e.g. "359", "77W"
            }),
          }).then(r => r.json())
        )
      );
    
      // Store per-segment CO₂ linked to your booking ID
      await db.tripEmissions.insertMany(
        results.map((r, i) => ({
          booking_id:    event.trip.id,
          employee_id:   event.trip.userId,
          segment_index: i,
          co2_kg:        r.sustainability_metrics.passenger_footprint.co2_kg,
          co2_rfi_kg:    r.sustainability_metrics.passenger_footprint.co2_with_rfi_kg,
          confidence:    r.confidence_score,
          methodology:   r.sustainability_metrics.methodology,
        }))
      );
    }
    
    function mapConcurCabin(classOfService) {
      if (["F", "A", "P"].includes(classOfService)) return "first";
      if (["C", "J", "D", "I"].includes(classOfService)) return "business";
      if (["W", "S"].includes(classOfService)) return "premium_economy";
      return "economy";
    }

    FAQ

    TMS Integration — Common Questions

    Connect your TMS in a day.

    Free tier: 1,000 calculations/month. No credit card. Enterprise plans for high-volume annual report batch runs available on request.