Missing actual_out/actual_in when using event_code = out/in

Hello,

Our app relies heavy on the actual out and actual in alerts. We are seeing a few times where the actual_out or actual_in value respectively to the request is null (an example below) .

We put in a workaround to make an additional call to get the data which I would like to avoid, but we are finding sometimes the actual in from GET /flights/ident is null. (an example below) . I added a process to manually update the data by making a second GET /flights/ident call and I get the value. When we crossreference the FA website for the flight the actual in is present showing the flight arrived before we get the alert.

Is this expected behavior, and if so is there a way to hold off sending the alert until the actual in is populated? The actual out value we are not too concerned with because we get the alert it happened and we will get the value on the subsequent calls.

Thanks in advance.
Jim

Event Code: out

{“long_description”:“American Airlines / Envoy Air #3407 left the gate at Abilene Rgnl (KABI) at 10:19AM CST, en route to Dallas-Fort Worth Intl (KDFW) \n\nDestination (Dallas-Fort Worth Intl / KDFW): Terminal B, Gate B17”,“short_description”:“ENY3407 left gate at KABI at 10:19AM CST, en route to KDFW”,“summary”:“ENY3407 left gate KABI, en route to KDFW”,“event_code”:“out”,“alert_id”:66629979,“flight”:{“fa_flight_id”:“ENY3407-1705422716-airline-2111p”,“ident”:“ENY3407”,“registration”:“N265NN”,“atc_ident”:null,“aircraft_type”:“E75L”,“origin”:“KABI”,“destination”:“KDFW”,“route”:“SNGGL BOOVE6”,“position_only”:false,“blocked”:false,“cancelled”:false,“diverted”:false,“route_distance”:158,“filed_ete”:2340,“filed_altitude”:210,“filed_airspeed_kts”:425,“scheduled_out”:“2024-01-18T16:36:00Z”,“estimated_out”:“2024-01-18T16:36:00Z”,“actual_out”:null,“scheduled_off”:“2024-01-18T16:45:10Z”,“estimated_off”:“2024-01-18T16:45:10Z”,“actual_off”:null,“scheduled_on”:“2024-01-18T17:24:10Z”,“estimated_on”:“2024-01-18T17:24:50Z”,“actual_on”:null,“scheduled_in”:“2024-01-18T17:31:00Z”,“estimated_in”:“2024-01-18T17:34:50Z”,“actual_in”:null,“baggage_claim”:“B5”,“gate_origin”:“3”,“gate_destination”:“B17”,“terminal_origin”:null,“terminal_destination”:“B”,“ident_iata”:“MQ3407”,“ident_icao”:“ENY3407”,“origin_icao”:“KABI”,“origin_iata”:“ABI”,“origin_lid”:“ABI”,“destination_icao”:“KDFW”,“destination_iata”:“DFW”,“destination_lid”:“DFW”}}

Event Code : in

{“long_description”:“American Airlines / Envoy Air #3736 is at the gate at Dallas-Fort Worth Intl (KDFW) at 08:47AM CST, arriving from Lic. Jesus Teran Peredo Int’l (AGU / MMAS)\n\nDestination (Dallas-Fort Worth Intl / KDFW): Terminal B, Gate B1A”,“short_description”:“ENY3736 is at the gate at KDFW, arriving from AGU / MMAS”,“summary”:“ENY3736 at the gate at KDFW, arriving from AGU / MMAS”,“event_code”:“in”,“alert_id”:66630008,“flight”:{“fa_flight_id”:“ENY3736-1705408371-schedule-854p”,“ident”:“ENY3736”,“registration”:“N285NN”,“atc_ident”:null,“aircraft_type”:“E75L”,“origin”:“MMAS”,“destination”:“KDFW”,“route”:“GABLA UJ40 NLD J22 LRD J21 SAT GUTZZ BOOVE6”,“position_only”:false,“blocked”:false,“cancelled”:false,“diverted”:false,“route_distance”:839,“filed_ete”:7200,“filed_altitude”:270,“filed_airspeed_kts”:456,“scheduled_out”:“2024-01-18T12:20:00Z”,“estimated_out”:“2024-01-18T12:17:00Z”,“actual_out”:“2024-01-18T12:17:00Z”,“scheduled_off”:“2024-01-18T12:30:00Z”,“estimated_off”:“2024-01-18T12:55:24Z”,“actual_off”:“2024-01-18T12:55:24Z”,“scheduled_on”:“2024-01-18T14:30:00Z”,“estimated_on”:“2024-01-18T14:41:16Z”,“actual_on”:“2024-01-18T14:41:16Z”,“scheduled_in”:“2024-01-18T14:38:00Z”,“estimated_in”:“2024-01-18T14:51:32Z”,“actual_in”:null,“baggage_claim”:“D1”,“gate_origin”:null,“gate_destination”:“B1A”,“terminal_origin”:null,“terminal_destination”:“B”,“ident_iata”:“MQ3736”,“ident_icao”:“ENY3736”,“origin_icao”:“MMAS”,“origin_iata”:“AGU”,“origin_lid”:null,“destination_icao”:“KDFW”,“destination_iata”:“DFW”,“destination_lid”:“DFW”}}

GET /flights/ident

"{“type” : “Airline”,“terminal_origin” : null,“terminal_destination” : “B”,“status” : “Landed / Taxiing”,“seats_cabin_first” : null,“seats_cabin_coach” : null,“seats_cabin_business” : null,“scheduled_out” : “2024-01-18T12:20:00.000Z”,“scheduled_on” : “2024-01-18T14:30:00.000Z”,“scheduled_off” : “2024-01-18T12:30:00.000Z”,“scheduled_in” : “2024-01-18T14:38:00.000Z”,“route_distance” : 839,“route” : “GABLA UJ40 NLD J22 LRD J21 SAT GUTZZ BOOVE6”,“registration” : “N285NN”,“progress_percent” : 100,“position_only” : false,“origin” : {“timezone” : “America/Mexico_City”,“name” : “Lic. Jesus Teran Peredo Int’l”,“code_lid” : null,“code_icao” : “MMAS”,“code_iata” : “AGU”,“code” : “MMAS”,“city” : “Aguascalientes”,“airport_info_url” : “/airports/MMAS”},“operator_icao” : “ENY”,“operator_iata” : “MQ”,“operator” : “ENY”,“inbound_fa_flight_id” : “ENY3735-1705373462-schedule-39p”,“ident_icao” : “ENY3736”,“ident_iata” : “MQ3736”,“ident” : “ENY3736”,“gate_origin” : null,“gate_destination” : “B1A”,“foresight_predictions_available” : true,“flight_number” : “3736”,“filed_ete” : 7200,“filed_altitude” : 270,“filed_airspeed” : 456,“fa_flight_id” : “ENY3736-1705408371-schedule-854p”,“estimated_out” : “2024-01-18T12:17:00.000Z”,“estimated_on” : “2024-01-18T14:41:16.000Z”,“estimated_off” : “2024-01-18T12:55:24.000Z”,“estimated_in” : “2024-01-18T14:51:32.000Z”,“diverted” : false,“destination” : {“timezone” : “America/Chicago”,“name” : “Dallas-Fort Worth Intl”,“code_lid” : “DFW”,“code_icao” : “KDFW”,“code_iata” : “DFW”,“code” : “KDFW”,“city” : “Dallas-Fort Worth”,“airport_info_url” : “/airports/KDFW”},“departure_delay” : -180,“codeshares_iata” : [ “JL7225”, “QR9264”, “AA3736” ],“codeshares” : [ “JAL7225”, “QTR9264”, “AAL3736” ],“cancelled” : false,“blocked” : false,“baggage_claim” : “D1”,“atc_ident” : null,“arrival_delay” : 812,“aircraft_type” : “E75L”,“actual_runway_on” : “18R”,“actual_runway_off” : “35”,“actual_out” : “2024-01-18T12:17:00.000Z”,“actual_on” : “2024-01-18T14:41:16.000Z”,“actual_off” : “2024-01-18T12:55:24.000Z”,“actual_in” : null}

Our alert delivery already does make an effort to wait for a limited amount of time for certain “actual” fields to be populated for events, but sometimes the event needs to be delivered without being able to. In those cases, you can try doing another flight lookup on the fa_flight_id to see if the actual time has become available.

Ok good to know. Thanks for the response.

Hello. I experience the same issue. Can you guarantee for a duration after which the actual_* fields are sure to be available? In other words, how long should I wait to check again?

Unfortunately, it’s not possible to completely guarantee availability of actual timestamps simply by waiting longer. Sometimes we might never receive the actual gate times for a flight, particularly in low-coverage areas or with airlines that do not have data partnership agreements. In some cases we can derive actual timestamps based on ground-position data, but sometimes we can receive delayed satellite uplink events that had been held and batched up by the aircraft minutes after the event occurred.

However, as a rough worst-case guideline I would expect that no further updates to the actual timestamps would occur 5 minutes after the expected event occurred.

I came across a flight that is missing the actual in after 4 days. United Airlines, Flight UAL2122 on 07/17/2024 EWR to PUL. The website shows the Actual In, however, was the estimated time used or was that the actual arrival time? When using the API we dont get the actual in. We need the actual in to log the flight statistics such as total time. What should our action be if actual in is not provided, is the estimated time reliable to use in this case. We are getting an increase of cases where we are not finding the complete set of data we need when calling /flights/{ident} or receiving the alert callback

Thanks - Jim

If our API still does not return an Actual In value more than an hour after the expected event, then it is not likely that we will receive it later. There are sometimes gaps in OOOI data coverage depending on the airline or airport that are beyond our control. Your best option is to use the Estimated time if you really must use some value, but you should treat it and present it to your users as a value with less confidence.

We are not seeing actual_in being reported via the AeroApi. Here is the response we are getting for flight AA3430 on August 3th. At this time on Aug 12th, the API is still returning null. However your website is shown the actual in. We are starting to get numerous support tickets open on this issue intermittently on several flights since we first opened the discussion. Can this be corrected, this is really impacting our service especially if we never get actual in.

FlightResponse:[actual_in=null, actual_off=2024-08-03 20:30:35, actual_on=2024-08-03 21:56:21, actual_out=2024-08-03 20:03:00, actual_runway_off=36R, actual_runway_on=36R, aircraft_type=E170, arrival_delay=1821, atc_ident=null, baggage_claim=null, blocked=false, cancelled=false, codeshares=(BAW6556, AAL3430, QTR7936), codeshares_iata=(BA6556, AA3430, QR7936), departure_delay=1680, destination=AirportLocationData:[airport_info_url=/airports/MMCU, city=Chihuahua, code=MMCU, code_iata=CUU, code_icao=MMCU, code_lid=null, name=General Roberto Fierro Villalobos Int’l, timezone=America/Chihuahua], diverted=false, estimated_in=2024-08-03 22:04:38, estimated_off=2024-08-03 20:30:35, estimated_on=2024-08-03 21:56:21, estimated_out=2024-08-03 20:03:00, fa_flight_id=ENY3430-1722541562-schedule-1236p, filed_airspeed=415, filed_altitude=360, filed_ete=5340, flight_number=3430, foresight_predictions_available=true, gate_destination=null, gate_origin=E38B, ident=ENY3430, ident_iata=MQ3430, ident_icao=ENY3430, inbound_fa_flight_id=ENY3592-1722524427-airline-265p, operator=ENY, operator_iata=MQ, operator_icao=ENY, origin=AirportLocationData:[airport_info_url=/airports/KDFW, city=Dallas-Fort Worth, code=KDFW, code_iata=DFW, code_icao=KDFW, code_lid=DFW, name=Dallas-Fort Worth Intl, timezone=America/Chicago], position_only=false, progress_percent=100, registration=N745JB, route=WSTEX2 DOSXX LOWGO J42 FST ALKEM KIPAL CUU, route_distance=604, scheduled_in=2024-08-03 21:26:00, scheduled_off=2024-08-03 19:45:00, scheduled_on=2024-08-03 21:14:00, scheduled_out=2024-08-03 19:35:00, seats_cabin_business=null, seats_cabin_coach=null, seats_cabin_first=null, status=Arrived / Delayed, terminal_destination=null, terminal_origin=E, type=Airline]), links=null, num_pages=1]

That flight is tracked on our website here: MQ3430 (ENY3430) Envoy Air Flight Tracking and History 03-Aug-2024 (KDFW-CUU / MMCU) - FlightAware

And if you look, we don’t actually have an actual_in time for it either, just an estimated_in of estimated_in=2024-08-03 22:04:38. (Our website renders estimated times in italics to distinguish that they are not actual times.)
image

As I mentioned in my previous message, you should try to fall back to using one of the other times you do have (such as estimated) if you do not have an actual. The manner in which you present this fallback of values to your users is part of the UI that you must decide upon to provide the best user experience when the data is not available.