I see there are a few questions/answers on this particular error. However, none are in relationship to the FedEx Track API specifically. I'm attempting to iterate a list of tracking numbers through this service to capture their status. I have a developer account, API KEY, Secret KEY, and also have obtained the oAuth Token as needed. When attempting to call the API I'm receiving the following error under status code 422:

Response: {'transactionId': 'b8e70ec3-72b3-41b0-886a-f42f2559adb7', 'errors': [{'code': 'INVALID.INPUT.EXCEPTION', 'message': 'Invalid field value in the input'}]}.

If I remove the token, I'll receive a 400 status error. I believe this tells me I'm using the correct token, and API post method. However, I feel there is something I've missed. I've read through the documentation and believe I'm passing all the appropriate information.

Below is the code I've been running:

authoriztion_key = get_oauth()

        url = f"{sandbox_url}/track/v1/trackingnumbers"

        payload = {
                  "trackingInfo": [
                    {
                      "trackingNumberInfo": {
                        "trackingNumber": f"{tracking_number}"
                      }
                    }
                  ],
                  "includeDetailedScans": 1
                }


        headers = {
            'Content-Type': "application/json",
            'x-locale': "en_US",
            'Authorization': f'Bearer {authoriztion_key}'
        }

        print(f"\nEnpoint: {url}")
        print(f'\nPayload: {payload}')
        print(f'\nHeaders: {headers}')

        response = requests.post(url, data=payload, headers=headers)
        print(f'\nStatus: {response.status_code}')
        print(f'Response: {response.json()}')

If anyone is able to spot the error, let me know.

2

There are 2 best solutions below

0
Kaloyan Botev On

includeDetailedScans:Indicates if detailed scans are requested or not. Valid values are True, or False.
Did you try giving it a boolean value instead of an int?

0
Csaba Pistyur On

Use valid values for includeDetailedScans: True/ False. Then serialize the payload, and will be fine.

    authoriztion_key = get_oauth()

    url = f"{sandbox_url}/track/v1/trackingnumbers"

    headers = {
        'Content-Type': "application/json",
        'x-locale': "en_US",
        'Authorization': f'Bearer {authoriztion_key}'
    }

    payload = {
              "trackingInfo": [
                {
                  "trackingNumberInfo": {
                    "trackingNumber": f"{tracking_number}"
                  }
                }
              ],
              "includeDetailedScans": True
            }

    payload = json.dumps(payload)

    response = requests.post(url, data=payload, headers=headers)