Can't use webAPI to do a simple LED blink

Something like this (untested)

#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

WiFiMulti WiFiMulti;

#include <ArduinoJson.h>

const int ledPin =  22;      // the number of the LED pin
bool shouldBlink;

unsigned long previousMillis = 0;        // will store last time LED was updated
const unsigned long WaitTime = 10000;

// set Wi-Fi SSID and password
const char *ssid = "xxxxxx";
const char *password = "xxxxxx";

// set location and API key
String Location = "Berlin";
String API_Key = "c66687d91d685f5ecdda000xxxxxx";


void setup()
{
  Serial.begin(115200);
  delay(200);
  pinMode(ledPin, OUTPUT);

  WiFiMulti.addAP(ssid, password);
  Serial.print("Connecting.");
}


void loop()
{
  unsigned long currentMillis = millis();

  if ((currentMillis - previousMillis) >= WaitTime) {  // wait for WiFi connection
    fetchInfo();
    previousMillis = currentMillis;
  }

  if ( shouldBlink ) {
    blinkLED();
  }
  else {
    digitalWrite(ledPin, HIGH);    // off
  }
}

void blinkLED() {
  const unsigned long OnTime = 250;           // milliseconds of on-time
  const unsigned long OffTime = 750;          // milliseconds of off-time

  static int ledState = HIGH;
  static unsigned long duration = OnTime;
  static unsigned long lastTime;

  if ( millis() - lastTime < duration ) {
    return;
  }
  lastTime = millis();
  if ( ledState == LOW ) {
    ledState = HIGH;  // Turn it off
    duration = OffTime;
  }
  else {
    ledState = LOW;  // turn it on
    duration = OnTime;
  }
  digitalWrite(ledPin, ledState);    // Update the actual LED
}


void fetchInfo() {
  if ((WiFiMulti.run() != WL_CONNECTED)) {
    Serial.println(F("Not Connected"));
    return;
  }
  
  WiFiClient client;
  HTTPClient http;
  String payload;

  Serial.print("[HTTP] begin...\n");
  if (!http.begin(client, "http://api.openweathermap.org/data/2.5/weather?q=" + Location + "&APPID=" + API_Key)) {
    Serial.println("[HTTP] .begin() failed");
    return;
  }

  Serial.print("[HTTP] GET...\n");
  int httpCode = http.GET();

  // httpCode will be negative on error
  if (httpCode < 0)  {
    Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    return;
  }
  Serial.printf("[HTTP] GET... code: %d\n", httpCode);
  if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
    payload = http.getString();
    Serial.println(payload);
  }

  /*
     {"coord":{"lon":77.75,"lat":20.9333},
     "weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],
     "base":"stations","main":{"temp":301.45,"feels_like":303.3,"temp_min":301.45,
     "temp_max":301.45,"pressure":1004,"humidity":62,"sea_level":1004,"grnd_level":966},
     "visibility":10000,"wind":{"speed":3.14,"deg":293,"gust":7.39},"clouds":{"all":94},
     "dt":1628958953,"sys":{"country":"IN","sunrise":1628900858,"sunset":1628947200},
     "timezone":19800,"id":1278718,"name":"Amrāvati","cod":200}
  */

  StaticJsonDocument<1024> doc;

  DeserializationError error = deserializeJson(doc, payload);

  if (error) {
    Serial.print(F("deserializeJson() failed: "));
    Serial.println(error.f_str());
    return;
  }

  JsonObject main = doc["main"];
  float main_temp = main["temp"]; // 301.45
  float main_pressure = main["pressure"]; // 1004
  int main_humidity = main["humidity"]; // 62
  JsonObject wind = doc["wind"];
  float wind_speed = wind["speed"]; // 3.14
  int wind_deg = wind["deg"]; // 293

  // print data
  Serial.printf("Temperature = %.2f°C\r\n", main_temp);
  Serial.printf("Humidity = %d %%\r\n", main_humidity);
  Serial.printf("Pressure = %.3f bar\r\n", main_pressure);
  Serial.printf("Wind speed = %.1f m/s\r\n", wind_speed);
  Serial.printf("Wind degree = %d°\r\n\r\n", wind_deg);

  if ( main_temp >= 200.0 ) {
    shouldBlink = true;
  }
  else {
    shouldBlink = false;
  }

  http.end(); //Close connection
}