diff --git a/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/FeedbackRepository.java b/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/FeedbackRepository.java
new file mode 100644
index 0000000..f3eed1c
--- /dev/null
+++ b/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/FeedbackRepository.java
@@ -0,0 +1,25 @@
+package eu.mhsl.craftattack.spawn.api.client.repositories;
+
+import com.google.common.reflect.TypeToken;
+import eu.mhsl.craftattack.spawn.api.client.HttpRepository;
+import eu.mhsl.craftattack.spawn.api.client.ReqResp;
+import eu.mhsl.craftattack.spawn.util.api.ApiUtil;
+
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+public class FeedbackRepository extends HttpRepository {
+    public FeedbackRepository() {
+        super(ApiUtil.getBaseUri(), ApiUtil::withAuthorizationSecret);
+    }
+
+    public record Request(String event, List<UUID> users) {}
+
+    public ReqResp<Map<UUID, String>> createFeedbackUrls(Request data) {
+        final Type responseType = new TypeToken<Map<UUID, String>>(){}.getType();
+        ReqResp<Object> rawData = this.post("feedback", data, Object.class);
+        return new ReqResp<>(rawData.status(), this.gson.fromJson(this.gson.toJson(rawData.data()), responseType));
+    }
+}
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/feedback/Feedback.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/feedback/Feedback.java
index 32a4b4f..cbcdfcb 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/feedback/Feedback.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/feedback/Feedback.java
@@ -1,12 +1,13 @@
 package eu.mhsl.craftattack.spawn.appliances.feedback;
 
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
 import eu.mhsl.craftattack.spawn.Main;
+import eu.mhsl.craftattack.spawn.api.client.ReqResp;
+import eu.mhsl.craftattack.spawn.api.client.repositories.FeedbackRepository;
 import eu.mhsl.craftattack.spawn.appliance.Appliance;
 import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
 import eu.mhsl.craftattack.spawn.appliances.feedback.commands.FeedbackCommand;
 import eu.mhsl.craftattack.spawn.appliances.feedback.commands.RequestFeedbackCommand;
+import eu.mhsl.craftattack.spawn.util.api.HttpStatus;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.ComponentBuilder;
 import net.kyori.adventure.text.TextComponent;
@@ -18,33 +19,27 @@ import org.bukkit.entity.Player;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
 import java.util.*;
 
 public class Feedback extends Appliance {
-    private final URI apiEndpoint;
-
     public Feedback() {
         super("feedback");
-        this.apiEndpoint = URI.create(Objects.requireNonNull(localConfig().getString("api")));
     }
 
     public void requestFeedback(String eventName, List<Player> receivers, @Nullable String question) {
-        Map<UUID, String> feedbackUrls = createPersonalizedUrls(
-            new Request(eventName, receivers.stream().map(Entity::getUniqueId).toList())
+        ReqResp<Map<UUID, String>> response = this.queryRepository(FeedbackRepository.class).createFeedbackUrls(
+            new FeedbackRepository.Request(eventName, receivers.stream().map(Entity::getUniqueId).toList())
         );
 
-        System.out.println(feedbackUrls.toString());
+        System.out.println(response.toString());
+        System.out.println(response.status());
+
+        if(response.status() != HttpStatus.CREATED) throw new RuntimeException();
 
         Component border = Component.text("-".repeat(40), NamedTextColor.GRAY);
 
         receivers.forEach(player -> {
-            String feedbackUrl = feedbackUrls.get(player.getUniqueId());
+            String feedbackUrl = response.data().get(player.getUniqueId());
             if(feedbackUrl == null) {
                 Main.logger().warning(String.format("FeedbackUrl not found for player '%s' from backend!", player.getUniqueId()));
                 return;
@@ -72,23 +67,6 @@ public class Feedback extends Appliance {
         });
     }
 
-    private record Request(String event, List<UUID> users) {}
-    private final Type responseType = new TypeToken<Map<UUID, String>>(){}.getType();
-    private Map<UUID, String> createPersonalizedUrls(Request data) {
-        try(HttpClient client = HttpClient.newHttpClient()) {
-            HttpRequest httpRequest = HttpRequest.newBuilder()
-                .uri(this.apiEndpoint)
-                .header("Content-Type", "application/json")
-                .POST(HttpRequest.BodyPublishers.ofString(new Gson().toJson(data)))
-                .build();
-
-            HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
-            return new Gson().fromJson(httpResponse.body(), responseType);
-        } catch(IOException | InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
     @Override
     protected @NotNull List<ApplianceCommand<?>> commands() {
         return List.of(