I suggest you to write the api calls in a factory, and call that service in the controller, in which you need the data. You can call the same service in multiple controllers also.
As per my understanding, i hope this is your requirement. If not, please let me know, i will try my best.
You can refer to the plunkr code 
http://plnkr.co/edit/G9MkVMSQ4VjMw8g2svkT?p=preview
angular.module('mainModule', [])
.factory('apiCallService', ['$http', '$q', '$log',
    function ($http, $q, $log) {
        var instance = {};
        var config = null;
        instance.apiCallToServer = function (config) {
            var deferred = $q.defer();
            $http(config)
                .success(function (data, status, header, config) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };
        return instance;
    }])
    .controller('FirstCtrl', ["$scope", "$log", "$location", "apiCallService",
    function ($scope, $log, $location,  apiCallService) {
      var config = {
                method: "get",
                url: "/path"
            };
            $scope.successCallback = function (data) {
                $log.log("success.");
                $scope.data = data;
                //data will be stored in '$scope.data'.
            };
            $scope.failureCallback = function (status) {
                $log.log("Error");
            };
            apiCallService
                .apiCallToServer(config)
                .then($scope.successCallback, $scope.failureCallback);
    }]);