docs: def multi(data, datatype, apis, accepted_apis, batch=False,**kwargs):
      """
      Helper to make multi requests of different types.
  
      :param data: Data to be sent in API request
      :param datatype: String type of API request
      :param apis: List of apis to use.
      :param batch: Is this a batch request?
      :rtype: Dictionary of api responses
      """
      # Client side api name checking - strictly only accept func name api
      invalid_apis = [api for api in apis if api not in accepted_apis or api in MULTIAPI_NOT_SUPPORTED]
      if invalid_apis:
          raise IndicoError(
              "The following are not valid %s APIs: %s. Please reference the available APIs below:\n%s"
              % (datatype, ", ".join(invalid_apis),  ", ".join(accepted_apis.keys()))
          )
  
      # Convert client api names to server names before sending request
      cloud = kwargs.pop("cloud", None)
      api_key = kwargs.pop('api_key', None)
  
      api_results_executor = {}
      for api in apis:
          api_results_executor[EXECUTOR.submit(accepted_apis[api], data, cloud=cloud, api_key=api_key, batch=batch, **kwargs)] = api
  
      api_results = {}
      for future in concurrent.futures.as_completed(api_results_executor):
          api_results[api_results_executor[future]] = future.result()
  
      return api_results