Welcome to the official FireAnime API Reference (formerly FireAnime). This documentation provides the necessary information to interact with our backend services programmatically, allowing access to anime metadata, search functionality, community forums, and user-specific data.
Our API is built on top of ConnectRPC , a modern, lightweight, and fast framework that provides a seamless developer experience. ConnectRPC is fully compatible with HTTP/1.1 and HTTP/2, which means you can call these endpoints using standard HTTP requests (like curl, fetch, or Postman) or by using official ConnectRPC clients in your preferred language.
Please be advised that the FireAnime API is under active development . API stability and backward compatibility are not guaranteed . Endpoints, request parameters, and response schemas are subject to change without prior notice. Developers should build their integrations with this flexibility in mind.
Access to this API is granted exclusively for private, non-commercial usage . Any commercial redistribution of data, high-frequency automated scraping, or usage that negatively impacts service performance for other users is strictly prohibited. By utilizing these endpoints, you agree to comply with our Terms of Use.
To ensure fair usage and maintain optimal performance for all users, rate limits are actively enforced across all endpoints. Excessive requests or abusive traffic patterns will result in temporary or permanent IP bans (HTTP 429 Too Many Requests). Please implement appropriate backoff strategies in your applications.
All API requests should be prefixed with our base URL:
https://api.example.comConnectRPC supports standard HTTP POST requests with JSON. Every endpoint detailed below expects a POST request, and the request payload must be sent as application/json.
Required Headers:
Content-Type: application/jsonEndpoints that require authentication are marked with :auth="true". To authenticate, include your JWT token in the Authorization header as a Bearer token:
text Copy
Authorization: Bearer YOUR_JWT_TOKEN
To obtain a JWT token, use the Login or Register endpoints found under the Auth section.
Login authenticates a user with their credentials and returns a JWT session token.
POST /api.v1.auth.AuthService/Login
Service: AuthService
Type: api.v1.auth.LoginRequest
json Copy
{
"username": "string",
"password": "string"
}
Type: api.v1.auth.AuthResponse
json Copy
{
"token": "string",
"isAdmin": "bool"
}
Register creates a new user account and returns a JWT session token upon success.
POST /api.v1.auth.AuthService/Register
Service: AuthService
Type: api.v1.auth.RegisterRequest
json Copy
{
"username": "string",
"password": "string",
"captchaResponse": "string"
}
Type: api.v1.auth.AuthResponse
json Copy
{
"token": "string",
"isAdmin": "bool"
}
ListAnimes returns a paginated list of all available animes in the system.
POST /api.v1.anime.AnimeService/ListAnimes
Service: AnimeService
Type: api.v1.anime.ListAnimesRequest
Type: api.v1.anime.ListAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
PluckAnimes retrieves specific anime and episode metadata for a bulk list of identifiers.
POST /api.v1.anime.AnimeService/PluckAnimes
Service: AnimeService
Type: api.v1.anime.PluckAnimesRequest
json Copy
{
"data": [
{
"slug": "string",
"season": "string",
"episode": "string",
"position": "int32"
}
]
}
Type: api.v1.anime.PluckAnimesResponse
json Copy
{
"data": [
{
"animeId": "uint32",
"anime": {
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"link": "{}",
"lang": "{}",
"animeEpisodeId": "{}",
"createdById": "{}",
"name": "{}"
}
],
"proxyCaches": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"dirName": "{}",
"source": "{}",
"sourceUrl": "{}",
"status": "{}",
"statusMessage": "{}",
"language": "{}",
"animeSlug": "{}",
"animeTitle": "{}",
"season": "{}",
"episode": "{}"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
},
"season": "string",
"episode": "string",
"position": "int32"
}
],
"pages": "int32",
"status": "int32"
}
ListAnimesByGenre returns a paginated list of animes filtered by a specific genre.
POST /api.v1.anime.AnimeService/ListAnimesByGenre
Service: AnimeService
Type: api.v1.anime.ListAnimesByGenreRequest
json Copy
{
"page": "int32",
"genre": "string"
}
Type: api.v1.anime.ListAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
ListAnimesByViewCount returns animes sorted by their total lifetime view count.
POST /api.v1.anime.AnimeService/ListAnimesByViewCount
Service: AnimeService
Type: api.v1.anime.ListAnimesRequest
Type: api.v1.anime.ListAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
ListAnimesByViewCountLast24h returns animes sorted by views received in the last 24 hours.
POST /api.v1.anime.AnimeService/ListAnimesByViewCountLast24h
Service: AnimeService
Type: api.v1.anime.ListAnimesRequest
Type: api.v1.anime.ListAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
ListAnimesByViewCountLast7d returns animes sorted by views received in the last 7 days.
POST /api.v1.anime.AnimeService/ListAnimesByViewCountLast7d
Service: AnimeService
Type: api.v1.anime.ListAnimesRequest
Type: api.v1.anime.ListAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
ListAnimesByLastAddedEpisode returns animes that have recently had new episodes added.
POST /api.v1.anime.AnimeService/ListAnimesByLastAddedEpisode
Service: AnimeService
Type: api.v1.anime.ListAnimesRequest
Type: api.v1.anime.ListAnimesByLastAddedEpisodeResponse
json Copy
{
"data": [
{
"episodeId": "uint32",
"createdAt": "string",
"slug": "string",
"season": "string",
"episode": "string",
"poster": "string",
"backdrop": "string",
"image": "string",
"title": "string",
"hasGerSub": "bool",
"hasGerDub": "bool",
"hasEngSub": "bool"
}
],
"pages": "int32",
"status": "int32"
}
GetAnime retrieves full metadata for a single anime identified by slug or ID.
POST /api.v1.anime.AnimeService/GetAnime
Service: AnimeService
Type: api.v1.anime.GetAnimeRequest
json Copy
{
"slug": "string",
"id": "uint32"
}
Type: api.v1.anime.GetAnimeResponse
json Copy
{
"data": {
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
},
"status": "int32"
}
GetEpisode retrieves details for a specific episode, including available streaming links.
POST /api.v1.anime.AnimeService/GetEpisode
Service: AnimeService
Type: api.v1.anime.GetEpisodeRequest
json Copy
{
"slug": "string",
"season": "string",
"episode": "string"
}
Type: api.v1.anime.GetEpisodeResponse
json Copy
{
"data": {
"id": "uint32",
"episode": "string",
"animeSeasonId": "uint32",
"hasGerSub": "bool",
"hasEngSub": "bool",
"hasGerDub": "bool",
"likeCount": "int32",
"dislikeCount": "int32",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"episodeNotice": "string"
},
"status": "int32"
}
GetNextEpisodes returns a list of episodes the user might want to watch next based on their history.
POST /api.v1.anime.AnimeService/GetNextEpisodes
Service: AnimeService
Type: api.v1.anime.GetNextEpisodesRequest
Type: api.v1.anime.GetNextEpisodesResponse
json Copy
{
"data": [
{
"slug": "string",
"season": "string",
"episode": "string",
"title": "string",
"poster": "string",
"backdrop": "string",
"lastSeen": "int32",
"watchStatus": "string",
"position": "int32"
}
],
"status": "int32"
}
SearchAnimes executes a search query against the anime database using various metadata filters.
POST /api.v1.AnimeSearchService/SearchAnimes
Service: AnimeSearchService
Type: api.v1.SearchAnimesRequest
json Copy
{
"q": "string",
"page": "int32",
"limit": "int32",
"orderBy": "string",
"orderDir": "string",
"genres": [
"string"
],
"year": "int32",
"yearStart": "int32",
"yearEnd": "int32",
"status": "string",
"format": "string",
"minScore": "int32"
}
Type: api.v1.SearchAnimesResponse
json Copy
{
"data": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"pages": "int32",
"status": "int32"
}
GetGenres retrieves a unique list of all anime genres currently used in the database.
POST /api.v1.GenreService/GetGenres
Service: GenreService
Type: api.v1.GetGenresRequest
Type: api.v1.GetGenresResponse
GetCalendars retrieves the weekly airing schedule for anime episodes.
POST /api.v1.CalendarService/GetCalendars
Service: CalendarService
Type: api.v1.GetCalendarsRequest
Type: api.v1.GetCalendarsResponse
json Copy
{
"data": [
{
"id": "uint32",
"animeId": "uint32",
"anime": {
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"link": "{}",
"lang": "{}",
"animeEpisodeId": "{}",
"createdById": "{}",
"name": "{}"
}
],
"proxyCaches": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"dirName": "{}",
"source": "{}",
"sourceUrl": "{}",
"status": "{}",
"statusMessage": "{}",
"language": "{}",
"animeSlug": "{}",
"animeTitle": "{}",
"season": "{}",
"episode": "{}"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
},
"epDetails": "string",
"timeDetails": "string",
"season": "string",
"episode": "string",
"airingTime": "string",
"episodeIsAvailable": "bool",
"dateString": "string",
"lang": "string"
}
]
}
GetSliders retrieves all active promotional slider items.
POST /api.v1.SliderService/GetSliders
Service: SliderService
Type: api.v1.GetSlidersRequest
Type: api.v1.GetSlidersResponse
json Copy
{
"data": [
{
"id": "uint32",
"title": "string",
"subtitle": "string",
"path": "string",
"year": "string",
"description": "string",
"poster": "string",
"backdrop": "string",
"prio": "int32"
}
]
}
GetProfile retrieves detailed profile information for a specific user ID or "me" for the current user.
POST /api.v1.user.UserService/GetProfile
Service: UserService
Type: api.v1.user.GetProfileRequest
Type: api.v1.user.GetProfileResponse
json Copy
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"userId": "uint32",
"avatarUrl": "string",
"bannerUrl": "string",
"accentColor": "string",
"aboutMe": "string",
"discordUsername": "string",
"malUsername": "string",
"anilistUsername": "string",
"profileVisibility": "string",
"listVisibility": "string",
"statsVisibility": "string",
"preferredLanguage": "string",
"username": "string",
"topAnimes": [
{
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
}
],
"rulesAcceptedVersion": "int32"
}
UpdateProfile modifies the current user's profile information, including metadata and binary media.
POST /api.v1.user.UserService/UpdateProfileService: UserService
Type: api.v1.user.UpdateProfileRequest
json Copy
{
"aboutMe": "string",
"discordUsername": "string",
"malUsername": "string",
"anilistUsername": "string",
"topAnimeIds": "string",
"profileVisibility": "string",
"listVisibility": "string",
"statsVisibility": "string",
"preferredLanguage": "string",
"accentColor": "string",
"deleteAvatar": "bool",
"deleteBanner": "bool",
"avatarBuffer": "bytes",
"bannerBuffer": "bytes"
}
Type: api.v1.user.UpdateProfileResponse
GetUserLayouts retrieves the custom UI layout configurations for the authenticated user.
POST /api.v1.user.UserService/GetUserLayoutsService: UserService
Type: api.v1.user.GetUserLayoutsRequest
Type: api.v1.user.GetUserLayoutsResponse
json Copy
{
"data": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"type": "string",
"config": "string"
}
]
}
UpdateUserLayout saves or modifies a specific UI layout configuration for the user.
POST /api.v1.user.UserService/UpdateUserLayoutService: UserService
Type: api.v1.user.UpdateUserLayoutRequest
json Copy
{
"type": "string",
"config": "string"
}
Type: api.v1.user.UpdateUserLayoutResponse
json Copy
{
"data": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"type": "string",
"config": "string"
}
}
ResetPassword allows the authenticated user to change their current password.
POST /api.v1.user.UserService/ResetPasswordService: UserService
Type: api.v1.user.ResetPasswordRequest
json Copy
{
"newPassword": "string"
}
Type: api.v1.user.ResetPasswordResponse
GetUserQuickStats returns a summary of the user's engagement (watchlist count, likes, etc.).
POST /api.v1.user.UserService/GetUserQuickStatsService: UserService
Type: api.v1.user.GetUserQuickStatsRequest
Type: api.v1.user.GetUserQuickStatsResponse
json Copy
{
"recentWatchCount": "int64",
"likedCount": "int64",
"dislikedCount": "int64",
"watchlistCount": "int64"
}
GetUserAnimeWatchStats retrieves heatmap data representing the user's watch activity over time.
POST /api.v1.user.UserService/GetUserAnimeWatchStatsService: UserService
Type: api.v1.user.GetUserAnimeWatchStatsRequest
Type: api.v1.user.GetUserAnimeWatchStatsResponse
json Copy
{
"data": [
{
"date": "string",
"count": "int32"
}
]
}
UpdateEpisodeLastSeen records the user's current playback position within a specific episode.
POST /api.v1.watch.WatchService/UpdateEpisodeLastSeenService: WatchService
Type: api.v1.watch.UpdateEpisodeLastSeenRequest
json Copy
{
"slug": "string",
"season": "string",
"episode": "string",
"positionPercent": "float",
"positionSeconds": "int32",
"positionMax": "int32"
}
Type: api.v1.watch.UpdateEpisodeLastSeenResponse
GetEpisodeLastSeen retrieves the user's most recently viewed episodes for "Continue Watching".
POST /api.v1.watch.WatchService/GetEpisodeLastSeenService: WatchService
Type: api.v1.watch.GetEpisodeLastSeenRequest
Type: api.v1.watch.GetEpisodeLastSeenResponse
json Copy
{
"data": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"slug": "string",
"season": "string",
"episode": "string",
"positionPercent": "float",
"positionSeconds": "int32",
"positionMax": "int32",
"userId": "uint32"
}
]
}
UpdateEpisodeLiked records a like or dislike for a specific anime episode.
POST /api.v1.watch.WatchService/UpdateEpisodeLikedService: WatchService
Type: api.v1.watch.UpdateEpisodeLikedRequest
json Copy
{
"slug": "string",
"season": "string",
"episode": "string",
"isLiked": "bool"
}
Type: api.v1.watch.UpdateEpisodeLikedResponse
GetEpisodeLiked retrieves the current user's reaction (like status) for a specific episode.
POST /api.v1.watch.WatchService/GetEpisodeLikedService: WatchService
Type: api.v1.watch.GetEpisodeLikedRequest
json Copy
{
"slug": "string",
"season": "string",
"episode": "string"
}
Type: api.v1.watch.GetEpisodeLikedResponse
json Copy
{
"data": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"slug": "string",
"season": "string",
"episode": "string",
"isLiked": "bool",
"userId": "uint32",
"animeId": "uint32",
"title": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"backdrop": "string"
}
}
DeleteEpisodeLiked removes the user's like/reaction from a specific episode.
POST /api.v1.watch.WatchService/DeleteEpisodeLikedService: WatchService
Type: api.v1.watch.DeleteEpisodeLikedRequest
json Copy
{
"slug": "string",
"season": "string",
"episode": "string"
}
Type: api.v1.watch.DeleteEpisodeLikedResponse
ListEpisodesLiked retrieves a paginated list of all episodes the user has liked.
POST /api.v1.watch.WatchService/ListEpisodesLikedService: WatchService
Type: api.v1.watch.ListEpisodesLikedRequest
Type: api.v1.watch.ListEpisodesLikedResponse
json Copy
{
"data": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"slug": "string",
"season": "string",
"episode": "string",
"isLiked": "bool",
"userId": "uint32",
"animeId": "uint32",
"title": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"backdrop": "string"
}
],
"max": "int32"
}
UpdateAnimeWatchStatus modifies the user's relationship with an anime (e.g., "watching", "completed").
POST /api.v1.watch.WatchService/UpdateAnimeWatchStatusService: WatchService
Type: api.v1.watch.UpdateAnimeWatchStatusRequest
json Copy
{
"animeId": "uint32",
"status": "string"
}
Type: api.v1.watch.UpdateAnimeWatchStatusResponse
GetAnimeWatchStatus retrieves the current watch status for a specific anime.
POST /api.v1.watch.WatchService/GetAnimeWatchStatusService: WatchService
Type: api.v1.watch.GetAnimeWatchStatusRequest
Type: api.v1.watch.GetAnimeWatchStatusResponse
json Copy
{
"data": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"animeId": "uint32",
"status": "string",
"userId": "uint32"
}
}
DeleteAnimeWatchStatus removes an anime from the user's personal watch list.
POST /api.v1.watch.WatchService/DeleteAnimeWatchStatusService: WatchService
Type: api.v1.watch.DeleteAnimeWatchStatusRequest
Type: api.v1.watch.DeleteAnimeWatchStatusResponse
ListAnimesWatchStatus retrieves a paginated list of animes filtered by their watch status.
POST /api.v1.watch.WatchService/ListAnimesWatchStatusService: WatchService
Type: api.v1.watch.ListAnimesWatchStatusRequest
json Copy
{
"page": "int32",
"status": "string",
"userId": "string"
}
Type: api.v1.watch.ListAnimesWatchStatusResponse
json Copy
{
"data": [
{
"updatedAt": "int64",
"animeId": "uint32",
"slug": "string",
"title": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"backdrop": "string"
}
],
"max": "int32"
}
GetCategories retrieves all public forum categories organized by display order.
POST /api.v1.forum.ForumService/GetCategories
Service: ForumService
Type: api.v1.forum.GetCategoriesRequest
Type: api.v1.forum.GetCategoriesResponse
json Copy
{
"data": [
{
"id": "uint32",
"name": "string",
"slug": "string",
"description": "string",
"parentId": "uint32",
"displayOrder": "int32",
"topicCount": "int32",
"postCount": "int32",
"icon": "string"
}
]
}
GetCategoryTopics retrieves a paginated list of discussion topics within a specific category.
POST /api.v1.forum.ForumService/GetCategoryTopics
Service: ForumService
Type: api.v1.forum.GetCategoryTopicsRequest
json Copy
{
"identifier": "string",
"page": "int32",
"limit": "int32"
}
Type: api.v1.forum.GetCategoryTopicsResponse
json Copy
{
"data": [
{
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
],
"max": "int32"
}
GetTopic retrieves the full content and metadata for a single forum topic.
POST /api.v1.forum.ForumService/GetTopic
Service: ForumService
Type: api.v1.forum.GetTopicRequest
Type: api.v1.forum.GetTopicResponse
json Copy
{
"data": {
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
}
GetTopicPosts retrieves a paginated list of replies (posts) for a specific topic.
POST /api.v1.forum.ForumService/GetTopicPosts
Service: ForumService
Type: api.v1.forum.GetTopicPostsRequest
json Copy
{
"topicId": "uint32",
"page": "int32",
"limit": "int32"
}
Type: api.v1.forum.GetTopicPostsResponse
json Copy
{
"data": [
{
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
],
"max": "int32"
}
CreateTopic starts a new discussion thread in the specified category.
POST /api.v1.forum.ForumService/CreateTopicService: ForumService
Type: api.v1.forum.CreateTopicRequest
json Copy
{
"categoryId": "uint32",
"title": "string",
"content": "string"
}
Type: api.v1.forum.CreateTopicResponse
json Copy
{
"data": {
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
}
CreatePost appends a new reply or comment to an existing forum topic.
POST /api.v1.forum.ForumService/CreatePostService: ForumService
Type: api.v1.forum.CreatePostRequest
json Copy
{
"topicId": "uint32",
"parentPostId": "uint32",
"content": "string"
}
Type: api.v1.forum.CreatePostResponse
json Copy
{
"data": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
ReactToPost applies an upvote or downvote to a specific post.
POST /api.v1.forum.ForumService/ReactToPostService: ForumService
Type: api.v1.forum.ReactToPostRequest
json Copy
{
"postId": "uint32",
"isUpvote": "bool"
}
Type: api.v1.forum.ReactToPostResponse
CreateReview creates a new anime review thread with structured scoring.
POST /api.v1.forum.ForumService/CreateReviewService: ForumService
Type: api.v1.forum.CreateReviewRequest
json Copy
{
"animeId": "uint32",
"title": "string",
"content": "string",
"storyScore": "int32",
"animationScore": "int32",
"soundScore": "int32",
"characterScore": "int32",
"enjoymentScore": "int32"
}
Type: api.v1.forum.CreateReviewResponse
json Copy
{
"data": {
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
}
GetAnimeReviews retrieves all structured reviews for a specific anime.
POST /api.v1.forum.ForumService/GetAnimeReviews
Service: ForumService
Type: api.v1.forum.GetAnimeReviewsRequest
Type: api.v1.forum.GetAnimeReviewsResponse
json Copy
{
"data": [
{
"id": "uint32",
"animeId": "uint32",
"topicId": "uint32",
"title": "string",
"content": "string",
"storyScore": "int32",
"animationScore": "int32",
"soundScore": "int32",
"characterScore": "int32",
"enjoymentScore": "int32",
"isVerifiedWatcher": "bool",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string"
}
]
}
ReportPost flags a post for administrative review due to policy violations.
POST /api.v1.forum.ForumService/ReportPostService: ForumService
Type: api.v1.forum.ReportPostRequest
json Copy
{
"postId": "uint32",
"reason": "string",
"description": "string"
}
Type: api.v1.forum.ReportPostResponse
AcceptRules records the user's acceptance of the latest forum terms of service.
POST /api.v1.forum.ForumService/AcceptRulesService: ForumService
Type: api.v1.forum.AcceptRulesRequest
Type: api.v1.forum.AcceptRulesResponse
GetLatestTopics retrieves the most recently created topics across all categories.
POST /api.v1.forum.ForumService/GetLatestTopics
Service: ForumService
Type: api.v1.forum.GetLatestTopicsRequest
Type: api.v1.forum.GetLatestTopicsResponse
json Copy
{
"data": [
{
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
]
}
GetTrendingTopics retrieves topics with high recent engagement levels.
POST /api.v1.forum.ForumService/GetTrendingTopics
Service: ForumService
Type: api.v1.forum.GetTrendingTopicsRequest
Type: api.v1.forum.GetTrendingTopicsResponse
json Copy
{
"data": [
{
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
]
}
GetLatestPosts retrieves the most recently published replies across the entire forum.
POST /api.v1.forum.ForumService/GetLatestPosts
Service: ForumService
Type: api.v1.forum.GetLatestPostsRequest
Type: api.v1.forum.GetLatestPostsResponse
json Copy
{
"data": [
{
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
]
}
GetFeaturedReviews retrieves a curated selection of high-quality anime reviews.
POST /api.v1.forum.ForumService/GetFeaturedReviews
Service: ForumService
Type: api.v1.forum.GetFeaturedReviewsRequest
Type: api.v1.forum.GetFeaturedReviewsResponse
json Copy
{
"data": [
{
"id": "uint32",
"animeId": "uint32",
"topicId": "uint32",
"title": "string",
"content": "string",
"storyScore": "int32",
"animationScore": "int32",
"soundScore": "int32",
"characterScore": "int32",
"enjoymentScore": "int32",
"isVerifiedWatcher": "bool",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string"
}
]
}
GetGlobalPinnedTopics retrieves topics that are pinned to the top across all categories.
POST /api.v1.forum.ForumService/GetGlobalPinnedTopics
Service: ForumService
Type: api.v1.forum.GetGlobalPinnedTopicsRequest
Type: api.v1.forum.GetGlobalPinnedTopicsResponse
json Copy
{
"data": [
{
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
]
}
GetTopContributors retrieves a list of users with the highest forum activity and reputation.
POST /api.v1.forum.ForumService/GetTopContributors
Service: ForumService
Type: api.v1.forum.GetTopContributorsRequest
Type: api.v1.forum.GetTopContributorsResponse
json Copy
{
"data": [
{
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
}
]
}
GetForumStats retrieves high-level statistics about the forum's size and current activity.
POST /api.v1.forum.ForumService/GetForumStats
Service: ForumService
Type: api.v1.forum.GetForumStatsRequest
Type: api.v1.forum.GetForumStatsResponse
json Copy
{
"totalTopics": "int32",
"totalPosts": "int32",
"totalUsers": "int32",
"onlineNow": "int32"
}
QuickSearchTopics performs a fast title-based search for discussion topics.
POST /api.v1.forum.ForumService/QuickSearchTopics
Service: ForumService
Type: api.v1.forum.QuickSearchTopicsRequest
json Copy
{
"query": "string",
"limit": "int32"
}
Type: api.v1.forum.QuickSearchTopicsResponse
json Copy
{
"data": [
{
"id": "uint32",
"categoryId": "uint32",
"title": "string",
"slug": "string",
"content": "string",
"image": "string",
"externalSource": "string",
"viewCount": "int32",
"postCount": "int32",
"isLocked": "bool",
"isPinned": "bool",
"isHidden": "bool",
"authorId": "uint32",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string",
"updatedAt": "string",
"animeId": "uint32",
"animeEpisodeId": "uint32",
"lastPost": {
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
}
]
}
GetLatestRules retrieves the most recent version of the forum guidelines and rules.
POST /api.v1.forum.ForumService/GetLatestRules
Service: ForumService
Type: api.v1.forum.GetLatestRulesRequest
Type: api.v1.forum.GetLatestRulesResponse
json Copy
{
"data": {
"version": "int32",
"content": "string",
"createdAt": "string"
}
}
GetTopEpisodeComments retrieves the highest-rated comments for a specific anime episode.
POST /api.v1.forum.ForumService/GetTopEpisodeComments
Service: ForumService
Type: api.v1.forum.GetTopEpisodeCommentsRequest
json Copy
{
"episodeId": "uint32"
}
Type: api.v1.forum.GetTopEpisodeCommentsResponse
json Copy
{
"data": [
{
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
],
"topicId": "uint32"
}
GetUserReviews retrieves a paginated list of reviews written by a specific user.
POST /api.v1.forum.ForumService/GetUserReviews
Service: ForumService
Type: api.v1.forum.GetUserReviewsRequest
json Copy
{
"userId": "uint32",
"page": "int32"
}
Type: api.v1.forum.GetUserReviewsResponse
json Copy
{
"data": [
{
"id": "uint32",
"animeId": "uint32",
"topicId": "uint32",
"title": "string",
"content": "string",
"storyScore": "int32",
"animationScore": "int32",
"soundScore": "int32",
"characterScore": "int32",
"enjoymentScore": "int32",
"isVerifiedWatcher": "bool",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"createdAt": "string"
}
],
"max": "int32"
}
GetUserComments retrieves a paginated list of comments/posts written by a specific user.
POST /api.v1.forum.ForumService/GetUserComments
Service: ForumService
Type: api.v1.forum.GetUserCommentsRequest
json Copy
{
"userId": "uint32",
"page": "int32"
}
Type: api.v1.forum.GetUserCommentsResponse
json Copy
{
"data": [
{
"id": "uint32",
"topicId": "uint32",
"authorId": "uint32",
"parentPostId": "uint32",
"content": "string",
"upvotes": "int32",
"downvotes": "int32",
"isHidden": "bool",
"createdAt": "string",
"updatedAt": "string",
"author": {
"id": "uint32",
"username": "string",
"avatarUrl": "string",
"otakuLevel": "int32",
"isVerifiedWatcher": "bool"
},
"userReaction": "string"
}
],
"max": "int32"
}
GetNotifications retrieves a paginated list of notifications for the authenticated user.
POST /api.v1.notification.NotificationService/GetNotificationsService: NotificationService
Type: api.v1.notification.GetNotificationsRequest
json Copy
{
"page": "int32",
"limit": "int32"
}
Type: api.v1.notification.GetNotificationsResponse
json Copy
{
"data": [
{
"id": "uint32",
"userId": "uint32",
"type": "string",
"title": "string",
"body": "string",
"link": "string",
"image": "string",
"isRead": "bool",
"referenceId": "string",
"createdAt": "string"
}
],
"max": "int32"
}
GetUnreadCount returns the total number of notifications that haven't been read by the user.
POST /api.v1.notification.NotificationService/GetUnreadCountService: NotificationService
Type: api.v1.notification.GetUnreadCountRequest
Type: api.v1.notification.GetUnreadCountResponse
MarkAsRead updates the status of specific notifications or all notifications to "read".
POST /api.v1.notification.NotificationService/MarkAsReadService: NotificationService
Type: api.v1.notification.MarkAsReadRequest
json Copy
{
"ids": [
"uint32"
],
"all": "bool"
}
Type: api.v1.notification.MarkAsReadResponse
Subscribe registers the authenticated user to receive notifications for new releases of a specific anime.
POST /api.v1.subscription.SubscriptionService/SubscribeService: SubscriptionService
Type: api.v1.subscription.SubscribeRequest
json Copy
{
"animeId": "uint32",
"language": "string"
}
Type: api.v1.subscription.SubscriptionResponse
Unsubscribe removes the authenticated user's notification registration for a specific anime.
POST /api.v1.subscription.SubscriptionService/UnsubscribeService: SubscriptionService
Type: api.v1.subscription.UnsubscribeRequest
json Copy
{
"animeId": "uint32",
"language": "string"
}
Type: api.v1.subscription.SubscriptionResponse
GetUserSubscriptions retrieves a paginated list of all animes the current user is subscribed to.
POST /api.v1.subscription.SubscriptionService/GetUserSubscriptionsService: SubscriptionService
Type: api.v1.subscription.GetUserSubscriptionsRequest
json Copy
{
"page": "int32",
"limit": "int32"
}
Type: api.v1.subscription.GetUserSubscriptionsResponse
json Copy
{
"data": [
{
"id": "uint32",
"userId": "uint32",
"animeId": "uint32",
"anime": {
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"link": "{}",
"lang": "{}",
"animeEpisodeId": "{}",
"createdById": "{}",
"name": "{}"
}
],
"proxyCaches": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"dirName": "{}",
"source": "{}",
"sourceUrl": "{}",
"status": "{}",
"statusMessage": "{}",
"language": "{}",
"animeSlug": "{}",
"animeTitle": "{}",
"season": "{}",
"episode": "{}"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
},
"language": "string",
"createdAt": "string"
}
],
"max": "int32"
}
CheckSubscription verifies if the current user is subscribed to notifications for a specific anime.
POST /api.v1.subscription.SubscriptionService/CheckSubscriptionService: SubscriptionService
Type: api.v1.subscription.CheckSubscriptionRequest
Type: api.v1.subscription.CheckSubscriptionResponse
json Copy
{
"subscriptions": [
{
"id": "uint32",
"userId": "uint32",
"animeId": "uint32",
"anime": {
"id": "uint32",
"slug": "string",
"title": "string",
"alternateTitles": "string",
"generes": [
"string"
],
"imdb": "string",
"tmdb": "int32",
"desc": "string",
"start": "int32",
"end": "int32",
"poster": "string",
"voteAvg": "float",
"voteCount": "int32",
"createdAt": "string",
"updatedAt": "int64",
"lastSync": "string",
"tmdbType": "string",
"anilist": "int32",
"anilistSyncAttempts": "int32",
"anilistSuggestedId": "int32",
"anilistSuggestedTitle": "string",
"anilistSuggestedPoster": "string",
"anilistSuggestedScore": "float",
"anilistReviewRequired": "bool",
"backdrop": "string",
"itemType": "string",
"blockSync": "bool",
"blockEpisodeSync": "bool",
"excludeFromAnilist": "bool",
"autoCache": "bool",
"deletedAt": "string",
"animeSeasons": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"season": "string",
"animeId": "uint32",
"autoCache": "bool",
"animeEpisodes": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"link": "string",
"lang": "string",
"animeEpisodeId": "uint32",
"createdById": "string",
"name": "string"
}
],
"proxyCaches": [
{
"id": "uint32",
"createdAt": "string",
"updatedAt": "string",
"dirName": "string",
"source": "string",
"sourceUrl": "string",
"status": "string",
"statusMessage": "string",
"language": "string",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"episode": "string"
}
],
"episodeNotice": "string"
}
]
}
],
"animeGroups": [
{
"id": "uint32",
"animeId": "uint32",
"anilistId": "int32",
"slug": "string",
"title": "string",
"romajiTitle": "string",
"nativeTitle": "string",
"desc": "string",
"cover": "string",
"startDate": "string",
"endDate": "string",
"status": "string",
"episodes": "int32",
"format": "string",
"season": "string",
"year": "int32",
"generes": [
"string"
],
"tags": [
"string"
],
"isHidden": "bool",
"prequelId": "uint32",
"sequelId": "uint32",
"deletedAt": "string",
"animeGroupEpisodes": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeEpisodeId": "uint32",
"order": "int32",
"animeEpisode": {
"id": "uint32",
"createdAt": "string",
"updatedAt": "int64",
"episode": "string",
"image": "string",
"animeSeasonId": "uint32",
"lastSync": "string",
"deletedAt": "string",
"animeEpisodeLinks": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"link": "{}",
"lang": "{}",
"animeEpisodeId": "{}",
"createdById": "{}",
"name": "{}"
}
],
"proxyCaches": [
{
"id": "{}",
"createdAt": "{}",
"updatedAt": "{}",
"dirName": "{}",
"source": "{}",
"sourceUrl": "{}",
"status": "{}",
"statusMessage": "{}",
"language": "{}",
"animeSlug": "{}",
"animeTitle": "{}",
"season": "{}",
"episode": "{}"
}
],
"episodeNotice": "string"
}
}
],
"animeGroupAutoSeasons": [
{
"id": "uint32",
"animeGroupId": "uint32",
"animeSeasonId": "uint32"
}
]
}
],
"takedownExpiresAt": "string",
"takedownAuthOnly": "bool"
},
"language": "string",
"createdAt": "string"
}
]
}
CreateFeedback submits a new feedback report from the user.
POST /api.v1.feedback.FeedbackService/CreateFeedback
Service: FeedbackService
Type: api.v1.feedback.CreateFeedbackRequest
json Copy
{
"title": "string",
"description": "string",
"category": "string",
"animeId": "uint32",
"animeSeasonId": "uint32",
"animeEpisodeId": "uint32"
}
Type: api.v1.feedback.CreateFeedbackResponse
ListFeedbacks retrieves a paginated list of feedback submissions. For normal users, it only returns their own.
POST /api.v1.feedback.FeedbackService/ListFeedbacks
Service: FeedbackService
Type: api.v1.feedback.ListFeedbacksRequest
json Copy
{
"page": "int32",
"limit": "int32",
"status": "string",
"category": "string",
"animeId": "uint32",
"animeSeasonId": "uint32",
"animeEpisodeId": "uint32",
"userId": "uint32"
}
Type: api.v1.feedback.ListFeedbacksResponse
json Copy
{
"data": [
{
"id": "uint32",
"title": "string",
"description": "string",
"category": "string",
"status": "string",
"priority": "string",
"adminComment": "string",
"createdAt": "string",
"userName": "string",
"userId": "uint32",
"animeId": "uint32",
"animeSlug": "string",
"animeTitle": "string",
"season": "string",
"animeSeasonId": "uint32",
"episode": "string",
"animeEpisodeId": "uint32",
"adminHasReviewed": "bool"
}
],
"pages": "int32"
}