Supergood | Deem API
Programmatically access Deem corporate travel data—traveler profiles, trips and itineraries, policy and approvals—and even create air bookings via a stable REST API. Supergood builds and operates production-grade, unofficial Deem integrations so your team can automate travel operations without heavy custom engineering.
Plain English: Deem is a corporate online booking tool (OBT) used by companies and their travel management companies (TMCs) to book and manage business travel for flights, hotels, cars, and rail. An unofficial API lets you programmatically pull traveler profiles, trips, itineraries, approvals, tickets and credits—and push bookings, approvals/declines, cancellations, and profile updates back into Deem.
For a tech company integrating with Deem, this means you can ingest live trip and traveler data to power duty-of-care dashboards, sync approvals to your workflow tools, apply unused ticket credits during booking, or enrich your platform with detailed segments, fares, and receipts. You can also trigger trip approvals, allocate cost centers, enforce policy, and keep downstream systems (expense, HRIS, ERP, analytics) in sync. Many teams report limited export options, partner-only APIs, and brittle SSO/MFA sessions; Supergood removes these barriers with a reliable, role-aware API layer.
What is Deem?
Deem (https://www.deem.com/) is an enterprise online booking tool that helps organizations book and manage corporate travel while enforcing policy, approvals, and negotiated rates. Travelers use Deem to shop and book air, hotel, car, and rail content; managers and TMCs use it to apply policy, process approvals, service PNRs, and report on spend and compliance. Deem integrates with GDSs and partner content sources, SSO/IdP, HRIS, expense platforms, and duty-of-care providers.
Core product areas include:
- Online Booking & Content (Air, Hotel, Car, Rail, NDC and negotiated rates)
- Traveler Profiles & Payments (Traveler profiles, loyalty programs, corporate/ghost cards)
- Policy & Approvals (Rule sets, auto-approval, multi-level approvers)
- Trips & Itineraries (PNRs, segments, fare rules, receipts, ticketing status)
- Credits & Unused Tickets (Airline e-credits tracking and application)
- Reporting & Analytics (Spend, savings, supplier performance, policy compliance)
- Integrations (SSO/MFA, HRIS feeds, expense/ERP, duty of care, TMC servicing)
Common data entities:
- Companies, Travelers, Approvers, Roles/Permissions
- Traveler Profiles (personal info, passport/visa, loyalty, payment, preferences)
- Trips (PNR, status, approval state, cost center, policy flags)
- Segments (Air legs, hotel stays, car rentals, rail tickets)
- Tickets & Credits (Ticket numbers, e-credits/unused tickets, validity)
- Policies (Rules, thresholds, exceptions, approver routing)
- Approvals (Pending, approved, declined, timestamps, notes)
The Deem Integration Challenge
Teams rely on Deem for day-to-day travel operations, but turning portal flows into API-driven automation is non-trivial:
- Partner-first APIs: Access is often limited; exports are typically scheduled reports rather than real-time feeds
- Authentication complexity: SSO/MFA, device trust, and session lifecycles complicate headless automation
- Booking flows: Shopping, pricing, seat maps, ancillaries, and fare rules involve async checks and reprice events
- Policy and approvals: Dynamic rule evaluation and multi-level approvals require context-aware handling
- PNR servicing: TMC updates, ticketing, and exchanges can alter itineraries without UI events
- Credits and unused tickets: Carrier-specific rules and applicability need careful matching during booking
How Supergood Creates Deem APIs
Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your Deem tenant.
- Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
- Maintains session continuity with automated refresh and change detection
- Normalizes responses across modules (profiles, trips, approvals, tickets) for consistent schemas
- Aligns with customer entitlements and role-based permissions to ensure compliant access
Use Cases
Traveler & Policy Sync
- Mirror travelers, approvers, and policy metadata into HRIS or IAM
- Keep profile attributes current (loyalty programs, payment methods, preferences)
- Normalize departments and cost centers for multi-entity organizations
Trip Approvals & Duty of Care
- Route pending approvals into your internal workflow tools (Slack, Jira, ServiceNow)
- Approve/decline trips programmatically with audit notes
- Feed live trip and segment data to safety providers and internal command centers
Booking & Credits Automation
- Create compliant air bookings or holds from your product workflows
- Apply unused ticket credits automatically when policy allows
- Preassign cost centers, add traveler notes, and request policy overrides with rationale
Expense & ERP Sync
- Push ticket totals, taxes, and receipts into expense/accounting
- Align GL codes/cost centers and reconcile against budgets
- Trigger alerts on out-of-policy spend and missed savings opportunities
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": "usr_deem_29f1a0",
"name": "Travel Manager",
"entitlements": ["travelers", "trips", "approvals", "bookings"]
}
}
Trips
GET /trips: List trips with filters, policy status, and segment summaries.
Query parameters
- travelerId: string
- status: upcoming | past | canceled | pending_approval | on_hold
- dateFrom, dateTo: ISO 8601 dates (trip start window)
- updatedFrom, updatedTo: ISO 8601 timestamps
- includeSegments: boolean
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"tripId": "trip_4a92ce",
"pnr": "Q7N9KJ",
"tmcRecordLocator": "AB12CD",
"status": "pending_approval",
"approvalState": "awaiting_manager",
"traveler": {"id": "trv_1039b4", "name": "Jordan Smith", "email": "[email protected]"},
"costCenterId": "cc_ENG_US",
"policy": {"inPolicy": false, "violations": ["fare_over_threshold", "no_preferred_carrier"]},
"startDate": "2026-02-15",
"endDate": "2026-02-19",
"currency": "USD",
"totalFare": 1285.40,
"segments": [
{"type": "air", "carrier": "UA", "flightNumber": "UA219", "origin": "SFO", "destination": "ORD", "departAt": "2026-02-15T09:35:00-08:00"},
{"type": "hotel", "name": "Hyatt Regency Chicago", "checkIn": "2026-02-15", "checkOut": "2026-02-19"}
],
"updatedAt": "2026-01-20T13:45:00Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Approvals
POST /trips/{tripId}/approve: Approve or decline a trip with audit details.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/trips/trip_4a92ce/approve \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"action": "approve",
"approverId": "apr_77c2e1",
"note": "Within team budget; proceed."
}'
Example response
{
"tripId": "trip_4a92ce",
"approvalState": "approved",
"approvedBy": {"id": "apr_77c2e1", "name": "Casey Lee"},
"approvedAt": "2026-01-21T11:20:44Z",
"nextSteps": "ticketing"
}
Air Bookings
POST /bookings/air: Create a compliant air booking (or hold) for a traveler, with optional application of an unused ticket credit.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/bookings/air \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"travelerId": "trv_1039b4",
"tripName": "SFO to ORD QBR",
"costCenterId": "cc_ENG_US",
"requireApproval": true,
"applyUnusedTicketId": "untk_88d01f",
"policyOverride": {"reason": "no_nonstop_available_with_preferred"},
"passengers": [
{
"travelerId": "trv_1039b4",
"knownTravelerNumber": "TT1234567",
"loyalty": [{"program": "UA", "number": "MP123456"}]
}
],
"itinerary": [
{
"origin": "SFO",
"destination": "ORD",
"departAt": "2026-02-15T09:35:00-08:00",
"carrier": "UA",
"flightNumber": "219",
"cabin": "economy",
"fareBrand": "economy_flex",
"seatPrefs": ["aisle"],
"bags": 1
},
{
"origin": "ORD",
"destination": "SFO",
"departAt": "2026-02-19T17:20:00-06:00",
"carrier": "UA",
"flightNumber": "2289",
"cabin": "economy",
"fareBrand": "economy_flex",
"seatPrefs": ["aisle"],
"bags": 1
}
],
"paymentMethod": {"type": "corporate_card", "last4": "0012"},
"holdOnly": true
}'
Example response
{
"bookingId": "bkg_6f1209",
"tripId": "trip_7c4aab",
"pnr": "M1L8QK",
"approvalState": "awaiting_manager",
"ticketingStatus": "on_hold",
"holdExpiresAt": "2026-01-22T23:59:59Z",
"currency": "USD",
"totalFare": 1142.30,
"appliedCredits": [{"unusedTicketId": "untk_88d01f", "amount": 200.00, "currency": "USD"}]
}
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 travelers, trips, itineraries, approvals, and credit objects with change detection
- Security: Encrypted transport, scoped tokens, and audit logging; respects Deem role-based permissions
- Webhooks: Optional async delivery for long-running workflows (e.g., approvals, ticketing, itinerary changes)
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume trip sync, approvals processing, and booking creation
- Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
- Adaptation: Continuous monitoring for UI/content model changes with rapid adapter updates
Getting Started
- Schedule Integration Assessment
Book a 30-minute session to confirm your modules, licensing, and authentication model.
- Supergood Builds and Validates Your API
We deliver a hardened Deem adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as Deem evolves.
Frequently Asked Questions
Q: Which Deem modules can this integration cover?
Supergood supports workflows across travelers/profiles, trips and itineraries, policy/approvals, and credits/unused tickets, 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 SSO/OAuth when enabled. Sessions are refreshed automatically with secure challenge handling and device fingerprinting.
Q: Can you create bookings or only read data?
Both. We can place compliant air booking holds or confirmations, apply unused tickets when policy allows, and update approvals—while keeping read access to trips, PNRs, and segments. Final ticketing follows Deem/TMC flows.
Q: How do you handle policy checks and approvals?
We surface policy flags and violations in normalized responses, and expose approve/decline endpoints with audit notes. Multi-level routing is modeled and respected based on your tenant’s configuration.
Related Integrations
SAP Concur API - Automate expense and travel data sync to accounting
TravelPerk API - Programmatically access modern OBT data and bookings
Navan (TripActions) API - Sync trips, approvals, and financials from Navan
Ready to automate your Deem workflows?
Supergood can have your Deem integration live in days with no ongoing engineering maintenance.