发现端点
无需番号即可浏览目录:热门、相似影片、按天发行、工作室、系列、类型和随机推荐。
十三个 GET 端点查询整个目录,而不是单个番号。全部用 x-javinfo-key 鉴权并计费。多数返回
meta:应答来源、扫描文档数、耗时。
基础价格每 1,000 次 $0.40。端点接受 num 时,超过 10 后价格随页大小上升,所以默认值很关键:
num=20 是 $0.80。公式见速率限制与计费。
| 端点 | 用途 | 默认值下每 1,000 次 |
|---|---|---|
/discover/trending | 最近的发行,带排名 | $0.80(num=20) |
/discover/underrated | 高评分的旧影片 | $0.80(num=20) |
/discover/suggestion | 跨番号、演员、标签和工作室的输入联想 | $0.40(num=8) |
/discover/similar | 与某个种子番号相似的影片 | $0.48(num=12) |
/discover/duel | 一对带种子的 A/B 影片 | $0.40 |
/discover/calendar | 按天分组的发行 | $0.40 |
/discover/tags | 时间窗口内的标签计数 | $1.20(num=30) |
/discover/studios | 工作室目录,或某个工作室的作品 | $1.20 / $0.80 |
/discover/series | 单个系列,最新优先 | $0.80(num=20) |
/discover/genres | 整个目录的类型计数 | $2.40(num=60) |
/discover/random | 符合筛选条件的随机影片 | $0.40(num=10) |
/discover/for-you | 根据账户自己的搜索历史推荐 | $0.80(num=20) |
/discover/stats | 按来源统计的目录总量 | $0.40 |
影片卡片
发现响应的影片都是这个形状。端点共用一张卡片,写一次渲染器即可。
| 字段 | 类型 | 说明 |
|---|---|---|
code | string | 规范化后的番号,例如 ABP-002 |
title | string | null | 仅英文标题;来源没有时是 null。javbus 的行经常是 title: null,日文标题在 titleJa 里 |
titleJa | string | null | 日文标题 |
releaseDate | string | null | YYYY-MM-DD |
runtimeMins | number | null | 分钟 |
maker | string | null | 工作室 / 制作商 |
label | string | null | 厂牌 |
series | string | null | 系列,按来源的写法 |
categories | string[] | 类型标签 |
actresses | string[] | 演员,来源有英文名时用英文名 |
cover | string | null | 封面 URL |
rating | number | null | 仅 javlibrary,1–10;其他来源都是 null |
source | string | 提供这张卡片的来源:fanza、javdatabase、javlibrary、javbus 或 missav |
url | string | null | 来源站点上的页面,来源存了才有 |
多个索引应答时,卡片按 code 合并,优先级靠前的索引提供元数据。rating 例外:只有 javlibrary
有评分,其他来源的卡片就是 null,即使别处有评分。
meta 描述调用:
| 字段 | 类型 | 说明 |
|---|---|---|
sources | string[] | 有命中或分面计数的公开来源名。空数组通常表示目录没能连上 |
scanned | number | 排序或筛选前读取的文档数。仅分面的端点为 0 |
latencyMs | number | 服务端耗时 |
示例经过裁剪:数组只留前几项,重复项记为 "…",长标题截断。值来自真实响应。
/discover/trending
近期发行,按质量和日期排名。适合首页或不按时间罗列的“本周新片”栏。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
range | integer | 30 | 1–365,向前查看的天数 |
num | integer | 20 | 1–50 |
genre | string | 无 | 精确的类型名 |
价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。
处理器按最新优先读取最近 range 天,再按新鲜度、评分、图集大小、预览和演员数重排。日期筛选
无上限,未来发行的预告也会出现。
curl -s 'https://api.javinfo.dev/discover/trending?range=7&num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:trending",
"count": 3,
"results": [
{
"code": "FCDSS-120",
"title": "4 Hours of the Best Anal Licking Service: Sticking My Tongue in Your Asshole! [FALENO Maniac Special Selection]",
"titleJa": null,
"releaseDate": "2026-12-03",
"runtimeMins": 240,
"maker": "Faleno",
"label": "Faleno",
"series": "FALENO Compilation",
"categories": ["Anal Play", "Beautiful Girl", "…"],
"actresses": ["Ayaka Tomoda", "Chiharu Mitsuha", "…"],
"cover": "https://www.javdatabase.com/covers/full/1f/1fcdss00120pl.webp",
"rating": null,
"source": "javdatabase",
"url": "https://www.javdatabase.com/movies/fcdss-120/"
},
"…"
],
"meta": {
"sources": ["fanza", "javdatabase", "…"],
"scanned": 45,
"latencyMs": 23
}
}状态:200、400、401、402、429。
/discover/underrated
旧到容易被错过的影片,排名更看重评分。适合“被低估”栏目。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
minAgeDays | integer | 365 | 30–3650,最小天数 |
num | integer | 20 | 1–50 |
价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。
只有 javlibrary 有社区评分,候选池只取该索引:截止前 12 年取八个随机 30 天切片。无评分的先 丢弃;分数偏向更旧、评分更高、更完整的影片。
curl -s 'https://api.javinfo.dev/discover/underrated?num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:underrated",
"count": 3,
"results": [
{
"code": "IRCP-016",
"title": "The Price Of Chigasaki Lion Compliant With Me Naked",
"titleJa": "裸のわたしと言いなりの値段 茅ヶ崎りおん",
"releaseDate": "2014-07-13",
"runtimeMins": 120,
"maker": "Iromegane",
"label": "Iromegane",
"series": null,
"categories": ["Solowork", "Girl", "…"],
"actresses": ["Shiina Mayu (Chigasaki Rion)"],
"cover": "https://pics.dmm.co.jp/mono/movie/adult/ircp016/ircp016pl.jpg",
"rating": 10,
"source": "javlibrary",
"url": "https://www.javlibrary.com/en/javlijya24.html"
},
"…"
],
"meta": {
"sources": ["javlibrary"],
"scanned": 640,
"latencyMs": 63
}
}状态:200、400、401、402、429。
/discover/suggestion
搜索框的输入联想。一次调用返回番号、演员、标签和工作室,去重后混排,番号在前。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
q | string | 必填 | 至少 1 个字符 |
num | integer | 8 | 1–20 |
价格: num=8 时每 1,000 次 $0.40;num=20 时 $0.80。
每个条目说明自己是什么、旁边显示什么:
kind | value | label | extra |
|---|---|---|---|
code | 番号 | 同一个番号 | 英文标题;没有英文标题时用日文标题 |
idol | 演员 id | 姓名 | 图片 URL |
tag | 标签 slug | 同一个 slug | 计数 |
studio | 工作室名 | 同一个名字 | 计数 |
extra 可以为空。搜索复用影片索引的前缀匹配,没有单独的 n-gram 索引。建议按种类顺序(番号、
演员、标签、工作室)构建后截到 num。
curl -s 'https://api.javinfo.dev/discover/suggestion?q=ABP&num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"q": "ABP",
"count": 3,
"results": [
{
"kind": "code",
"value": "ABP-001",
"label": "ABP-001",
"extra": "Lola Misaki at Your Service Newest Beauty Salon Addict"
},
{
"kind": "code",
"value": "ABP-002",
"label": "ABP-002",
"extra": "NEW TOKYO Style 01 - Aikarin"
},
"…"
]
}缺少 q 会在处理器运行前被拒绝:
curl -s 'https://api.javinfo.dev/discover/suggestion' \
-H "x-javinfo-key: jvi_your_key_here"{
"defined": false,
"code": "BAD_REQUEST",
"status": 400,
"message": "Input validation failed",
"data": {
"issues": [
{
"expected": "string",
"code": "invalid_type",
"path": ["q"],
"message": "Invalid input: expected string, received undefined"
}
]
}
}状态:200、400、401、402、429。
/discover/similar
“更多类似的”。传入番号,返回排名邻居、种子卡片和分数。适合详情页。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
q | string | 必填 | 一个番号 |
num | integer | 12 | 1–50 |
价格: num=12 时每 1,000 次 $0.48;num ≤ 10 时 $0.40。
种子在各影片索引中解析。候选共享第一位演员或前三个标签之一,再按演员、标签、制作商、厂牌、
系列、时长和发行日期排名。种子不在 results 里;scores 按番号与 results 对齐,范围 0–1,
保留三位小数。
任何索引都不认识的番号是 404,不是空的 200。拼错不会计费。
curl -s 'https://api.javinfo.dev/discover/similar?q=ABP-002&num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:similar",
"count": 3,
"results": [
{
"code": "WPC-013",
"title": "WPC-013 WATER POLE Aikarin",
"titleJa": "WPC-013 WATER POLE あいかりん",
"releaseDate": "2023-03-20",
"runtimeMins": 128,
"maker": "Prestige",
"label": "WPC",
"series": "WATER POLE",
"categories": ["Hot Girl", "Sailor Suit", "…"],
"actresses": ["Aikarin"],
"cover": null,
"rating": null,
"source": "missav",
"url": null
},
"…"
],
"meta": {
"sources": ["fanza", "javdatabase", "…"],
"scanned": 180,
"latencyMs": 72
},
"seed": {
"code": "ABP-002",
"title": "NEW TOKYO Style 01 - Aikarin",
"titleJa": null,
"releaseDate": "2013-06-01",
"runtimeMins": 127,
"maker": "Prestige",
"label": "ABSOLUTELY PERFECT",
"series": "Tokyo Style",
"categories": ["Facial", "Handjob"],
"actresses": ["Aikarin"],
"cover": "https://pics.dmm.co.jp/digital/video/118abp00002/118abp00002pl.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"scores": [
{ "code": "WPC-013", "score": 0.5 },
{ "code": "MAS-110", "score": 0.496 },
"…"
]
}同一请求,未知番号:
curl -s 'https://api.javinfo.dev/discover/similar?q=ZZZZ-99999&num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"defined": false,
"code": "NOT_FOUND",
"status": 404,
"message": "no title found for \"ZZZZ-99999\""
}状态:200、400、401、402、404、429。
/discover/duel
API:/discover/duel
“选哪个”游戏的 A/B 一对。同一个 seed 让所有人看到同样的两张卡片。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
seed | string | 今天的 UTC 日期 | 任意字符串 |
genre | string | 无 | 精确的类型名 |
performer | string | 无 | 精确的演员名 |
价格: 每 1,000 次 $0.40,固定。没有页大小可调。
候选池是 DMM + FANZA、javdatabase、javlibrary 各自最新 40 部,按番号去重,只留已发行且有演员
的。genre 和 performer 收窄范围。带种子的 PRNG 挑两部并按番号排序,所有调用者的 a 和 b
都在同一侧。池随新片变化,种子只在该窗口内稳定。候选少于两个时 a 和 b 为空。
curl -s 'https://api.javinfo.dev/discover/duel?seed=42' \
-H "x-javinfo-key: jvi_your_key_here"{
"seed": "42",
"a": {
"code": "DSOD-124",
"title": "That absolute, total fatso made me come so many times it was embarrassing…",
"titleJa": "最低最悪なあのデブに恥ずかしいほど何度もイカされて…ションベン垂れ流す肉便器調教された言いなり美人清掃員 天川そら",
"releaseDate": "2026-11-06",
"runtimeMins": 141,
"maker": "Das",
"label": "Das",
"series": null,
"categories": ["Deep Throat", "Embarrassment", "…"],
"actresses": ["Sora Amakawa"],
"cover": "https://pics.dmm.co.jp/digital/video/dsod00124/dsod00124pl.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"b": {
"code": "VRKM-1944",
"title": "[VR] Getting Hooked on Sora Amakawa",
"titleJa": null,
"releaseDate": "2026-11-06",
"runtimeMins": 84,
"maker": "K M Produce",
"label": "K M Produce",
"series": "pond",
"categories": ["8KVR", "Beautiful Tits", "…"],
"actresses": ["Sora Amakawa"],
"cover": "https://www.javdatabase.com/covers/full/vr/vrkm01944pl.webp",
"rating": null,
"source": "javdatabase",
"url": "https://www.javdatabase.com/movies/vrkm-1944/"
}
}状态:200、401、402、429。
/discover/calendar
两个日期之间的发行,按天分组。适合日历。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
from | string | 今天 | YYYY-MM-DD |
to | string | 今天 + 30 天 | YYYY-MM-DD |
价格: 每 1,000 次 $0.40,固定。下面循环的每次调用都单独计费。
两个日期都包含。默认值独立:只设 from 也结束在 30 天后,查过去要两个都传。无发行的日期
省略,分组升序。每部影片都是完整卡片。
长区间会提前停止
每个来源每次最多返回 1,000 行,繁忙区间约 5 天就满。端点只返回完整的天,并说明停在哪里:
| 字段 | 含义 |
|---|---|
through | 完整覆盖的最后一天,YYYY-MM-DD。除非答案被截断,否则等于 to。 |
truncated | 当 through 之后的天被截掉时为 true。 |
from=2026-11-01&to=2026-11-14 对一次调用来说太长了:
curl -s 'https://api.javinfo.dev/discover/calendar?from=2026-11-01&to=2026-11-14' \
-H "x-javinfo-key: jvi_your_key_here"{
"from": "2026-11-01",
"to": "2026-11-14",
"through": "2026-11-05",
"truncated": true,
"count": 1011,
"days": [
{
"date": "2026-11-01",
"count": 109,
"releases": [
{
"code": "DANDYA-045",
"title": null,
"titleJa": "母親と行った銭湯でコッソリおちんちんをいじってくるお姉さんに逃げても追いかけられ何度も精子を飲まれてしまいました",
"releaseDate": "2026-11-01",
"runtimeMins": 175,
"maker": "DANDY",
"label": null,
"series": null,
"categories": [
"4K",
"Big Asses",
"Big Tits",
"…"
],
"actresses": [],
"cover": "https://pics.dmm.co.jp/digital/video/1dandya00045/1dandya00045pl.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"…"
]
},
"…"
],
"meta": {
"sources": [
"fanza",
"javdatabase",
"javlibrary",
"javbus",
"missav"
],
"scanned": 3136,
"latencyMs": 352
}
}这次答案包含 11 月 1 日到 5 日的 1,011 部影片。放得下的区间完整返回:
from=2026-11-01&to=2026-11-03 返回 "through": "2026-11-03" 和 "truncated": false。
要拿剩下的部分,把 from 设为 through 的次日再调用,重复到 truncated 为 false。第二次
调用是 from=2026-11-06&to=2026-11-14:
{
"from": "2026-11-06",
"to": "2026-11-14",
"through": "2026-11-14",
"truncated": false,
"count": 1101,
"days": [
"…"
],
"meta": {
"sources": [
"fanza",
"javdatabase",
"javbus",
"missav"
],
"scanned": 1957,
"latencyMs": 627
}
}同样的循环写成代码:
let from = '2026-11-01';
const to = '2026-11-14';
const days = [];
while (from <= to) {
const res = await fetch(
`https://api.javinfo.dev/discover/calendar?from=${from}&to=${to}`,
{ headers: { 'x-javinfo-key': KEY } },
);
const page = await res.json();
days.push(...page.days);
if (!page.truncated) break;
const next = new Date(`${page.through}T00:00:00Z`);
next.setUTCDate(next.getUTCDate() + 1);
from = next.toISOString().slice(0, 10);
}如果单日就超过上限,那天部分返回,through 为当天,循环继续。
状态:200、400、401、402、429。
/discover/tags
API:/discover/tags
近期窗口内的标签计数,从高到低。适合“热门标签”。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
range | integer | 30 | 1–365,向前查看的天数 |
num | integer | 30 | 1–100 |
价格: num=30 时每 1,000 次 $1.20;num ≤ 10 时 $0.40。
计数来自 DMM + FANZA 和 javdatabase 的分面。标签先规范化,拼写变体会合并。值是 slug,不是 显示名。
curl -s 'https://api.javinfo.dev/discover/tags?range=7&num=5' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:tags",
"count": 5,
"results": [
{ "tag": "featured-actress", "count": 3476 },
{ "tag": "hi-def", "count": 2834 },
"…"
],
"meta": {
"sources": ["fanza", "javdatabase"],
"scanned": 0,
"latencyMs": 117
}
}状态:200、400、401、402、429。
/discover/studios
一个路由,两种形状。无 q 返回按 range 内产量排名的工作室目录;有 q 返回该工作室的作品,
最新优先。kind 指明是哪种:directory 或 catalogue。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
q | string | 无 | 精确的工作室名;切换到作品模式 |
range | integer | 365 | 30–3650,仅目录模式 |
num | integer | 目录 30,作品 20 | 目录 1–100;作品上限 50 |
page | integer | 1 | 从 1 起,仅作品模式 |
价格: 目录 num=30 时每 1,000 次 $1.20;作品 num=20 时 $0.80。作品 num 上限 50,
最高 $2.00。
q 存在时忽略 range,否则忽略 page。作品模式下 total 是该工作室影片数的估计值,
翻页以它为准。
curl -s 'https://api.javinfo.dev/discover/studios?num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"kind": "directory",
"source": "discover:studios",
"count": 3,
"results": [
{ "studio": "MOODYZ", "count": 2688 },
{ "studio": "S1 NO.1 STYLE", "count": 2382 },
"…"
],
"meta": {
"sources": ["fanza"],
"scanned": 0,
"latencyMs": 416
}
}curl -s 'https://api.javinfo.dev/discover/studios?q=S1%20NO.1%20STYLE&num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"kind": "catalogue",
"source": "discover:studio",
"studio": "S1 NO.1 STYLE",
"total": 25713,
"count": 3,
"results": [
{
"code": "K9SNOS349",
"title": null,
"titleJa": "【数量限定】特大号新人 希望みう 104cm Iの素顔 濃厚なキスして、本能で交わって、ありのままを曝け出す。 (ブルーレイディスク) 生写真3枚セット",
"releaseDate": "2026-11-25",
"runtimeMins": 120,
"maker": "S1 NO.1 STYLE",
"label": "S1 NO.1 STYLE",
"series": null,
"categories": ["Big Tits", "Featured Actress", "…"],
"actresses": ["希望みう"],
"cover": "https://pics.dmm.co.jp/mono/movie/adult/k9snos349/k9snos349ps.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"…"
],
"meta": {
"sources": ["fanza"],
"scanned": 3,
"latencyMs": 7
}
}状态:200、400、401、402、429。
/discover/series
API:/discover/series
单个系列的作品,最新优先。调用者打开影片后,用它列出同系列其他条目。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
q | string | 必填 | 精确的系列名 |
num | integer | 20 | 1–50 |
page | integer | 1 | 从 1 起 |
价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。
q 是 DMM + FANZA 索引上系列名的精确匹配,不是搜索。传入目录存储的字符串,可从任意影片的
series 读到。部分名称或不同拼写返回空的 200 和 count: 0,不是 404。total 是估计值。
curl -s 'https://api.javinfo.dev/discover/series?q=Unfaithful%20Housewife&num=2' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:series",
"count": 2,
"results": [
{
"code": "JUKD-481",
"title": "Unfaithful Housewife 5",
"titleJa": "不倫妻5",
"releaseDate": "2006-12-25",
"runtimeMins": 87,
"maker": "MADONNA",
"label": "Madonna",
"series": "Unfaithful Housewife",
"categories": ["69", "Adultery", "…"],
"actresses": ["Anna Muto", "Hiromi Yuki", "…"],
"cover": "https://pics.dmm.co.jp/digital/video/jukd00481/jukd00481pl.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"…"
],
"meta": {
"sources": ["fanza"],
"scanned": 2,
"latencyMs": 14
},
"series": "Unfaithful Housewife",
"total": 7
}状态:200、400、401、402、429。
/discover/genres
API:/discover/genres
整个目录的类型分类和计数。适合筛选菜单。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
num | integer | 60 | 1–200 |
价格: num=60 时每 1,000 次 $2.40;num ≤ 10 时 $0.40;num=200 时 $8.00。
值是显示名(Featured Actress),不像 /discover/tags 返回 slug。计数只来自 DMM + FANZA,
其他来源的影片不计入。
curl -s 'https://api.javinfo.dev/discover/genres?num=5' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:genres",
"count": 5,
"results": [
{ "genre": "Featured Actress", "count": 589656 },
{ "genre": "Creampie", "count": 438721 },
"…"
],
"meta": {
"sources": ["fanza"],
"scanned": 0,
"latencyMs": 163
}
}状态:200、400、401、402、429。
/discover/random
API:/discover/random
符合可选筛选的随机影片。适合“随便看看”。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
genre | string | 无 | 精确的类型名 |
performer | string | 无 | 精确的演员名 |
studio | string | 无 | 精确的工作室名 |
censored | string | 无 | censored 或 uncensored |
num | integer | 10 | 1–50 |
价格: num=10 时每 1,000 次 $0.40;num=50 时 $2.00。
筛选按 AND 组合。抽取不是均匀遍历:随机读五个月份,各取一个随机偏移,打乱候选池,筛得过窄 时补足。连续调用返回不相关影片,不是连续番号。
censored 只有设成 uncensored 才生效,此时读 javbus 的无码分区,而非 DMM + FANZA。传
censored 与省略相同。无缓存,每次重新抽样。响应没有 meta 和 source。
curl -s 'https://api.javinfo.dev/discover/random?num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"count": 3,
"results": [
{
"code": "JUY-689",
"title": "A Former Race Queen Married Woman Ai Izumi 32 Years Old Her Adult Video Debut!!",
"titleJa": "元レースクイーンの人妻 和泉藍 32歳 AVDebut!!",
"releaseDate": "2018-11-25",
"runtimeMins": 120,
"maker": "MADONNA",
"label": "Madonna",
"series": null,
"categories": ["Debut", "Digital Mosaic", "…"],
"actresses": ["Ai Izumi"],
"cover": "https://pics.dmm.co.jp/digital/video/juy00689/juy00689pl.jpg",
"rating": null,
"source": "fanza",
"url": null
},
"…"
]
}加上无码筛选条件:
curl -s 'https://api.javinfo.dev/discover/random?censored=uncensored&num=2' \
-H "x-javinfo-key: jvi_your_key_here"{
"count": 2,
"results": [
{
"code": "KING-1009",
"title": null,
"titleJa": "Computer Fantasy",
"releaseDate": "2004-08-24",
"runtimeMins": 90,
"maker": "POPMedia",
"label": null,
"series": null,
"categories": [],
"actresses": [],
"cover": "https://www.javbus.com/imgs/cover/qq6_b.jpg",
"rating": null,
"source": "javbus",
"url": "https://www.javbus.com/en/KING1009"
},
"…"
]
}状态:200、400、401、402、429。
/discover/for-you
按账户的搜索历史推荐。同一账户的两个密钥共享历史,因为历史按用户存储,不按密钥。
| 参数 | 类型 | 默认值 | 范围 |
|---|---|---|---|
num | integer | 20 | 1–50 |
lookback | integer | 20 | 1–100,读取最近多少次搜索 |
价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。
只有成功的 /movie、/query 和 /idols 调用算历史。处理器读最近 lookback 行,留最多五个
不同查询,取头部命中的标签,再挑共享标签的近期影片。/discover/trending 的热门分数决定顺序。
basis 是解释,随响应返回,方便展示:用到的查询、推导出的标签和 fallback。没有可用历史时,
fallback 为 true,答案是最近 30 天的新片。
curl -s 'https://api.javinfo.dev/discover/for-you?num=3' \
-H "x-javinfo-key: jvi_your_key_here"{
"source": "discover:for-you",
"count": 1,
"results": [
{
"code": "FC2-PPV-4973873",
"title": "FC2-PPV-4973873 [50% OFF for one week] [First time] A 35-year-old married bank employee with a cold demeanor. She's unp…",
"titleJa": "FC2-PPV-4973873 【一週間50%OFF】【初】35歳既婚の塩対応銀行員。近寄りがたいから一転、バキュームフェラで濃厚ザーメンを搾り取る。口内射精、ごっくん合計2発。",
"releaseDate": "2026-09-09",
"runtimeMins": 35,
"maker": "Fc2",
"label": null,
"series": null,
"categories": ["Wife", "Adultery", "…"],
"actresses": [],
"cover": null,
"rating": null,
"source": "missav",
"url": null
}
],
"meta": {
"sources": ["missav"],
"scanned": 1,
"latencyMs": 115
},
"basis": {
"queries": ["JQJ-002", "JUR-851", "…"],
"tags": ["featured-actress", "big-tits", "…"],
"fallback": false
}
}状态:200、400、401、402、429。
/discover/stats
API:/discover/stats
按来源统计的目录总量,带时间戳。无参数。
价格: 每 1,000 次调用 $0.40,固定。
计数是索引文档数,两个来源上的影片算两次。asOf 是读取时间。公开的 GET /stats
免密钥、缓存一天,但报告提供商计数:FANZA 和 DMM 分开,没有总量。
curl -s 'https://api.javinfo.dev/discover/stats' \
-H "x-javinfo-key: jvi_your_key_here"{
"total": 3980531,
"sources": {
"fanza": 1759469,
"javdatabase": 505464,
"javlibrary": 430950,
"javbus": 663879,
"missav": 519017,
"idols": 101752
},
"asOf": "2026-11-06T18:30:56.778Z"
}状态:200、401、402、429。
错误
输入先校验。参数不对返回 400,带 code: "BAD_REQUEST"、message: "Input validation failed"
和指出参数的 issues 数组。这个接口从不返回 422:超范围是 400,类型不对也是 400。range
是天数,所以 range=7 可以,range=week 是 400,issues[].path 为 ["range"]。下面是
/discover/trending?num=500 的响应体,500 超过最大值 50:
{
"defined": false,
"code": "BAD_REQUEST",
"status": 400,
"message": "Input validation failed",
"data": {
"issues": [
{
"origin": "number",
"code": "too_big",
"maximum": 50,
"inclusive": true,
"path": ["num"],
"message": "Too big: expected number to be <=50"
}
]
}
}缺密钥与被拒密钥的响应体不同。没有密钥:
{
"defined": false,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Unauthorized"
}网关不接受的密钥:
{ "error": "invalid api key" }额度不足。不扣费,Retry-After 为一小时:
{
"defined": false,
"code": "PAYMENT_REQUIRED",
"status": 402,
"message": "insufficient balance"
}超过账户的每分钟上限。Retry-After 以秒为单位:
{ "error": "rate limit exceeded" }404 只属于 /discover/similar,上面已展示。其他发现端点不返回它。
哪些是免费的
只有全新的 200 收费。以下免费:
- 缓存命中。响应带
X-Cache: HIT,不扣额度。/discover/random无缓存,永不命中。 - 任何
4xx。失败的请求从不计费。 - 降级的答案。上游索引读取失败时,API 用手头数据作答,把
X-Degraded设为失败次数,不收费 也不缓存。响应偏少时检查该响应头。
X-Balance-Remaining 是调用后余额。