summaryrefslogtreecommitdiffstats
path: root/website/content/platform/getting_started/api_requests.mdx
diff options
context:
space:
mode:
Diffstat (limited to 'website/content/platform/getting_started/api_requests.mdx')
-rw-r--r--website/content/platform/getting_started/api_requests.mdx95
1 files changed, 95 insertions, 0 deletions
diff --git a/website/content/platform/getting_started/api_requests.mdx b/website/content/platform/getting_started/api_requests.mdx
new file mode 100644
index 00000000000..487b46dc8a0
--- /dev/null
+++ b/website/content/platform/getting_started/api_requests.mdx
@@ -0,0 +1,95 @@
+---
+title: REST API Requests
+sidebar_position: 8
+description: How to send requests to the OpenBB Platform REST API.
+keywords:
+- tutorial
+- OpenBB Platform
+- Python client
+- Fast API
+- getting started
+- requests
+- data providers
+---
+
+
+Most REST API endpoints are for data retrieval and are defined as `GET` requests, but some [toolkit extensions](/platform/user_guides/extensions) require data to pass through the function. In these instances, it must be a `POST` request.
+
+### Example
+
+This example will use a GET request to fetch daily VIX data from the Cboe data extension, and then make a POST request which passes through the data to a technical analysis function.
+
+First, start a development server.
+
+```bash
+uvicorn openbb_core.api.rest_api:app --reload
+```
+
+This example will use Python and the `requests` library.
+
+#### Fetch Some Data
+
+```python
+import requests
+
+get_url = "http://127.0.0.1:8000/api/v1/index/price/historical?provider=cboe&symbol=vix&interval=1d"
+get_response = requests.get(get_url)
+data_results = get_response.json()["results"]
+
+data_results[-1]
+```
+
+```json
+{'date': '2023-11-17T00:00:00',
+ 'open': 14.18,
+ 'high': 14.19,
+ 'low': 13.67,
+ 'close': 13.79,
+ 'volume': 0,
+ 'calls_volume': None,
+ 'puts_volume': None,
+ 'total_options_volume': None}
+```
+
+#### Send a POST Request
+
+Next, pass the `data_results` to a function, using the `json` field in the POST headers.
+
+For this example, realized volatility cones, the default parameters assume the time series data is daily and that volatility should be annualized over 252 trading days.
+
+```python
+import pandas as pd
+
+post_url = "http://localhost:8000/api/v1/technical/cones"
+post_response = requests.post(post_url, json=data_results)
+ta_results = post_response.json()["results"]
+
+pd.DataFrame.from_records(ta_results).head()
+```
+
+| window | realized | min | lower_25% | median | upper_75% | max |
+|---------:|-----------:|-----------:|------------:|---------:|------------:|--------:|
+| 3 | 0.396165 | 0.00701638 | 0.444709 | 0.72414 | 1.11563 | 8.47636 |
+| 10 | 0.623199 | 0.190188 | 0.665584 | 0.852915 | 1.15491 | 4.83264 |
+| 30 | 0.988435 | 0.332913 | 0.750007 | 0.921482 | 1.17072 | 2.98404 |
+| 60 | 0.932594 | 0.47639 | 0.792548 | 0.964617 | 1.20171 | 2.35563 |
+| 90 | 0.915137 | 0.551011 | 0.815229 | 0.965553 | 1.2128 | 2.04104 |
+
+The output from the Fast API is a serialized version of this object, and these methods are lost on conversion. OBBject can be reconstructed to recover the helpers by importing the model and validating the data.
+
+```python
+import requests
+from openbb_core.app.model.obbject import OBBject
+
+data = []
+symbol="SPY"
+url = f"http://127.0.0.1:8000/api/v1/equity/price/historical?provider=polygon&symbol={symbol}"
+headers = {"accept": "application/json"}
+
+response = requests.get(url, headers=headers, timeout=3)
+
+if response.status_code == 200:
+ data = OBBject.model_validate(response.json())
+
+data.to_df()
+```