# Delta Air Lines Mobile API Extracted from `com.delta.mobile.android` v6.7 (build 24019) ## Base URLs | Environment | URL | |-------------|-----| | Production | `https://www.delta.com` | | CDN | `https://content.delta.com` | | Embed Web | `https://api.delta.com/embedweb` | ## Key Endpoints ### Airport Standby List (ASL) ``` POST https://www.delta.com/api/mobile/asl ``` **This is the standby/upgrade list endpoint.** Uses `AirportStandbyListRequest` with fields: - `departureDate` — flight departure date - Request likely includes flight number, origin, destination - Returns `AirportUpgradeStandbyModel` with upgrade list and standby list data ### Flight Status ``` POST https://www.delta.com/api/mobile/getFlightStatus POST https://www.delta.com/api/mobile/getFlightStatusByLeg ``` ### Upgrade Eligibility ``` POST https://www.delta.com/api/mobile/getUpgradeEligibilityInfo POST https://www.delta.com/api/mobile/purchaseEfirst ``` ### Complimentary Upgrade (from DEX strings) ``` /getComplimentaryUpgrade /processComplimentaryUpgrade /purchaseUpgrade ``` ## All Mobile API Endpoints | Endpoint | Path | |----------|------| | **Standby List** | `/api/mobile/asl` | | Flight Status | `/api/mobile/getFlightStatus` | | Flight Status By Leg | `/api/mobile/getFlightStatusByLeg` | | Flight Schedule | `/api/mobile/getFlightSchedule` | | Login | `/api/mobile/login` | | Logout | `/api/mobile/logout` | | Check Login | `/api/mobile/checkLogin` | | Get Profile | `/api/mobile/getprofile` | | Manage Profile | `/api/mobile/manageProfile` | | Get PNR | `/api/mobile/getPnr` | | Validate PNR | `/api/mobile/validatePnr` | | Dashboard | `/api/mobile/getDashboard` | | Check-in | `/api/mobile/checkin` | | Seat Map | `/api/mobile/getSeatMap` | | Change Seat | `/api/mobile/changeSeat` | | Upgrade Eligibility | `/api/mobile/getUpgradeEligibilityInfo` | | Purchase E-First | `/api/mobile/purchaseEfirst` | | Bag Info | `/api/mobile/getBagInfo` | | Add Bags | `/api/mobile/addBags` | | Get Bags | `/api/mobile/getBags` | | Bag Carousel | `/api/mobile/getBagCarousel` | | Weather | `/api/mobile/getWeather` | | Account Activity | `/api/mobile/getAcctActivity` | | SkyClub Info | `/api/mobile/getSkyclubInfo` | | Purchase SkyClub | `/api/mobile/purchaseSkyclub` | | Receipts | `/api/mobile/getReceipts` | | Email Receipt | `/api/mobile/processEmailReceipt` | | Merchandise | `/api/mobile/getMerchandise` | | Promotions | `/api/mobile/getPromotions` | | Airport Mode | `/api/mobile/getAirportMode` | | Passenger Info | `/api/mobile/getPaxInfo` | | Manage Passenger | `/api/mobile/managePaxInfo` | | Travel Documents | `/api/mobile/getTravelDoc` | | Add Travel Doc | `/api/mobile/addTravelDoc` | | Emergency Contact | `/api/mobile/addEmergencyContact` | | Manage Cart | `/api/mobile/manageCart` | | Get Cart | `/api/mobile/getCart` | | Clear Cart | `/api/mobile/clearCart` | | Eligible FOP | `/api/mobile/getEligibleFop` | | SSR | `/api/mobile/getSsr` | | Available SSR | `/api/mobile/getAvailableSsr` | | Manage SSR | `/api/mobile/manageSsr` | | Manage FF | `/api/mobile/manageFF` | | Validate Address | `/api/mobile/validateAddress` | | Forgot Username | `/api/mobile/forgotUserName` | | Country Reference | `/api/mobile/getCountryReferenceData` | | Address Fields | `/api/mobile/getAddressFields` | | Enroll SkyMiles | `/api/mobile/enrollSM` | | Upsell Info | `/api/mobile/getPnrUpsellInfo` | | Upsell Fare Rules | `/api/mobile/getUpsellFareRules` | | Purchase Upsell | `/api/mobile/purchaseUpsell` | | Supported Version | `/api/mobile/supportedVersion` | | SkyMiles Info | `/api/mobile/getSMInfo` | | SkyMiles Pass | `/api/mobile/getSMPass` | | SC Info | `/api/mobile/getSCInfo` | | SC Pass | `/api/mobile/getSCPass` | | Membership Status | `/api/mobile/getMembershipStatusInfo` | | EOD Eligibility | `/api/mobile/getEODEligibility` | | Store Password | `/api/mobile/storePassword` | | Store Email | `/api/mobile/storeEmail` | | Update Password | `/api/mobile/updatePassword` | | Security Questions | `/api/mobile/getSecurityQuestions` | | Get SQA | `/api/mobile/getSQA` | | Store SQA | `/api/mobile/storeSQA` | | App Info | `/api/mobile/getinfo` | ## Request Headers (from DEX analysis) The app uses an `AirlineRequest` pattern with these common headers: - `Content-Type: application/json` - Custom auth headers (session-based after `/api/mobile/login`) ## ASL Data Model (from DEX class analysis) ### AirportStandbyListRequest - `requestInfo` — flight identification - `departureDate` — date string ### AirportUpgradeStandbyModel Contains: - Upgrade list (by cabin class) - Standby list - `standbyPriority` / `standbyPriorityCode` - `upgradeList` entries - `ASLStandby` — individual standby entries - `ASLUpgrade` — individual upgrade entries - `UpgradeSeatRemaining` — available seats per cabin - `PassengerChiclet` — passenger display data ### UpgradeStandbyParams - `airportModeResponse` - Flight leg details - Eligibility flags ## Security Notes - **No SSL pinning** in `network_security_config.xml` (only trusts system CAs) - **No PairIP or anti-tamper** — app runs on emulators - Auth is session-based via `/api/mobile/login` - The ASL endpoint likely requires an authenticated session - No Akamai bot detection observed on the mobile API path ## Next Steps 1. Call `/api/mobile/login` with Delta credentials to get a session 2. Call `/api/mobile/getFlightStatus` with a flight number 3. Call `/api/mobile/asl` with the flight details from the status response 4. The ASL response should contain upgrade and standby lists