Supergood | BCD Travel API

Supergood | BCD Travel API

Programmatically access BCD Travel corporate travel data, traveler profiles, trips, itineraries, and approval workflows with a stable REST API. Supergood builds and operates production-grade, unofficial BCD Travel integrations so your team can automate travel operations, finance, and duty-of-care processes without heavy custom engineering.

Plain English: BCD Travel is a global corporate travel management company (TMC) that helps businesses book and manage flights, hotels, cars, and rail while enforcing policy, handling approvals, and delivering reporting and duty-of-care. An unofficial API lets you programmatically pull traveler profiles, trip records, itineraries, ticket details, disruptions, unused ticket credits, and invoices/receipts—and push approvals, profile updates, cancellations, and policy exceptions back into BCD-managed workflows.

For a tech company integrating with BCD Travel, this means you can ingest real-time trip and traveler data to power dashboards, sync bookings and costs to your expense/ERP systems (e.g., QuickBooks, Xero), automate approvals from your product (Slack, email, mobile), enrich your platform with itineraries and e-ticket artifacts, and trigger duty-of-care alerts. You can also maintain traveler preferences, track policy compliance, surface disruptions to end users, and keep stakeholder systems (HRIS, finance, analytics, procurement) in lockstep.

What is BCD Travel?

BCD Travel (https://www.bcdtravel.com/) is a global provider of corporate travel management that centralizes booking, policy enforcement, approvals, traveler servicing, analytics, and duty-of-care across multinational enterprises. Organizations use BCD to source negotiated rates, manage traveler profiles and preferences, process trip approvals, ticket and reissue air segments, reserve hotels and cars, and produce spend and compliance reporting through products like TripSource (traveler experience/app) and DecisionSource (analytics/reporting).

Core product areas include:

  • Travel Booking & Fulfillment (Air, Hotel, Car, Rail, Ticketing, Exchanges)
  • Policy & Approvals (Pre-Trip Approvals, Policy Groups, Exception Handling)
  • Traveler Experience & Duty of Care (TripSource Itinerary Management, Disruption Alerts, Risk & Location)
  • Analytics & Reporting (DecisionSource, Spend, Compliance, Supplier Performance)
  • Financials (Invoices/Receipts, Cost Allocation, VAT, Payment Methods, Unused Ticket Credits)

Common data entities:

  • Companies, Users, Roles/Permissions (Travel Manager, Approver, Traveler)
  • Traveler Profiles (contact info, employee ID, cost center, preferences, loyalty numbers)
  • Trips/PNRs (GDS references, booking/ticketing dates, status)
  • Itinerary Segments (Flights, Hotels, Cars, Rail) and e-ticket/confirmation artifacts
  • Approvals & Policy Exceptions (states, approver, timestamps, comments)
  • Invoices/Receipts (line items, fares, taxes/fees, currency, payment method)
  • Unused Tickets/Credits (ticket numbers, values, expiry)
  • Disruptions & Alerts (schedule changes, cancellations, safety advisories)

The BCD Travel Integration Challenge

Corporate travel teams rely on BCD daily, but turning portal-based workflows and GDS-driven ticketing into API-driven automation is non-trivial:

  • OBT and portal fragmentation: Data lives across BCD portals (e.g., TripSource, DecisionSource) and online booking tools like SAP Concur, Cytric, and GetThere—each with different views and timing.
  • GDS complexity: PNRs, ticket numbers, reissues/exchanges, and passive segments require careful mapping to traveler-facing itineraries and finance objects.
  • Paywalls and exports: Many TMCs gate real-time APIs and charge for batch data feeds or custom exports; common complaints include high data-access fees, delayed delivery, and limited automation hooks.
  • Authentication & SSO: Enterprise SSO/MFA (Okta, Azure AD), Concur-linked auth, and session lifecycles complicate headless automation.
  • Compliance & privacy: Duty-of-care, GDPR, and regional data-residency constraints demand role-aware access and careful scoping.
  • Asynchronous events: Ticketing, schedule changes, and rebookings happen out of band, so systems must reconcile evolving states.

How Supergood Creates BCD Travel APIs

Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your BCD Travel tenant.

  • Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
  • Maintains session continuity with automated refresh and change detection
  • Normalizes responses so you can integrate once and rely on consistent objects across modules
  • Aligns with customer entitlements and role-based permissions to ensure compliant access

Use Cases

Traveler & HR Data Sync

  • Mirror traveler profiles (contact info, cost center, policy group, preferences) into your HRIS or internal directory
  • Keep loyalty numbers and preferences current to reduce booking friction
  • Normalize identifiers (employee ID, manager, department) for cross-system reporting

Policy & Approval Automation

  • Trigger pre-trip approvals from your product (Slack, email, mobile) and push decisions back
  • Capture policy exception reasons, tie to budgets or projects, and audit for compliance
  • Drive SLA alerts for pending approvals and high-risk itineraries

Itinerary & Disruption Intelligence

  • Ingest trips and segments, attach e-tickets and confirmations to user accounts
  • Surface real-time disruptions and schedule changes to your app and notify stakeholders
  • Power calendar sync and traveler communications with accurate, consolidated itineraries

Financials: Spend, Invoices, and Accounting Sync

  • Pull fare/tax/fee breakdowns and reconcile to ERP/accounting (e.g., QuickBooks, Xero)
  • Map cost centers, GL codes, and projects for automated allocation
  • Track unused ticket credits to optimize spend and recovery

Available Endpoints

Authentication

POST /sessions: Establish a session using credentials. Supergood manages MFA (SMS, email, TOTP) and SSO/OAuth when enabled. Returns a short-lived auth token maintained by the platform.

curl --request POST \
  --url https://api.supergood.ai/integrations/<integration_id>/sessions \
  --header 'Authorization: Basic <Base64 encoded token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "username": "[email protected]",
    "password": "<password>",
    "mfa": { "type": "totp", "code": "123456" }
  }'

