diff --git a/metobsapi/data_api.py b/metobsapi/data_api.py
index fea067743233edcb24bcd6c728987763e2b13e06..52ca64a212d45757cbabfaf6f747a5ec89ec56f1 100644
--- a/metobsapi/data_api.py
+++ b/metobsapi/data_api.py
@@ -29,10 +29,6 @@ ROUNDING = {
 }
 
 
-def round_value(value, symbol):
-    return np.round(value, ROUNDING.get(symbol, 1))
-
-
 def handle_date(date):
     try:
         date_len = len(date)
@@ -68,7 +64,6 @@ def handle_symbols(symbols: list[str]):
 
         try:
             site, inst, s = symbol.split(".")
-            si = (site, inst)
         except ValueError:
             raise ValueError("Symbols must have 3 period-separated parts: {}".format(symbol))
 
@@ -83,10 +78,10 @@ def handle_symbols(symbols: list[str]):
         influx_symbols.setdefault((site, inst), []).append(influx_name)
 
     # Add the symbols needed to compute the wind_speed and wind_direction
-    for si in add_winds:
+    for site, inst in add_winds:
         influx_to_requested_symbols[f"{site}.{inst}.wind_east"] = None
         influx_to_requested_symbols[f"{site}.{inst}.wind_north"] = None
-        influx_symbols[si].extend(("wind_east", "wind_north"))
+        influx_symbols[(site, inst)].extend(("wind_east", "wind_north"))
 
     return influx_to_requested_symbols, influx_symbols
 
@@ -165,12 +160,6 @@ def calc_num_records(begin, end, interval):
     return diff / data_responses.INTERVALS[interval]
 
 
-def calc_file_size(num_records, num_streams):
-    """Get number of bytes returned for a text based format."""
-    # estimate about 7 bytes (overhead + data characters) per data point
-    return num_records * num_streams * 7.0
-
-
 def handle_csv(frame, epoch, sep=",", message="", code=200, status="success", **kwargs):
     output = """# status: {status}
 # code: {code:d}
diff --git a/metobsapi/tests/test_data_api.py b/metobsapi/tests/test_data_api.py
index 7e6f2ef22bb2bd6ad4e4271be0b85cf6f67bee2b..744a6efc96ae25167fe9485cc96889fee31044aa 100644
--- a/metobsapi/tests/test_data_api.py
+++ b/metobsapi/tests/test_data_api.py
@@ -234,6 +234,36 @@ class TestDataAPI:
         assert res["status"] == "error"
         assert "'symbols'" in res["message"]
 
+    def test_nonexistent_symbol(self, client):
+        res = client.get("/api/data.json?begin=-05:00:00&symbols=aoss.tower.air_temp:aoss.tower.noexist")
+        res = json.loads(res.data.decode())
+        assert res["code"] == 400
+        assert res["status"] == "error"
+        assert "Unknown symbol" in res["message"]
+
+    def test_bad_symbol_site_inst(self, client):
+        res = client.get("/api/data.json?begin=-05:00:00&symbols=aoss.tower.something.air_temp")
+        res = json.loads(res.data.decode())
+        assert res["code"] == 400
+        assert res["status"] == "error"
+        assert "3 period-separated parts" in res["message"]
+
+    def test_symbol_unknown_site_inst(self, client):
+        res = client.get("/api/data.json?begin=-05:00:00&symbols=aoss2.tower.air_temp")
+        res = json.loads(res.data.decode())
+        assert res["code"] == 400
+        assert res["status"] == "error"
+        assert "Unknown site/instrument" in res["message"]
+
+    def test_multiple_symbol(self, client):
+        res = client.get(
+            "/api/data.json?begin=-05:00:00&symbols=aoss.tower.air_temp:aoss.tower.wind_speed:aoss.tower.air_temp"
+        )
+        res = json.loads(res.data.decode())
+        assert res["code"] == 400
+        assert res["status"] == "error"
+        assert "multiple times" in res["message"]
+
     def test_too_many_points(self, client):
         res = client.get("/api/data.json?symbols=aoss.tower.air_temp&begin=1970-01-01T00:00:00")
         assert res.status_code == 413