You have to use the OnInitReportOptions
method to change the datasource dynamically in the web API controller. Please follow these steps,
[NonAction]
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
string connectionString = "Data Source = <instancename>; Initial Catalog = <database>; User ID = <username>; Password = <password>";
DataSourceCredentials.Name = "AdventureWorks";
DataSourceCredentials.ConnectionString = connectionString;
reportOption.ReportModel.DataSourceCredentials = new List<DataSourceCredentials> { DataSourceCredentials };
}
You can find the following help documentation for how to change data sources based on the application parameters in various platforms.