Implementation:Mage ai Mage ai Client Make Request
| Knowledge Sources | |
|---|---|
| Domains | Data_Integration, HTTP, API |
| Last Updated | 2026-02-09 00:00 GMT |
Overview
Concrete tool for making rate-limited HTTP API requests with error handling provided by the Mage integrations HTTP client base class.
Description
Client.make_request sends HTTP requests using the requests library with rate limiting enforced by the @utils.ratelimit(100, 60) decorator. It resolves headers via get_headers() (overridden by subclasses for authentication), applies configurable timeouts, and raises structured exceptions based on HTTP status codes. The companion Client.__init__ stores config, logger, and api_result_limit for pagination.
Usage
Subclass Client and override get_headers() to add authentication. Call make_request from load_data implementations to fetch API pages.
Code Reference
Source Location
- Repository: mage-ai
- File: mage_integrations/mage_integrations/sources/http/client.py
- Lines: 140-179
Signature
class Client:
def __init__(self, config: dict, logger=None, api_result_limit: int = 100):
"""Initialize HTTP client.
Args:
config: Connector config with API credentials.
logger: Optional logger override.
api_result_limit: Page size for pagination (default 100).
"""
def get_headers(self) -> dict:
"""Return request headers. Override for authentication."""
@utils.ratelimit(100, 60)
def make_request(
self,
url: str,
method: str = 'get',
params: dict = None,
body: dict = None,
) -> Dict:
"""Make rate-limited HTTP request.
Args:
url: API endpoint URL.
method: HTTP method (default 'get').
params: Query parameters.
body: JSON request body.
Returns:
Parsed JSON response dict.
"""
Import
from mage_integrations.sources.http.client import Client
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| url | str | Yes | API endpoint URL |
| method | str | No | HTTP method (default 'get') |
| params | dict | No | Query parameters |
| body | dict | No | JSON request body |
Outputs
| Name | Type | Description |
|---|---|---|
| return | Dict | Parsed JSON response from the API |
Usage Examples
from mage_integrations.sources.http.client import Client
class ChargebeeClient(Client):
def __init__(self, config, **kwargs):
super().__init__(config, **kwargs)
self.api_key = config.get("api_key")
self.site = config.get("site")
def get_headers(self):
return {} # Chargebee uses Basic Auth instead
def make_request(self, url, method='get', params=None, body=None):
# Override to use Basic Auth
import requests
response = requests.get(
url,
auth=(self.api_key, ''),
params=params,
timeout=300,
)
return response.json()
# Usage
client = ChargebeeClient(config={"api_key": "test_key", "site": "mysite"})
data = client.make_request("https://mysite.chargebee.com/api/v2/customers")