diff --git a/tda/client.py b/tda/client.py
index b1dbc79..31e82ec 100644
--- a/tda/client.py
+++ b/tda/client.py
@@ -437,6 +437,9 @@ class Client(EnumEnforcer):
         projection = self.convert_enum(
             projection, self.Instrument.Projection)
 
+        if isinstance(symbols, str):
+            symbols = [symbols]
+
         params = {
             'apikey': self.api_key,
             'symbol': ','.join(symbols),
@@ -856,6 +859,9 @@ class Client(EnumEnforcer):
         `Official documentation
         <https://developer.tdameritrade.com/quotes/apis/get/marketdata/
         quotes>`__.'''
+        if isinstance(symbols, str):
+            symbols = [symbols]
+
         params = {
             'apikey': self.api_key,
             'symbol': ','.join(symbols)
@@ -956,6 +962,9 @@ class Client(EnumEnforcer):
         `Official documentation
         <https://developer.tdameritrade.com/user-principal/apis/get/
         userprincipals/streamersubscriptionkeys-0>`__.'''
+        if isinstance(account_ids, int) or isinstance(account_ids, str):
+            account_ids = [account_ids]
+
         params = {
             'apikey': self.api_key,
             'accountIds': ','.join(str(i) for i in account_ids)
diff --git a/tda/utils.py b/tda/utils.py
index 152ae10..55f7473 100644
--- a/tda/utils.py
+++ b/tda/utils.py
@@ -32,6 +32,9 @@ class EnumEnforcer:
         if iterable is None:
             return None
 
+        if isinstance(iterable, required_enum_type):
+            return [iterable.value]
+
         values = []
         for value in iterable:
             if isinstance(value, required_enum_type):

diff --git a/tests/client_test.py b/tests/client_test.py
index 73f0fe6..842ad1f 100644
--- a/tests/client_test.py
+++ b/tests/client_test.py
@@ -210,6 +210,18 @@ class TestClient(unittest.TestCase):
                 'status': 'FILLED,EXPIRED'
             })
 
+    @no_duplicates
+    @patch('tda.client.datetime.datetime', mockdatetime)
+    def test_get_orders_by_path_statuses_scalar(self):
+        self.client.get_orders_by_path(
+            ACCOUNT_ID, statuses=Client.Order.Status.FILLED)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts/{accountId}/orders'), params={
+                'fromEnteredTime': MIN_ISO,
+                'toEnteredTime': NOW_DATETIME_ISO,
+                'status': 'FILLED'
+            })
+
     @no_duplicates
     @patch('tda.client.datetime.datetime', mockdatetime)
     def test_get_orders_by_path_statuses_unchecked(self):
@@ -313,6 +325,17 @@ class TestClient(unittest.TestCase):
                 'status': 'FILLED,EXPIRED'
             })
 
+    @no_duplicates
+    @patch('tda.client.datetime.datetime', mockdatetime)
+    def test_get_orders_by_query_statuses_scalar(self):
+        self.client.get_orders_by_query(statuses=Client.Order.Status.FILLED)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/orders'), params={
+                'fromEnteredTime': MIN_ISO,
+                'toEnteredTime': NOW_DATETIME_ISO,
+                'status': 'FILLED'
+            })
+
     @no_duplicates
     @patch('tda.client.datetime.datetime', mockdatetime)
     def test_get_orders_by_query_statuses_unchecked(self):
@@ -467,6 +490,14 @@ class TestClient(unittest.TestCase):
             self.make_url('/v1/accounts/{accountId}'),
             params={'fields': 'positions,orders'})
 
+    @no_duplicates
+    def test_get_account_fields_scalar(self):
+        self.client.get_account(
+                ACCOUNT_ID, fields=Client.Account.Fields.POSITIONS)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts/{accountId}'),
+            params={'fields': 'positions'})
+
     @no_duplicates
     def test_get_account_fields_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -492,6 +523,13 @@ class TestClient(unittest.TestCase):
             self.make_url('/v1/accounts'),
             params={'fields': 'positions,orders'})
 
+    @no_duplicates
+    def test_get_accounts_fields_scalar(self):
+        self.client.get_accounts(fields=Client.Account.Fields.POSITIONS)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/accounts'),
+            params={'fields': 'positions'})
+
     @no_duplicates
     def test_get_accounts_fields_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -512,6 +550,16 @@ class TestClient(unittest.TestCase):
                 'symbol': 'AAPL,MSFT',
                 'projection': 'fundamental'})
 
