Index: ChapterX.API/Controllers/LikesController.cs
===================================================================
--- ChapterX.API/Controllers/LikesController.cs	(revision 877c13c3dd0934c1d31da7988d0d2c2c5925ed55)
+++ ChapterX.API/Controllers/LikesController.cs	(revision d300631ac3354730c3b03cb7b160974af50e7894)
@@ -1,4 +1,5 @@
 using ChapterX.Application.Likes.Commands;
 using ChapterX.Application.Likes.Queries;
+using ChapterX.Domain.Repositories;
 using MediatR;
 using Microsoft.AspNetCore.Authorization;
@@ -13,10 +14,29 @@
     {
         private readonly IMediator _mediator;
+        private readonly ILikesRepository _likesRepository;
         private readonly ILogger<LikesController> _logger;
 
-        public LikesController(IMediator mediator, ILogger<LikesController> logger)
+        public LikesController(IMediator mediator, ILikesRepository likesRepository, ILogger<LikesController> logger)
         {
             _mediator = mediator;
+            _likesRepository = likesRepository;
             _logger = logger;
+        }
+
+        [HttpGet("story/{storyId:int}")]
+        [AllowAnonymous]
+        public async Task<ActionResult> GetByStory(int storyId)
+        {
+            var likes = await _likesRepository.GetByStoryIdAsync(storyId);
+            return Ok(new { count = likes.Count(), userIds = likes.Select(l => l.UserId).ToList() });
+        }
+
+        [HttpDelete("user/{userId:int}/story/{storyId:int}")]
+        [Authorize]
+        public async Task<ActionResult> DeleteByUserAndStory(int userId, int storyId)
+        {
+            var deleted = await _likesRepository.DeleteByUserAndStoryAsync(userId, storyId);
+            if (!deleted) return NotFound();
+            return Ok();
         }
 
@@ -43,5 +63,7 @@
         public async Task<ActionResult> Add([FromBody] AddRequest request)
         {
-            _logger.LogInformation("Adding a new like for ChapterId: {ChapterId}", request.ChapterId);
+            _logger.LogInformation("Adding a new like for StoryId: {StoryId}", request.StoryId);
+            var exists = await _likesRepository.ExistsAsync(request.UserId, request.StoryId);
+            if (exists) return Ok();
             var response = await _mediator.Send(request);
             return Ok(response);
