diff --git a/client/src/services/conversation.js b/client/src/services/Conversation.ts
similarity index 62%
rename from client/src/services/conversation.js
rename to client/src/services/Conversation.ts
index 1caa40e..400617c 100644
--- a/client/src/services/conversation.js
+++ b/client/src/services/Conversation.ts
@@ -1,30 +1,30 @@
 import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
 import axios from 'axios';
 
-export const useConversationQuery = (accountId, conversationId) => {
+export const useConversationQuery = (accountId: string, conversationId: string) => {
   return useQuery(['conversation', accountId, conversationId], () => fetchConversation(accountId, conversationId), {
     enabled: !!(accountId && conversationId),
   });
 };
 
-export const useMessagesQuery = (accountId, conversationId) => {
+export const useMessagesQuery = (accountId: string, conversationId: string) => {
   return useQuery(['messages', accountId, conversationId], () => fetchMessages(accountId, conversationId), {
     enabled: !!(accountId && conversationId),
   });
 };
 
-export const useSendMessageMutation = (accountId, conversationId) => {
+export const useSendMessageMutation = (accountId: string, conversationId: string) => {
   const queryClient = useQueryClient();
   return useMutation(
-    (message) => axios.post(`/api/accounts/${accountId}/conversations/${conversationId}`, { message }),
+    (message: string) => axios.post(`/api/accounts/${accountId}/conversations/${conversationId}`, { message }),
     {
       onSuccess: () => queryClient.invalidateQueries(['messages', accountId, conversationId]),
     }
   );
 };
 
-const fetchConversation = (accountId, conversationId) =>
+const fetchConversation = (accountId: string, conversationId: string) =>
   axios.get(`/api/accounts/${accountId}/conversations/${conversationId}`).then((result) => result.data);
 
-const fetchMessages = (accountId, conversationId) =>
+const fetchMessages = (accountId: string, conversationId: string) =>
   axios.get(`/api/accounts/${accountId}/conversations/${conversationId}/messages`).then((result) => result.data);
