Search API
Tìm kiếm anime và manga với các tùy chọn lọc nâng cao.
Endpoint
GET /api/v1/search
Tham số
Tất cả các tham số đều tùy chọn. Ít nhất một bộ lọc nên được cung cấp để có kết quả có ý nghĩa.
Tìm kiếm văn bản
| Tham số | Kiểu | Mô tả |
|---|---|---|
title | string | Tìm kiếm theo tiêu đề (không phân biệt hoa thường, khớp một phần) |
Bộ lọc ngày tháng
| Tham số | Kiểu | Mô tả | Định dạng |
|---|---|---|---|
season | string | Lọc theo mùa | WINTER, SPRING, SUMMER, FALL |
seasonYear | integer | Lọc theo năm | 1900-2100 |
startDateFrom | string | Ngày bắt đầu từ | YYYY-MM-DD |
startDateTo | string | Ngày bắt đầu đến | YYYY-MM-DD |
endDateFrom | string | Ngày kết thúc từ | YYYY-MM-DD |
endDateTo | string | Ngày kết thúc đến | YYYY-MM-DD |
Bộ lọc Media
| Tham số | Kiểu | Mô tả | Giá trị |
|---|---|---|---|
status | string | Trạng thái media | RELEASING, FINISHED, NOT_YET_RELEASED, CANCELLED, HIATUS |
format | string | Định dạng media | TV, TV_SHORT, MOVIE, SPECIAL, OVA, ONA, MUSIC, MANGA, etc. |
mediaType | string | Loại media | ANIME, MANGA |
countryOfOrigin | string | Mã quốc gia | ví dụ: JP, KR, CN |
Bộ lọc danh mục
| Tham số | Kiểu | Mô tả |
|---|---|---|
genreIds | string | ID thể loại phân cách bằng dấu phẩy (ví dụ: 1,2,3) |
tagIds | string | ID tag phân cách bằng dấu phẩy (ví dụ: 1,2,3) |
Tùy chọn tìm kiếm
| Tham số | Kiểu | Mô tả | Giá trị |
|---|---|---|---|
sortBy | string | Trường sắp xếp | ID, UPDATED_AT, START_DATE, SEASON_YEAR, POPULARITY |
sortOrder | string | Thứ tự sắp xếp | ASC, DESC |
Phân trang
| Tham số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
limit | integer | 20 | Số lượng kết quả mỗi trang (1-100) |
offset | integer | 0 | Số lượng kết quả cần bỏ qua |
Ví dụ Request
Tìm kiếm cơ bản
GET /api/v1/search?title=attack&mediaType=ANIME&limit=10
Tìm kiếm nâng cao với bộ lọc
GET /api/v1/search?title=shingeki&mediaType=ANIME&status=FINISHED&season=SPRING&seasonYear=2013&limit=20&offset=0
Tìm kiếm theo thể loại
GET /api/v1/search?genreIds=1,2&mediaType=ANIME&sortBy=POPULARITY&sortOrder=DESC
Tìm kiếm theo khoảng ngày
GET /api/v1/search?startDateFrom=2013-01-01&startDateTo=2013-12-31&mediaType=ANIME
Định dạng Response
Response thành công (200 OK)
{
"success": true,
"results": [
{
"id": 16498,
"mediaType": "ANIME",
"titles": {
"en": "Attack on Titan",
"ja": "進撃の巨人",
"vi": "Cuộc tấn công của Titan"
},
"images": {
"coverXl": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/large/bx16498-C7FPm3m59CyP.jpg",
"coverLg": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx16498-C7FPm3m59CyP.jpg",
"coverMd": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/small/bx16498-C7FPm3m59CyP.jpg",
"coverColor": "#E4E4E4",
"bannerUrl": "https://s4.anilist.co/file/anilistcdn/media/anime/banner/16498-8YHjVabJfCr2.jpg"
},
"status": "FINISHED",
"season": "SPRING",
"seasonYear": 2013,
"startDate": "2013-04-07",
"format": "TV"
}
],
"total": 1,
"limit": 10,
"offset": 0,
"hasNextPage": false
}
Response lỗi (400 Bad Request)
{
"success": false,
"message": "Invalid season: SUMMER. Must be one of: WINTER, SPRING, SUMMER, FALL",
"code": "INVALID_PARAMETER"
}
Các trường Response
MediaSearchResult
| Trường | Kiểu | Mô tả |
|---|---|---|
id | integer | ID media |
mediaType | string | ANIME hoặc MANGA |
titles | object | Tiêu đề theo ngôn ngữ (ví dụ: en, ja, vi) |
images | object | URL hình ảnh và metadata |
status | string | Trạng thái media |
season | string | Mùa phát hành (nếu có) |
seasonYear | integer | Năm phát hành |
startDate | string | Ngày bắt đầu (YYYY-MM-DD) |
format | string | Định dạng media |
Đối tượng Images
| Trường | Kiểu | Mô tả |
|---|---|---|
coverXl | string | URL ảnh bìa cực lớn |
coverLg | string | URL ảnh bìa lớn |
coverMd | string | URL ảnh bìa vừa |
coverColor | string | Mã màu hex chủ đạo |
bannerUrl | string | URL ảnh banner |
Lưu ý
- Tìm kiếm được hỗ trợ bởi Meilisearch để có kết quả nhanh và chính xác
- Tất cả tìm kiếm văn bản đều không phân biệt hoa thường
- Nhiều bộ lọc có thể kết hợp để có kết quả chính xác
- Kết quả được sắp xếp theo độ liên quan theo mặc định khi sử dụng tìm kiếm văn bản
- Kết quả trống trả về mảng rỗng với
total: 0