diff --git a/docs/c-api/http.h/items.json b/docs/c-api/http.h/items.json
index 037e457b33db00ce2c8a2e3217db566238a3bc07..01032204bbdc8b75c7f0b1103b28b3df27516169 100644
--- a/docs/c-api/http.h/items.json
+++ b/docs/c-api/http.h/items.json
@@ -16,10 +16,6 @@
             "type": "markdown",
             "name": "mg_send_websocket_handshake2.md"
         },
-        {
-            "type": "markdown",
-            "name": "mg_connect_ws.md"
-        },
         {
             "type": "markdown",
             "name": "mg_send_websocket_frame.md"
@@ -80,10 +76,6 @@
             "type": "markdown",
             "name": "mg_http_create_digest_auth_header.md"
         },
-        {
-            "type": "markdown",
-            "name": "mg_connect_http.md"
-        },
         {
             "type": "markdown",
             "name": "mg_serve_http.md"
diff --git a/docs/c-api/http.h/mg_connect_http.md b/docs/c-api/http.h/mg_connect_http.md
deleted file mode 100644
index b897be0ce903f9ac554117935c8dcc080554d71d..0000000000000000000000000000000000000000
--- a/docs/c-api/http.h/mg_connect_http.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "mg_connect_http()"
-decl_name: "mg_connect_http"
-symbol_kind: "func"
-signature: |
-  struct mg_connection *mg_connect_http(struct mg_mgr *mgr,
-                                        mg_event_handler_t event_handler,
-                                        const char *url,
-                                        const char *extra_headers,
-                                        const char *post_data);
----
-
-Helper function that creates outbound HTTP connection.
-
-`url` is a URL to fetch. It must be properly URL-encoded, e.g. have
-no spaces, etc. By default, `mg_connect_http()` sends Connection and
-Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
-`"User-Agent: my-app\r\n"`.
-If `post_data` is NULL, then GET request is created. Otherwise, POST request
-is created with the specified POST data. Note that if the data being posted
-is a form submission, the `Content-Type` header should be set accordingly
-(see example below).
-
-Examples:
-
-```c
-  nc1 = mg_connect_http(mgr, ev_handler_1, "http://www.google.com", NULL,
-                        NULL);
-  nc2 = mg_connect_http(mgr, ev_handler_1, "https://github.com", NULL, NULL);
-  nc3 = mg_connect_http(
-      mgr, ev_handler_1, "my_server:8000/form_submit/",
-      "Content-Type: application/x-www-form-urlencoded\r\n",
-      "var_1=value_1&var_2=value_2");
-``` 
-
diff --git a/docs/c-api/http.h/mg_connect_ws.md b/docs/c-api/http.h/mg_connect_ws.md
deleted file mode 100644
index 417279c86129e797f733aebe18d7dd1b69d4d00e..0000000000000000000000000000000000000000
--- a/docs/c-api/http.h/mg_connect_ws.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: "mg_connect_ws()"
-decl_name: "mg_connect_ws"
-symbol_kind: "func"
-signature: |
-  struct mg_connection *mg_connect_ws(struct mg_mgr *mgr,
-                                      mg_event_handler_t event_handler,
-                                      const char *url, const char *protocol,
-                                      const char *extra_headers);
----
-
-Helper function that creates an outbound WebSocket connection.
-
-`url` is a URL to connect to. It must be properly URL-encoded, e.g. have
-no spaces, etc. By default, `mg_connect_ws()` sends Connection and
-Host headers. `extra_headers` is an extra HTTP headers to send, e.g.
-`"User-Agent: my-app\r\n"`.
-If `protocol` is not NULL, then a `Sec-WebSocket-Protocol` header is sent.
-
-Examples:
-
-```c
-  nc1 = mg_connect_ws(mgr, ev_handler_1, "ws://echo.websocket.org", NULL,
-                      NULL);
-  nc2 = mg_connect_ws(mgr, ev_handler_1, "wss://echo.websocket.org", NULL,
-                      NULL);
-  nc3 = mg_connect_ws(mgr, ev_handler_1, "ws://api.cesanta.com",
-                      "clubby.cesanta.com", NULL);
-``` 
-
diff --git a/mongoose.h b/mongoose.h
index f357a25fe02b4e06298b35622415a8f00124b8cd..1b0f3dcad1bd0f72c39b9e135c1dee478cce3737 100644
--- a/mongoose.h
+++ b/mongoose.h
@@ -2147,11 +2147,25 @@ void mg_send_websocket_handshake2(struct mg_connection *nc, const char *path,
  *                       "clubby.cesanta.com", NULL);
  * ```
  */
+
 struct mg_connection *mg_connect_ws(struct mg_mgr *mgr,
                                     mg_event_handler_t event_handler,
                                     const char *url, const char *protocol,
                                     const char *extra_headers);
 
+/*
+ * Helper function that creates an outbound WebSocket connection
+ *
+ * Mostly identical to mg_connect_ws, but allows to provide extra parameters
+ * (for example, SSL parameters
+ */
+
+struct mg_connection *mg_connect_ws_opt(struct mg_mgr *mgr,
+                                        mg_event_handler_t ev_handler,
+                                        struct mg_connect_opts opts,
+                                        const char *url, const char *protocol,
+                                        const char *extra_headers);
+
 /*
  * Send websocket frame to the remote end.
  *
@@ -2405,12 +2419,26 @@ int mg_http_create_digest_auth_header(char *buf, size_t buf_len,
  *       "var_1=value_1&var_2=value_2");
  * ```
  */
+
 struct mg_connection *mg_connect_http(struct mg_mgr *mgr,
                                       mg_event_handler_t event_handler,
                                       const char *url,
                                       const char *extra_headers,
                                       const char *post_data);
 
+/*
+ * Helper function that creates outbound HTTP connection.
+ *
+ * Mostly identical to mg_connect_http, but allows to provide extra parameters
+ * (for example, SSL parameters
+ */
+
+struct mg_connection *mg_connect_http_opt(struct mg_mgr *mgr,
+                                          mg_event_handler_t ev_handler,
+                                          struct mg_connect_opts opts,
+                                          const char *url,
+                                          const char *extra_headers,
+                                          const char *post_data);
 /*
  * This structure defines how `mg_serve_http()` works.
  * Best practice is to set only required settings, and leave the rest as NULL.