Our Push APIs allow BNSF to send detailed data to your systems at any given time, which means your computer system gets up-to-date information instantaneously. If interested, please complete and submit the below registration form below (be sure to enter a valid URL for us to call in the Webhook field).
Steps to receive webhooks
You can start receiving event notifications in your app using the steps in this section:
- Review the available events you want to monitor and their event payloads that you will need to parse.
- Create an externally available webhook endpoint as an HTTPS endpoint (URL) on your webserver.
- Handle requests from BNSF by parsing each event object and returning a 200 response status code.
- To avoid data loss, you can use a queuing mechanism that will capture the event payloads we send. Then, you can process them one at a time.
- For each event you are interested in, select the event from Available Events and register your publicly accessible HTTPS URL in the Registration form below.
Step 1: Review the available events
Bad Order
A bad order webhook notification is sent when we find a defect with a car and send it for repair. The payload looks like this:
{
"carInitial": "ABCX",
"carNumber": "9364",
"waybillNumber": "338216",
"operatingStation333": "FRIONA",
"operatingStationStateCode": "TX",
"origin333": "LAFAYETTE",
"originStateCode": "IN",
"destination333": "FRIONA",
"destinationStateCode": "TX",
"equipmentLoadEmptyStatusCode": "L",
"badOrderEventTypeDescription": "Initial",
"eventDescription": "Bad Order",
"eventDatetime": "2022-04-12-11.19.10",
"badOrderDescription": "WHEEL ASSEMBLY",
"badOrderEstimatedImpactDescription": "2 - 4 Hours Actual Repair Time",
"shipmentEstimatedAvailabilityDatetime": "2022-04-05-20.16.00",
"eventLocation333": "FRIONA",
"eventLocationStateCode": "TX",
"nextEventDescription": "TBD",
"nextEventEstimatedDatetime": "",
"nextRepairEventEstimatedDatetime": "",
"nextEventLocation333": "",
"nextEventLocationStateCode": "",
"nextTrainId": "",
"nextEventTrackNumber": "",
"trackNumber": "3809",
"shipper633": "ABCMATS",
"shipperFullName": "AMERICAN MATERIALS",
"consignee633": "HOLLYHOLLLC",
"consigneeFullName": "HOLLY HOLDINGS LLC",
"accountOfParty633": "",
"accountOfPartyFullName": "",
"careOfParty633": "ABC",
"careOfPartyFullName": "ABC",
"releaseToParty633": "",
"releaseToPartyFullName": "",
"beneficialOwner633": "",
"beneficialOwnerFullName": "",
"notifyParty633": "",
"notifyPartyFullName": "",
"payerOfFreight633": "",
"payerOfFreightFullName": ""
}
Drayage Booking
A drayage booking notification webhook notification is sent when drayage has been booked to move an intermodal unit. The payload looks like this:
{
"drayageBookingNumber": "SH9997454",
"destinationStateCode": "WA",
"destinationStation333": "KENT",
"destinationStationLotLocationName": "",
"originStateCode": "WA",
"originStation333": "SSEATTLE",
"originStationLotLocationName": "",
"drayageMovementMethodName": "Shuttle",
"drayageShuttleTypeName": "UnitSpecific",
"drayageShuttleMovementTypeName": "Yard",
"truckingScac": "ABCD",
"units": [
{
"equipmentInitial": "ABCU",
"equipmentNumber": "81238"
},
{
"equipmentInitial": "ABCU",
"equipmentNumber": "101013"
},
]
}
Geofence
A geofence webhook notification is sent when your passes through your pre-defined geofence. The payload looks like this:
{
"geofenceNotification": {
"customerId": 135476,
"sfdcId": "a681M0000008jKDQAY",
"geofenceName": "George Killham",
"geofenceExpirationDate": "2025-12-30",
"geofenceCustomerMessage": "Shuttle Passing Stanford",
"eventDate": "04-12-2022",
"eventTime": "10:02",
"trainId": "HGRFLAU112A",
"customer633": "CHS",
"equipmentCount": 2,
"equipmentList": [
{
"equipmentId": "SDPX96295"
},
{
"equipmentId": "TILX636213"
}
],
"loadEmpty": "EMPTY",
"commodity": "ALL",
"origin333": "ALL",
"destination333": "ALL"
}
}
Overload
An overload webhook notification is sent when we detect a car is overloaded. The payload looks like this:
{
"carInitial": "BNSF",
"carNumber": "316324",
"carOverloadedStatusCode": "OV",
"carOverloadStatusTypeName": "Scaled",
"equipmentGrossScaleWeightPounds": 279100,
"origin333": "ARCAVAN",
"originStateCode": "WI",
"scale333": "KANCITY",
"scaleStateCode": "KS",
"shipmentLoadLimitPounds": 207300,
"shipmentNetScaleWeightPounds": 223400,
"shipmentScaleWeightRequiredReductionLb": 16100,
"shippedByCustomer633": "",
"shippedByCustomerCity333": "",
"shippedByCustomerName": "",
"shippedByCustomerStateCode": "",
"shipperCity333": "DELAVAN",
"shipper633": "XYZMAT",
"shipperName": "XYZ MATERIALS",
"shipperStateCode": "WI",
"waybillDate": "2022-03-30",
"waybillNumber": "308010",
"totalLadingWeightPounds": 223400,
"trackNumber": 2060
}
Local Service Notification
An LSN webhook notification is sent when are planning to serve your yard on a given day. The payload looks like this:
{
"service_indicator": "Y",
"service_date": "April 12, 2022",
"customer_633": "POOLECHEMICA",
"station_333": "DALHART",
"station_name": "DALHART",
"station_state": "TX",
"pick_up_car_count": 7,
"pick_up_car_list": {
"loaded_cars": "",
"empty_cars": "BN468045,BN472398,GATX204679,GATX208108,ITFX91288,UTLX302755,UTLX302787,"
},
"deliver_car_count": 4,
"deliver_car_list": {
"loaded_cars": "BN467803,BNSF429817,BNSF432512,CAIX490052,",
"empty_cars": ""
},
"train_id": "R-KAN0338-12I"
}
Price Update
A price update webhook notification is sent when a price changes that you are subscribed to. The payload looks like this:
{
"priceAuthorityUpdateDate": "Tue Apr 12 00:00:00 UTC 2022",
"priceAuthorityList": {
"priceAuthoiryNumber": "5162874856",
"note": "Authority re-issued due to Origin Group changes.
Update group to exclude SJVR.",
"priceDocumentURL": "https://ratedownload.rapid.bnsf.com/Rate/rateDownloadWebService?PA_Number=0000090020&PA_Name=BNSF&PA_Item_Number=0000001000&PA_Version_Number=0000000103"
},
}
Step 2: Create an externally available webhook endpoint.
You will need to utilize the assistance of a qualified web developer to create program that can be exposed to the Internet via an HTTPS URL.
Step 3: Handle requests from BNSF
The URL should accept POST messages from api.bnsf.com. You should take care to validate the BNSF certificate when the request is
received in order to minimize security risks on your side.
Step 4: Queuing Mechanism to Avoid Data Loss
As a best practice, you should capture the requests as they come in and then write them to a database with a status of unprocessed. Then, as
you process the request records, you can mark them as processed. Following this approach will minimize data loss should your internal application
become unavailable for a time.
Step 5: Push Registration: Register Events and Endpoints
For each event you want to receive, complete the Registration form found below. You can provide a single or multiple Webhook URL.
×
BNSF Technology Use Agreement
BNSF Technology Use Agreement YOU SHOULD CAREFULLY READ THE FOLLOWING TERMS AND CONDITIONS
BEFORE USING THESE SERVICES. BY CLICKING THE ACCEPTANCE BUTTON, USING THE BNSF NETWORK, AND/OR
ACCESSING THESE SERVICES, YOU ARE CONSENTING TO BE BOUND BY AND ARE BECOMING A PARTY TO THIS
AGREEMENT. Information provided in the setup process will be used by BNSF and its affiliates for
business purposes in order to provide secure and quality service over the BNSF Technology
Network. User activity may be monitored and recorded by system personnel. Anyone using the
system expressly consents to such monitoring and recording. If possible criminal activity is
detected, records may be provided to law enforcement officials, resulting in criminal and/or
civil prosecution. By entering a user ID and password, you further agree to the following terms
and conditions of use: I agree that I am a BNSF Railway customer or an agent or employee of a
BNSF customer (hereafter "Customer") who is over the age of eighteen (18) and is authorized to
access BNSF provided API’s, software, and technology access services (hereafter “the BNSF
Network”), and is lawfully authorized to transact business with BNSF; Customer agrees to take
all reasonable steps to protect confidential information concerning BNSF prices or services and
to not disclose BNSF's confidential information to unauthorized persons including non-BNSF
affiliated 3rd parties; Customer agrees not to modify, translate, reverse engineer, decompile,
disassemble, or create derivative works of the BNSF Network or assist someone in performing such
prohibited acts. Customer agrees to keep the assigned user ID and/or password confidential and
to immediately notify BNSF if there is reason to believe the assigned user ID or password has
been improperly disclosed or otherwise compromised; Customer agrees that claims, losses and
direct or consequential damages resulting from Customer's carelessness or negligence with
respect to the assigned user ID and/or password are the responsibility of Customer; Customer
agrees and understands that even if all reasonable steps to secure the confidentiality of BNSF
information and/or Customer information are followed, there is still a risk that information
communicated could be compromised. Customer expressly accepts such risk and waives any claim or
cause of action for losses or damages which in any way arises out of the unintentional
disclosure of Customer's confidential information; Customer agrees that in the event of any
dispute concerning transactions processed or requested on the BNSF Network, BNSF's records of
such transactions are prima facie proof of the transaction and that the Customer bears the
burden of challenging the validity of BNSF's records; Customer agrees that in the event of any
obvious discrepancy between the transactions requested on the BNSF Network and rates, quotes or
other terms embodied in any contract between BNSF and Customer, BNSF shall have the right and
duty to suspend the requested transaction until the discrepancy can be resolved with Customer.
In the absence of such obvious discrepancy, the transaction requested on the BNSF Network will
control; Customer agrees that the services provided on the BNSF Network and any accompanying
software are provided on an "AS IS" basis without warranties of any kind. BNSF AND CUSTOMER
EXPRESSLY AGREE THAT BNSF HAS DISCLAIMED ALL EXPRESS AND IMPLIED WARRANTIES IN THE BNSF NETWORK
AND ACCOMPANYING SOFTWARE, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTY OF MERCHANTABILITY
OF FITNESS FOR PARTICULAR USE OR THAT THE OPERATION OF THE BNSF NETWORK WILL BE UNINTERRUPTED,
ERROR FREE OR VIRUS FREE; Customer agrees to defend, indemnify and hold harmless BNSF, its
suppliers and its resellers from and against liabilities, costs, damages and expenses (including
settlement costs and reasonable attorneys' fees) arising from any claims from anybody that
result from or relate to your use, reproduction or distribution of the BNSF Network, or your
breach of any representation, warranty or obligation under this Agreement. UNDER NO
CIRCUMSTANCES AND UNDER NO LEGAL THEORY SHALL BNSF OR ITS SUPPLIERS OR RESELLERS, BE LIABLE TO
YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, LOST PROFITS, BUSINESS
INTERRUPTIONS, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER PERSONAL OR
COMMERCIAL DAMAGES OR LOSSES ARISING FROM THE USE OR INABILITY TO USE THE PROGRAMS (WHETHER OR
NOT DUE TO ANY DEFECTS THEREIN). IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES EVEN IF
BNSF SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES OR SUCH DAMAGES WERE REASONABLY
FORSEEABLE, OR FOR ANY CLAIM BY ANY OTHER PARTY. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO
LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM BNSF’S NEGLIGENCE TO THE EXTENT APPLICABLE
LAW PROHIBITS SUCH LIMITATION. IN NO EVENT SHALL BNSF’S LIABILITY EXCEED THE PURCHASE PRICE PAID
BY YOU FOR THE SOFTWARE. Customer agrees and understands that BNSF assumes no responsibility for
claims, losses or damages whether direct or consequential, resulting from use of the BNSF
Network; BNSF agrees that Customer may aggregate an individual’s or entity’s data obtained from
the BNSF Network with other Non-BNSF data of said individual or entity. Customer agrees that it
will not otherwise aggregate multiple individuals or entities BNSF data. Customer agrees that it
has been given permission for the limited right to use the BNSF Network, the accompanying
software, and data for purpose of transacting business with BNSF. Customer agrees that it shall
not receive any additional rights to BNSF's proprietary software and/or data and that any
attempt to transfer, license, aggregate (except as specified above), or otherwise use BNSF's
software and/or data would be improper and a violation of BNSF's rights; Customer agrees that
BNSF may, in its sole discretion, amend, modify or change the BNSF Network and/or this
Technology Use Agreement. Any such amendment, modification or change shall be communicated to
Customer via, website posting, e-mail, or postal mail at BNSF’s discretion. If the Technology
Use Agreement is no longer acceptable to Customer, Customer may cancel this agreement by sending
e-mail or postal mail to the address listed below. Customer's continued use of the service
following notice of any amendment, modification or change to this agreement will constitute a
binding acceptance of such amendments, modifications or changes; Customer understands that BNSF
may terminate this agreement at any time by sending notice to Customer. Customer is responsible
for all transactions requested and processed prior to termination; and Customer agrees that if
any provision of this Agreement shall be held by a court of competent jurisdiction to be
illegal, invalid or unenforceable, the remaining provisions shall remain in full force and
effect. No waiver of any breach of any provision of this Agreement shall constitute a waiver of
any other breach of the Agreement or any other provisions hereof. This Agreement shall be
governed by the laws of the State of Texas, U.S.A and you agree to be subject to personal
jurisdiction in the State of Texas for the purposes of enforcing the provisions of this
Agreement.
API Support
Monday – Friday, 8 am – 5 pm (Central Time)
For additional help, visit our API Support page.