+    @no_duplicates
+    def test_search_instruments_one_instrument(self):
+        self.client.search_instruments(
+            'AAPL', Client.Instrument.Projection.FUNDAMENTAL)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/instruments'), params={
+                'apikey': API_KEY,
+                'symbol': 'AAPL',
+                'projection': 'fundamental'})
+
     @no_duplicates
     def test_search_instruments_unchecked(self):
         self.client.set_enforce_enums(False)
@@ -550,6 +598,16 @@ class TestClient(unittest.TestCase):
                 'markets': 'EQUITY,BOND',
                 'date': NOW_DATE_ISO})
 
+    @no_duplicates
+    def test_get_hours_for_multiple_markets_single_market(self):
+        self.client.get_hours_for_multiple_markets(
+                Client.Markets.EQUITY, NOW_DATETIME)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/marketdata/hours'), params={
+                'apikey': API_KEY,
+                'markets': 'EQUITY',
+                'date': NOW_DATE_ISO})
+
     @no_duplicates
     def test_get_hours_for_multiple_markets_date(self):
         self.client.get_hours_for_multiple_markets([
@@ -568,8 +626,8 @@ class TestClient(unittest.TestCase):
                 Client.Markets.EQUITY,
                 Client.Markets.BOND], '2020-01-01')
         self.assertEqual(str(cm.exception),
-                         "expected type in (datetime.date, datetime.datetime) for " +
-                         "date, got 'builtins.str'")
+                         "expected type in (datetime.date, datetime.datetime) "
+                         "for date, got 'builtins.str'")
 
     @no_duplicates
     def test_get_hours_for_multiple_markets_unchecked(self):
@@ -1020,6 +1078,14 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'symbol': 'AAPL,MSFT'})
 
+    @no_duplicates
+    def test_get_quotes_single_symbol(self):
+        self.client.get_quotes('AAPL')
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/marketdata/quotes'), params={
+                'apikey': API_KEY,
+                'symbol': 'AAPL'})
+
     # get_transaction
 
     @no_duplicates
@@ -1156,6 +1222,15 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'accountIds': '1000,2000,3000'})
 
+    @no_duplicates
+    def test_get_streamer_subscription_keys_one_account_id(self):
+        self.client.get_streamer_subscription_keys(1000)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/userprincipals/streamersubscriptionkeys'),
+            params={
+                'apikey': API_KEY,
+                'accountIds': '1000'})
+
     @no_duplicates
     def test_get_streamer_subscription_keys_str(self):
         self.client.get_streamer_subscription_keys(['1000', '2000', '3000'])
@@ -1185,6 +1260,15 @@ class TestClient(unittest.TestCase):
                 'apikey': API_KEY,
                 'fields': 'streamerSubscriptionKeys,preferences'})
 
+    @no_duplicates
+    def test_get_user_principals_one_field(self):
+        self.client.get_user_principals(
+            fields=Client.UserPrincipals.Fields.PREFERENCES)
+        self.mock_session.get.assert_called_once_with(
+            self.make_url('/v1/userprincipals'), params={
+                'apikey': API_KEY,
+                'fields': 'preferences'})
+
     @no_duplicates
     def test_get_user_principals_fields_unchecked(self):
         self.client.set_enforce_enums(False)