Example response

{
  "authToken": "eyJhbGciOi...",
  "expiresIn": 3600,
  "user": {
    "id": "u_bcd_7a9c10",
    "name": "Travel Manager",
    "entitlements": ["traveler_profiles", "trips", "itineraries", "approvals", "reporting"]
  }
}

POST /sessions/refresh: Refresh an existing token to keep sessions uninterrupted.

Traveler Profiles

GET /traveler-profiles: List traveler profiles with filters and summary details.

Query parameters

  • companyId: string
  • status: active | inactive
  • updatedFrom, updatedTo: ISO 8601 timestamps
  • page, pageSize: integers for pagination

Example response

{
  "items": [
    {
      "travelerId": "trv_9d21b8",
      "companyId": "co_bcd_1102",
      "employeeId": "E-45783",
      "name": { "first": "Ava", "last": "Lopez" },
      "email": "[email protected]",
      "phone": "+1-415-555-0173",
      "status": "active",
      "policyGroupId": "pol_01c8",
      "costCenter": "CC-120-Marketing",
      "department": "Marketing",
      "managerEmail": "[email protected]",
      "preferences": {
        "seat": "aisle",
        "airlinesPreferred": ["DL", "UA"],
        "hotelBedType": "king",
        "loyalty": [
          {"program": "UA MileagePlus", "number": "UA123456"},
          {"program": "Marriott Bonvoy", "number": "MB998877"}
        ]
      },
      "risk": { "homeBase": "SFO", "emergencyContacts": ["+1-415-555-0111"] },
      "updatedAt": "2026-01-20T13:45:00Z"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "total": 1
}

Trips

GET /trips: List trips/PNRs with filters and summary details.

Query parameters

  • companyId: string
  • travelerId: string
  • status: upcoming | in_progress | completed | cancelled
  • approvalStatus: pending | approved | rejected | exception
  • startFrom, endTo: ISO 8601 timestamps (trip date range)
  • updatedFrom, updatedTo: ISO 8601 timestamps
  • page, pageSize: integers for pagination

Example response

{
  "items": [
    {
      "tripId": "trip_8210b3",
      "pnr": "AB12CD",
      "gds": "Amadeus",
      "bookingDate": "2026-01-15T09:21:00Z",
      "startDate": "2026-02-10",
      "endDate": "2026-02-13",
      "status": "upcoming",
      "travelerId": "trv_9d21b8",
      "travelerName": "Ava Lopez",
      "approvalStatus": "approved",
      "policyCompliant": true,
      "segments": { "flightCount": 2, "hotelCount": 1, "carCount": 1 },
      "currency": "USD",
      "totalFare": 1450.23,
      "fareBreakdown": {
        "air": 980.00,
        "hotel": 360.00,
        "car": 110.23,
        "taxesFees": 150.00
      },
      "costCenter": "CC-120-Marketing",
      "projectCode": "PRJ-9842",
      "updatedAt": "2026-01-20T14:10:00Z"
    }
  ],
  "page": 1,
  "pageSize": 50,
  "total": 1
}

Itinerary Details

GET /trips/{tripId}/itinerary: Retrieve the full itinerary with segment details and artifacts.

curl --request GET \
  --url https://api.supergood.ai/integrations/<integration_id>/trips/trip_8210b3/itinerary \
  --header 'Authorization: Bearer <authToken>'

Example response

{
  "tripId": "trip_8210b3",
  "segments": {
    "flights": [
      {
        "origin": "SFO",
        "destination": "JFK",
        "airline": "UA",
        "flightNumber": "UA 212",
        "departure": "2026-02-10T08:20:00-08:00",
        "arrival": "2026-02-10T16:40:00-05:00",
        "bookingClass": "Y",
        "fareBasis": "Y26NR",
        "ticketNumber": "0162212345678",
        "status": "confirmed"
      },
      {
        "origin": "JFK",
        "destination": "SFO",
        "airline": "UA",
        "flightNumber": "UA 217",
        "departure": "2026-02-13T18:05:00-05:00",
        "arrival": "2026-02-13T21:30:00-08:00",
        "bookingClass": "Y",
        "fareBasis": "Y26NR",
        "ticketNumber": "0162212345678",
        "status": "confirmed"
      }
    ],
    "hotels": [
      {
        "propertyName": "Hilton Midtown",
        "address": {
          "line1": "1335 6th Ave",
          "city": "New York",
          "region": "NY",
          "postalCode": "10019",
          "country": "US"
        },
        "checkIn": "2026-02-10",
        "checkOut": "2026-02-13",
        "confirmationNumber": "HIL1234567",
        "rate": 180.00,
        "currency": "USD",
        "status": "confirmed"
      }
    ],
    "cars": [
      {
        "vendor": "Avis",
        "pickup": {
          "locationCode": "JFK",
          "dateTime": "2026-02-10T17:15:00-05:00"
        },
        "dropoff": {
          "locationCode": "JFK",
          "dateTime": "2026-02-13T17:00:00-05:00"
        },
        "confirmationNumber": "AVIS998877",
        "carClass": "Standard",
        "status": "confirmed"
      }
    ]
  },
  "attachments": [
    {"fileName": "eticket_0162212345678.pdf", "downloadUrl": "https://files.supergood.ai/downloads/upl_08ab73"},
    {"fileName": "hotel_confirmation.pdf", "downloadUrl": "https://files.supergood.ai/downloads/upl_08ab74"}
  ],
  "updatedAt": "2026-01-21T10:03:11Z"
}

Approvals

POST /trips/{tripId}/approvals: Create or update a pre-trip approval decision with policy exception metadata.

curl --request POST \
  --url https://api.supergood.ai/integrations/<integration_id>/trips/trip_8210b3/approvals \
  --header 'Authorization: Bearer <authToken>' \
  --header 'Content-Type: application/json' \
  --data '{
    "approverId": "usr_mgr_4412",
    "decision": "approve",
    "comments": "Approved within policy and budget.",
    "policyException": null,
    "notifyTraveler": true,
    "referenceId": "slack-approval-9821"
  }'

Example response

{
  "approvalId": "appr_51af80",
  "tripId": "trip_8210b3",
  "status": "approved",
  "approvedAt": "2026-01-21T11:20:44Z",
  "approverId": "usr_mgr_4412",
  "comments": "Approved within policy and budget."
}

Get full API Specs →


Technical Specifications

  • Authentication: Username/password with MFA (SMS, email, TOTP) and SSO/OAuth where enabled; supports service accounts or customer-managed credentials
  • Response format: JSON with consistent resource schemas and pagination across modules
  • Rate limits: Tuned for enterprise throughput while honoring customer entitlements and usage controls
  • Session management: Automatic reauth and cookie/session rotation with health checks
  • Data freshness: Near real-time retrieval of traveler profiles, trips, itineraries, approvals, and reporting objects
  • Security: Encrypted transport, scoped tokens, and audit logging; respects BCD role-based permissions and regional compliance
  • Webhooks: Optional asynchronous delivery for long-running workflows (e.g., ticketing updates, schedule changes, approvals)

Performance Characteristics

  • Latency: Sub-second responses for list/detail queries under normal load
  • Throughput: Designed for high-volume trip data sync and approval processing across large traveler populations
  • Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
  • Adaptation: Continuous monitoring for UI/API changes with rapid adapter updates

Getting Started

  1. Schedule Integration Assessment

Book a 30-minute session to confirm your modules, licensing, and authentication model.

  1. Supergood Builds and Validates Your API

We deliver a hardened BCD Travel adapter tailored to your workflows and entitlements.

  1. Deploy with Monitoring

Go live with continuous monitoring and automatic adjustments as BCD evolves.

Schedule Integration Call →


Frequently Asked Questions

Q: Which BCD modules can this integration cover?

Supergood supports workflows across commonly used areas such as Traveler Profiles, Trips/PNRs, Itineraries (flights/hotels/cars), Approvals & Policy Exceptions, Disruption Alerts, and Reporting/Spend, subject to your licensing and entitlements. We scope coverage during integration assessment.

Q: How are MFA and SSO handled for automation?

We support username/password + MFA (SMS, email, TOTP) and can operate behind enterprise SSO/OAuth (e.g., Okta, Azure AD, Concur-linked auth) when enabled. Sessions are refreshed automatically with secure challenge handling.

Q: Can you sync travel spend and invoices to our accounting system?

Yes. We can normalize air/hotel/car invoice line items, taxes/fees, and cost allocations to match your ERP/accounting schema and deliver updates via webhooks or polling while complying with rate and permission constraints. We commonly integrate with QuickBooks and Xero.

Q: Do you handle unused ticket credits and exchanges?

We can surface unused ticket balances and reissue activity with ticket numbers, values, and expiry, and align those records to travelers and trips to optimize recovery and policy compliance.



Ready to automate your BCD Travel workflows?

Supergood can have your BCD Travel integration live in days with no ongoing engineering maintenance.

Get Started →

Read more