I'm trying to build a REST API using Flask which returns value from Scipy's minimize function. I am able to get a result but I want to expose it in an API call and this code is erroring: import scipy.stats as sp from scipy.optimize import minimize from flask import Flask, g, Response from flask_restful import Resource, Api, reqparse import numpy as np app = Flask(__name__) api = Api(app) class Minimize(Resource): result = None def _calculate_probability(self, spread, std_dev): return sp.norm.sf(0.5, spread, scale=std_dev) def _calculate_mse(self, std_dev): spread_inputs = np.array(self.spreads) model_probabilities = self._calculate_probability(spread_inputs, std_dev) mse = np.sum((model_probabilities - self.expected_probabilities)**2) / len(spread_inputs) return mse def __init__(self, expected_probabilities, spreads, std_dev_guess): self.std_dev_guess = std_dev_guess self.spreads = spreads self.expected_probabilities = expected_probabilities def solve(self): self.result = minimize(self._calculate_mse, self.std_dev_guess, method='BFGS') def get(self): return {'data': self.result}, 200 api.add_resource(Minimize, '/minimize') I'm able to print an answer to the console: spreads = [10.5, 9.5, 10, 8.5] expected_probabilities = [0.8091, 0.7785, 0.7708, 0.7692] minimizer = Minimize(expected_probabilities, spreads, 12.0) minimizer.solve() print(minimizer.get()) I get this: probability-calculator_1 | ({'data': fun: 0.00018173060393236452 probability-calculator_1 | hess_inv: array([[1381.37379663]]) probability-calculator_1 | jac: array([-1.56055103e-06]) probability-calculator_1 | message: 'Optimization terminated successfully.' probability-calculator_1 | nfev: 24 probability-calculator_1 | nit: 3 probability-calculator_1 | njev: 8 probability-calculator_1 | status: 0 probability-calculator_1 | success: True probability-calculator_1 | x: array([11.70822653])}, 200) But, when I do a GET request to localhost:5000/minimize, this is the error response: TypeError: __init__() missing 3 required positional arguments: 'expected_probabilities', 'spreads', and 'std_dev_guess' How do I define the API call so it returns the printed answer? EDIT: So I have added another class to try and get a response to a POST request. class MinimisedError(Resource): def post(self): parser = reqparse.RequestParser() parser.add_argument('spread_inputs', action='append', required=True) parser.add_argument('expected_probabilities', action='append', required=True) parser.add_argument('std_dev', required=True) args = parser.parse_args() minimizer = Minimize(args.spread_inputs, args.expected_probabilities, float(args.std_dev)) minimizer.solve() return {minimizer.get()}, 200 api.add_resource(MinimisedError, '/minimize') When I try a POST with body { "expected_probabilities":[0.8091, 0.7785, 0.7708, 0.7692], "spread_inputs":[10.5, 9.5, 10, 8.5], "std_dev":12.0 } I get this response: numpy.core._exceptions.UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U32'), dtype('<U32')) -> dtype('<U32') Continue reading...