diff --git a/src/ElectronNET.API/API/Cookies.cs b/src/ElectronNET.API/API/Cookies.cs
new file mode 100644
index 0000000..4959cd9
--- /dev/null
+++ b/src/ElectronNET.API/API/Cookies.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Threading.Tasks;
+using ElectronNET.API.Entities;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Newtonsoft.Json.Serialization;
+
+namespace ElectronNET.API
+{
+ ///
+ /// Query and modify a session's cookies.
+ ///
+ public class Cookies
+ {
+ ///
+ /// Gets the identifier.
+ ///
+ ///
+ /// The identifier.
+ ///
+ public int Id { get; private set; }
+
+ internal Cookies(int id)
+ {
+ Id = id;
+ }
+
+ ///
+ /// Emitted when a cookie is changed because it was added, edited, removed, or expired.
+ ///
+ public event Action OnChanged
+ {
+ add
+ {
+ if (_changed == null)
+ {
+ BridgeConnector.Socket.On("webContents-session-cookies-changed" + Id, (args) =>
+ {
+ Cookie cookie = ((JArray)args)[0].ToObject();
+ CookieChangedCause cause = ((JArray)args)[1].ToObject();
+ bool removed = ((JArray)args)[2].ToObject();
+ _changed(cookie, cause, removed);
+ });
+
+ BridgeConnector.Socket.Emit("register-webContents-session-cookies-changed", Id);
+ }
+ _changed += value;
+ }
+ remove
+ {
+ _changed -= value;
+
+ if (_changed == null)
+ BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id);
+ }
+ }
+
+ private event Action _changed;
+
+ private JsonSerializer _jsonSerializer = new JsonSerializer()
+ {
+ ContractResolver = new CamelCasePropertyNamesContractResolver(),
+ NullValueHandling = NullValueHandling.Ignore,
+ DefaultValueHandling = DefaultValueHandling.Ignore
+ };
+ }
+}
\ No newline at end of file
diff --git a/src/ElectronNET.API/API/WebRequest.cs b/src/ElectronNET.API/API/WebRequest.cs
new file mode 100644
index 0000000..3b55106
--- /dev/null
+++ b/src/ElectronNET.API/API/WebRequest.cs
@@ -0,0 +1,61 @@
+using Newtonsoft.Json.Linq;
+using System;
+
+namespace ElectronNET.API.Entities
+{
+ public class OnBeforeRequestDetails
+ {
+ public int Id { get; set; }
+ public string Url { get; set; }
+ public string Method { get; set; }
+ public int? WebContentsId { get; set; }
+ // Ensure all necessary properties are included as per Electron documentation
+ }
+
+ public class WebRequestFilter
+ {
+ public string[] Urls { get; set; }
+ }
+
+ public class WebRequest
+ {
+ public int Id { get; private set; }
+
+ internal WebRequest(int id)
+ {
+ Id = id;
+ }
+
+ private event Action> _onBeforeRequest;
+
+ public void OnBeforeRequest(WebRequestFilter filter, Action> listener)
+ {
+ if (_onBeforeRequest == null)
+ {
+ BridgeConnector.Socket.On($"webContents-session-webRequest-onBeforeRequest{Id}",
+ (args) =>
+ {
+ ////var details = ((JObject)args[0]).ToObject();
+ ////var callback = args.Length > 1 ? (Action