             newUrl = url
         }
 
-        let headers = [ServiceRequest.accessTokenHeader: "\(ServiceRequest.accessTokenPrefix) \(accessToken)"]
-        super.init(url: newUrl, method: method, headers: headers, body: bodyData)
+        var requestHeaders = [ServiceRequest.accessTokenHeader: "\(ServiceRequest.accessTokenPrefix) \(accessToken)"]
+
+        try requestHeaders.merge(headers) { _, _ in throw ServiceRequestError.duplicateHeadersKey }
+        
+        super.init(url: newUrl, method: method, headers: requestHeaders, body: bodyData)
     }
 
     /// Initializer

            newUrl = url
        }

        let headers = [ServiceRequest.accessTokenHeader: "\(ServiceRequest.accessTokenPrefix) \(accessToken)"]
        super.init(url: newUrl, method: method, headers: headers, body: bodyData)
    }
}

    ///   - method: Request method
    ///   - accessToken: Access token
    ///   - params: Encodable request body
    ///   - headers: Http headers
    /// - Throws: ServiceRequestError.getQueryWithDecodableIsNotSupported, if GET query with params
    ///           Rethrows from JSONEncoder
    public init<T: Encodable>(url: URL, method: Method, accessToken: String, params: T? = nil,
                              headers: [String: String] = [:]) throws {
        let bodyData: Data?
        let newUrl: URL

