# redivis.make\_api\_request

### **redivis.**<mark style="color:purple;">**make\_api\_request**</mark>**(*****\*, method, path, query, payload, ...*****)** → **Dict | None |** [**requests.Response**](https://requests.readthedocs.io/en/latest/api/#requests.Response)

Initiates an authenticated HTTP request to the [Redivis API](https://docs.redivis.com/api/rest-api).&#x20;

If `parse_response=True` (the default) the result will be a `dict` corresponding to the API endpoint's JSON response, or `None` if the response is empty. Otherwise, returns a [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) object.

{% hint style="warning" %}
In most cases, you should use the various other methods in the redivis python library, rather than interfacing with the API directly, as these methods are far more user-friendly and cover the vast majority of the REST API.

However, in certain advanced cases, it may make sense to call API endpoint directly through this method.
{% endhint %}

### **Parameters:**

**`method` :&#x20;*****str {"GET"*****&#x20;|&#x20;*****"POST" | "PATCH" | "PUT" | "HEAD" | "DELETE" }, default "GET"***\
The HTTP method of the request. Defaults to "GET"

**`path` :&#x20;*****str, default ""***\
The API path, including the leading forward slash. E.g.: `"/organizations/demo/datasets"`

**`query` :&#x20;*****dict***\
An optional dictionary of query parameters to add to the path

**`payload` :&#x20;*****dict | any***\
An optional payload to include with the request. If provided and `parse_payload=True` , must be a dictionary that will be converted to a JSON string. If `parse_payload=False` , the contents will be sent up as the raw request body.

**`parse_response` :&#x20;*****bool, default True***\
Whether to parse the API response into a dict. Typically should be set to True, unless the API endpoint doesn't return JSON.

**`parse_payload` :&#x20;*****bool, default True***\
Whether to convert the provided dictionary payload into a JSON string to send to the API. Most endpoints that accept a payload in the body expect a JSON payload.

**`headers` :&#x20;*****dict***\
An optional dictionary of additional headers to include in the request. Note that authentication is already handled, and there is no need to provide API credentials in the headers when using this method.

**`stream` :&#x20;*****bool, default False***\
For advanced use cases. If True, the response will be read as a stream; in this scenario, `parse_response` must be set to False.

### **Returns:**

Dict | None | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) &#x20;

### Examples

```python
import redivis

# Calls the dataset.list endpoint
# See the REST API documentation for details on the response schema for each endpoint
json_response = redivis.make_api_request(
    method="GET", 
    path="/organizations/demo/datasets", 
    query={"maxResults": "10"}
)
```