Functions expecting arrays should tolerate single scalar values
Provided they are of the right type. 
tests/client_test.py::TestClient::test_get_account_fields_scalar tests/client_test.py::TestClient::test_get_accounts_fields_scalar tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_single_market tests/client_test.py::TestClient::test_get_orders_by_path_statuses_scalar tests/client_test.py::TestClient::test_get_orders_by_query_statuses_scalar tests/client_test.py::TestClient::test_get_quotes_single_symbol tests/client_test.py::TestClient::test_get_streamer_subscription_keys_one_account_id tests/client_test.py::TestClient::test_get_user_principals_one_field tests/client_test.py::TestClient::test_search_instruments_one_instrument
tests/client_test.py::TestClient::test_cancel_order tests/client_test.py::TestClient::test_cancel_order_str tests/client_test.py::TestClient::test_create_saved_order tests/client_test.py::TestClient::test_create_saved_order_str tests/client_test.py::TestClient::test_create_watchlist tests/client_test.py::TestClient::test_create_watchlist_str tests/client_test.py::TestClient::test_delete_saved_order tests/client_test.py::TestClient::test_delete_saved_order_str tests/client_test.py::TestClient::test_delete_watchlist tests/client_test.py::TestClient::test_delete_watchlist_str tests/client_test.py::TestClient::test_get_account tests/client_test.py::TestClient::test_get_account_fields tests/client_test.py::TestClient::test_get_account_fields_unchecked tests/client_test.py::TestClient::test_get_account_str tests/client_test.py::TestClient::test_get_accounts tests/client_test.py::TestClient::test_get_accounts_fields tests/client_test.py::TestClient::test_get_accounts_fields_unchecked tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_date tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_datetime tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_str tests/client_test.py::TestClient::test_get_hours_for_multiple_markets_unchecked tests/client_test.py::TestClient::test_get_hours_for_single_market_date tests/client_test.py::TestClient::test_get_hours_for_single_market_datetime tests/client_test.py::TestClient::test_get_hours_for_single_market_str tests/client_test.py::TestClient::test_get_hours_for_single_market_unchecked tests/client_test.py::TestClient::test_get_instrument tests/client_test.py::TestClient::test_get_instrument_cusip_must_be_string tests/client_test.py::TestClient::test_get_movers tests/client_test.py::TestClient::test_get_movers_unchecked tests/client_test.py::TestClient::test_get_option_chain_contract_type tests/client_test.py::TestClient::test_get_option_chain_contract_type_unchecked tests/client_test.py::TestClient::test_get_option_chain_days_to_expiration tests/client_test.py::TestClient::test_get_option_chain_exp_month tests/client_test.py::TestClient::test_get_option_chain_exp_month_unchecked tests/client_test.py::TestClient::test_get_option_chain_from_date_date tests/client_test.py::TestClient::test_get_option_chain_from_date_datetime tests/client_test.py::TestClient::test_get_option_chain_from_date_str tests/client_test.py::TestClient::test_get_option_chain_include_quotes tests/client_test.py::TestClient::test_get_option_chain_interest_rate tests/client_test.py::TestClient::test_get_option_chain_interval tests/client_test.py::TestClient::test_get_option_chain_option_type tests/client_test.py::TestClient::test_get_option_chain_option_type_unchecked tests/client_test.py::TestClient::test_get_option_chain_strategy tests/client_test.py::TestClient::test_get_option_chain_strategy_unchecked tests/client_test.py::TestClient::test_get_option_chain_strike tests/client_test.py::TestClient::test_get_option_chain_strike_count tests/client_test.py::TestClient::test_get_option_chain_strike_range tests/client_test.py::TestClient::test_get_option_chain_strike_range_unchecked tests/client_test.py::TestClient::test_get_option_chain_to_date_date tests/client_test.py::TestClient::test_get_option_chain_to_date_datetime tests/client_test.py::TestClient::test_get_option_chain_to_date_str tests/client_test.py::TestClient::test_get_option_chain_underlying_price tests/client_test.py::TestClient::test_get_option_chain_vanilla tests/client_test.py::TestClient::test_get_option_chain_volatility tests/client_test.py::TestClient::test_get_order tests/client_test.py::TestClient::test_get_order_str tests/client_test.py::TestClient::test_get_orders_by_path_from_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_path_from_not_datetime tests/client_test.py::TestClient::test_get_orders_by_path_max_results tests/client_test.py::TestClient::test_get_orders_by_path_status tests/client_test.py::TestClient::test_get_orders_by_path_status_and_statuses tests/client_test.py::TestClient::test_get_orders_by_path_status_unchecked tests/client_test.py::TestClient::test_get_orders_by_path_statuses tests/client_test.py::TestClient::test_get_orders_by_path_statuses_unchecked tests/client_test.py::TestClient::test_get_orders_by_path_to_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_path_to_not_datetime tests/client_test.py::TestClient::test_get_orders_by_path_vanilla tests/client_test.py::TestClient::test_get_orders_by_path_vanilla_str tests/client_test.py::TestClient::test_get_orders_by_query_from_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_query_max_results tests/client_test.py::TestClient::test_get_orders_by_query_status tests/client_test.py::TestClient::test_get_orders_by_query_status_and_statuses tests/client_test.py::TestClient::test_get_orders_by_query_status_unchecked tests/client_test.py::TestClient::test_get_orders_by_query_statuses tests/client_test.py::TestClient::test_get_orders_by_query_statuses_unchecked tests/client_test.py::TestClient::test_get_orders_by_query_to_entered_datetime tests/client_test.py::TestClient::test_get_orders_by_query_vanilla tests/client_test.py::TestClient::test_get_preferences tests/client_test.py::TestClient::test_get_preferences_str tests/client_test.py::TestClient::test_get_price_history_end_datetime tests/client_test.py::TestClient::test_get_price_history_end_datetime_str tests/client_test.py::TestClient::test_get_price_history_frequency tests/client_test.py::TestClient::test_get_price_history_frequency_type tests/client_test.py::TestClient::test_get_price_history_frequency_type_unchecked tests/client_test.py::TestClient::test_get_price_history_frequency_unchecked tests/client_test.py::TestClient::test_get_price_history_need_extended_hours_data tests/client_test.py::TestClient::test_get_price_history_num_periods tests/client_test.py::TestClient::test_get_price_history_num_periods_unchecked tests/client_test.py::TestClient::test_get_price_history_period_type tests/client_test.py::TestClient::test_get_price_history_period_type_unchecked tests/client_test.py::TestClient::test_get_price_history_start_datetime tests/client_test.py::TestClient::test_get_price_history_start_datetime_str tests/client_test.py::TestClient::test_get_price_history_vanilla tests/client_test.py::TestClient::test_get_quote tests/client_test.py::TestClient::test_get_quotes tests/client_test.py::TestClient::test_get_saved_order tests/client_test.py::TestClient::test_get_saved_order_str tests/client_test.py::TestClient::test_get_saved_orders_by_path tests/client_test.py::TestClient::test_get_saved_orders_by_path_str tests/client_test.py::TestClient::test_get_streamer_subscription_keys tests/client_test.py::TestClient::test_get_streamer_subscription_keys_str tests/client_test.py::TestClient::test_get_transaction tests/client_test.py::TestClient::test_get_transaction_str tests/client_test.py::TestClient::test_get_transactions tests/client_test.py::TestClient::test_get_transactions_end_date tests/client_test.py::TestClient::test_get_transactions_end_date_datetime tests/client_test.py::TestClient::test_get_transactions_end_date_str tests/client_test.py::TestClient::test_get_transactions_start_date_date tests/client_test.py::TestClient::test_get_transactions_start_date_datetime tests/client_test.py::TestClient::test_get_transactions_start_date_str tests/client_test.py::TestClient::test_get_transactions_str tests/client_test.py::TestClient::test_get_transactions_symbol tests/client_test.py::TestClient::test_get_transactions_type tests/client_test.py::TestClient::test_get_transactions_type_unchecked tests/client_test.py::TestClient::test_get_user_principals_fields tests/client_test.py::TestClient::test_get_user_principals_fields_unchecked tests/client_test.py::TestClient::test_get_user_principals_vanilla tests/client_test.py::TestClient::test_get_watchlist tests/client_test.py::TestClient::test_get_watchlist_str tests/client_test.py::TestClient::test_get_watchlists_for_multiple_accounts tests/client_test.py::TestClient::test_get_watchlists_for_single_account tests/client_test.py::TestClient::test_get_watchlists_for_single_account_str tests/client_test.py::TestClient::test_place_order tests/client_test.py::TestClient::test_place_order_str tests/client_test.py::TestClient::test_replace_order tests/client_test.py::TestClient::test_replace_order_str tests/client_test.py::TestClient::test_replace_saved_order tests/client_test.py::TestClient::test_replace_saved_order_str tests/client_test.py::TestClient::test_replace_watchlist tests/client_test.py::TestClient::test_replace_watchlist_str tests/client_test.py::TestClient::test_search_instruments tests/client_test.py::TestClient::test_search_instruments_unchecked tests/client_test.py::TestClient::test_update_preferences tests/client_test.py::TestClient::test_update_preferences_str tests/client_test.py::TestClient::test_update_watchlist tests/client_test.py::TestClient::test_update_watchlist_str