Web应用清单检查器 API

API ID 14245

提供一个页面网址并获取该网站的Web应用清单的JSON报告 清单被定位 提取和验证 结果列出编码问题 总体评分 A+到F 一个分数

API 文档

端点

请求
获取页面并跟踪最多5个重定向 查找清单链接标签 获取清单并验证它 结果缓存6小时 fresh参数绕过缓存 没有协议的值如example.com被视为https
Endpoint ID: 35363
GET https://zylalabs.com/api/14245/web+app+manifest+checker+api/35363/check+the+web+app+manifest+of+a+url
输入参数

检查 URL 的 Web 应用清单 — 端点功能

对象 描述
url 必需 Page to inspect, e.g. https://web.dev. Aliases u, link, target, site, website, domain and host are also accepted (case-insensitive).
fresh 可选 Set to 1 to bypass the 6-hour result cache.

剩余免费测试请求:3 / 3。


输入参数

url
fresh
API 示例响应
JSON
{
    "url": "https://web.dev/",
    "finalUrl": "https://web.dev/",
    "statusCode": 200,
    "cached": false,
    "checkedAt": "2026-10-13T23:42:25.027Z",
    "note": "Service workers and icon file reachability are not evaluated; only the page HTML and the manifest JSON are read.",
    "found": true,
    "manifestUrl": "https://web.dev/_pwa/web/manifest.json",
    "manifestStatus": 200,
    "page": {
        "manifestLinks": 1,
        "themeColorMeta": "#3740ff",
        "viewport": "width=device-width, initial-scale=1",
        "appleTouchIcon": true,
        "https": true
    },
    "installability": {
        "installable": true,
        "blockers": []
    },
    "grade": "B",
    "score": 86,
    "summary": {
        "errors": 0,
        "warnings": 1,
        "infos": 4
    },
    "manifestSummary": {
        "name": "web.dev",
        "shortName": "web.dev",
        "id": null,
        "startUrl": "https://web.dev/",
        "scope": null,
        "display": "standalone",
        "displayOverride": null,
        "orientation": "portrait",
        "themeColor": "#3740ff",
        "backgroundColor": "#fff",
        "lang": null,
        "dir": null,
        "iconCount": 8,
        "hasMaskableIcon": false,
        "screenshotCount": 0,
        "shortcutCount": 0
    },
    "icons": [
        {
            "src": "icons/icon-72x72.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-72x72.png",
            "sizes": "72x72",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-96x96.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-96x96.png",
            "sizes": "96x96",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-128x128.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-128x128.png",
            "sizes": "128x128",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-144x144.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-144x144.png",
            "sizes": "144x144",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-152x152.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-152x152.png",
            "sizes": "152x152",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-192x192.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-192x192.png",
            "sizes": "192x192",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-384x384.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-384x384.png",
            "sizes": "384x384",
            "type": "image/png",
            "purpose": "any"
        },
        {
            "src": "icons/icon-512x512.png",
            "resolved": "https://web.dev/_pwa/web/icons/icon-512x512.png",
            "sizes": "512x512",
            "type": "image/png",
            "purpose": "any"
        }
    ],
    "issues": [
        {
            "severity": "info",
            "code": "description_missing",
            "message": "No \"description\"; Chrome shows it in the richer install dialog and app stores use it."
        },
        {
            "severity": "info",
            "code": "id_missing",
            "message": "No \"id\"; Chrome falls back to \"start_url\" as the app identity, so changing start_url later makes it a different app. Set an explicit \"id\"."
        },
        {
            "severity": "info",
            "code": "lang_missing",
            "message": "No \"lang\"; screen readers and translation tools cannot tell the language of \"name\" and \"description\"."
        },
        {
            "severity": "warning",
            "code": "no_maskable_icon",
            "message": "No icon with purpose \"maskable\"; Android launchers will shrink your icon onto a white circle or square instead of filling the adaptive shape."
        },
        {
            "severity": "info",
            "code": "screenshots_missing",
            "message": "No \"screenshots\"; Chrome shows them in the richer install dialog, which improves installs."
        }
    ]
}
检查 URL 的 Web 应用清单 — 代码片段

curl --location --request GET 'https://zylalabs.com/api/14245/web+app+manifest+checker+api/35363/check+the+web+app+manifest+of+a+url?url=https://web.dev&fresh=1' --header 'Authorization: Bearer YOUR_API_KEY' 


    
请求
验证您提供的清单,无需外部请求。传递 manifestUrl 以解析相对 URL 并启用同源检查
Endpoint ID: 35364
POST https://zylalabs.com/api/14245/web+app+manifest+checker+api/35364/validate+manifest+json+offline
输入参数

离线验证清单 JSON — 端点功能

对象 描述
请求体 必需 Json

剩余免费测试请求:3 / 3。


输入参数

API 示例响应
JSON
{
    "grade": "C",
    "score": 74,
    "summary": {
        "errors": 0,
        "warnings": 2,
        "infos": 6
    },
    "installability": {
        "installable": true,
        "blockers": []
    },
    "assumptions": {
        "manifestUrl": "https://example.com/manifest.webmanifest",
        "note": "Validated offline; the page HTTPS requirement is not evaluated."
    },
    "manifestSummary": {
        "name": "My App",
        "shortName": "App",
        "id": null,
        "startUrl": "https://example.com/",
        "scope": null,
        "display": "standalone",
        "displayOverride": null,
        "orientation": null,
        "themeColor": null,
        "backgroundColor": null,
        "lang": null,
        "dir": null,
        "iconCount": 1,
        "hasMaskableIcon": false,
        "screenshotCount": 0,
        "shortcutCount": 0
    },
    "icons": [
        {
            "src": "/icon-192.png",
            "resolved": "https://example.com/icon-192.png",
            "sizes": "192x192",
            "type": "image/png",
            "purpose": "any"
        }
    ],
    "issues": [
        {
            "severity": "info",
            "code": "description_missing",
            "message": "No \"description\"; Chrome shows it in the richer install dialog and app stores use it."
        },
        {
            "severity": "info",
            "code": "id_missing",
            "message": "No \"id\"; Chrome falls back to \"start_url\" as the app identity, so changing start_url later makes it a different app. Set an explicit \"id\"."
        },
        {
            "severity": "info",
            "code": "theme_color_missing",
            "message": "No \"theme_color\"; the browser cannot tint the title bar to match your app."
        },
        {
            "severity": "info",
            "code": "background_color_missing",
            "message": "No \"background_color\"; the splash screen will use a default background."
        },
        {
            "severity": "info",
            "code": "lang_missing",
            "message": "No \"lang\"; screen readers and translation tools cannot tell the language of \"name\" and \"description\"."
        },
        {
            "severity": "warning",
            "code": "icon_512_missing",
            "message": "No icon of at least 512x512 with purpose \"any\"; Chrome uses it for the splash screen and install dialog."
        },
        {
            "severity": "warning",
            "code": "no_maskable_icon",
            "message": "No icon with purpose \"maskable\"; Android launchers will shrink your icon onto a white circle or square instead of filling the adaptive shape."
        },
        {
            "severity": "info",
            "code": "screenshots_missing",
            "message": "No \"screenshots\"; Chrome shows them in the richer install dialog, which improves installs."
        }
    ],
    "checkedAt": "2026-10-13T18:16:06.181Z"
}
离线验证清单 JSON — 代码片段

curl --location --request POST 'https://zylalabs.com/api/14245/web+app+manifest+checker+api/35364/validate+manifest+json+offline' --header 'Authorization: Bearer YOUR_API_KEY' 

--data-raw '{"manifest":{"name":"My App","short_name":"App","start_url":"/","display":"standalone","icons":[{"src":"/icon-192.png","sizes":"192x192","type":"image/png"}]},"manifestUrl":"https://example.com/manifest.webmanifest"}'

    

API 访问密钥和身份验证

注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 Web应用清单检查器 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。

标头
标头 描述
授权 必需 应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。

无长期承诺。随时升级、降级或取消。 免费试用包括最多 50 个请求。

起价
$10,000/年


  • 自定义数量
  • 自定义速率限制
  • 专业客户支持
  • 实时 API 监控

概览

给定一个页面 URL,返回该网站的 Web 应用清单的 JSON 报告:清单被定位、获取和验证,结果列出编码问题、总体评分(A+ 到 F)、得分

一般常见问题

Zyla API Hub 就像一个大型 API 商店,您可以在一个地方找到数千个 API。我们还为所有 API 提供专门支持和实时监控。注册后,您可以选择要使用的 API。请记住,每个 API 都需要自己的订阅。但如果您订阅多个 API,您将为所有这些 API 使用相同的密钥,使事情变得更简单。
价格以 USD(美元)、EUR(欧元)、CAD(加元)、AUD(澳元)和 GBP(英镑)列出。我们接受所有主要的借记卡和信用卡。我们的支付系统使用最新的安全技术,由 Stripe 提供支持,Stripe 是世界上最可靠的支付公司之一。如果您在使用卡片付款时遇到任何问题,请通过 [email protected]

此外,如果您已经以这些货币中的任何一种(USD、EUR、CAD、AUD、GBP)拥有有效订阅,该货币将保留用于后续订阅。只要您没有任何有效订阅,您可以随时更改货币。
定价页面上显示的本地货币基于您 IP 地址的国家/地区,仅供参考。实际价格以 USD(美元)为单位。当您付款时,即使您在我们的网站上看到以本地货币显示的等值金额,您的卡片对账单上也会以美元显示费用。这意味着您不能直接使用本地货币付款。
有时,银行可能会因其欺诈保护设置而拒绝收费。我们建议您首先联系您的银行,检查他们是否阻止了我们的收费。此外,您可以访问账单门户并更改关联的卡片以进行付款。如果这些方法不起作用并且您需要进一步帮助,请通过 [email protected]
价格由月度或年度订阅决定,具体取决于所选计划。
API 调用根据成功请求从您的计划中扣除。每个计划都包含您每月可以进行的特定数量的调用。只有成功的调用(由状态 200 响应指示)才会计入您的总数。这确保失败或不完整的请求不会影响您的月度配额。
Zyla API Hub 采用月度订阅系统。您的计费周期将从您购买付费计划的那一天开始,并在下个月的同一日期续订。因此,如果您想避免未来的费用,请提前取消订阅。
要升级您当前的订阅计划,只需转到 API 的定价页面并选择您要升级到的计划。升级将立即生效,让您立即享受新计划的功能。请注意,您之前计划中的任何剩余调用都不会转移到新计划,因此在升级时请注意这一点。您将被收取新计划的全部金额。
要检查您本月剩余多少 API 调用,请参考响应标头中的 "X-Zyla-API-Calls-Monthly-Remaining" 字段。例如,如果您的计划允许每月 1,000 个请求,而您已使用 100 个,则响应标头中的此字段将显示 900 个剩余调用。
要查看您的计划允许的最大 API 请求数,请检查 "X-Zyla-RateLimit-Limit" 响应标头。例如,如果您的计划包括每月 1,000 个请求,此标头将显示 1,000。
"X-Zyla-RateLimit-Reset" 标头显示您的速率限制重置之前的秒数。这告诉您何时您的请求计数将重新开始。例如,如果它显示 3,600,则意味着还有 3,600 秒直到限制重置。
是的,您可以随时通过访问您的账户并在账单页面上选择取消选项来取消您的计划。请注意,升级、降级和取消会立即生效。此外,取消后,您将不再有权访问该服务,即使您的配额中还有剩余调用。
为了让您有机会在没有任何承诺的情况下体验我们的 API,我们提供 7 天免费试用,允许您免费进行最多 50 次 API 调用。此试用只能使用一次,因此我们建议将其应用于您最感兴趣的 API。虽然我们的大多数 API 都提供免费试用,但有些可能不提供。试用在 7 天后或您进行了 50 次请求后结束,以先发生者为准。如果您在试用期间达到 50 次请求限制,您需要"开始您的付费计划"以继续发出请求。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。或者,如果您在第 7 天之前不取消订阅,您的免费试用将结束,您的计划将自动计费,授予您访问计划中指定的所有 API 调用的权限。请记住这一点以避免不必要的费用。
7 天后,您将被收取试用期间订阅的计划的全额费用。因此,在试用期结束前取消很重要。因忘记及时取消而提出的退款请求不被接受。
当您订阅 API 免费试用时,您可以进行最多 50 次 API 调用。如果您希望超出此限制进行额外的 API 调用,API 将提示您执行"开始您的付费计划"。您可以在个人资料中的订阅 -> 选择您订阅的 API -> 定价标签下找到"开始您的付费计划"按钮。
付款订单在每月 20 日至 30 日之间处理。如果您在 20 日之前提交请求,您的付款将在此时间范围内处理。
您可以通过我们的聊天渠道联系我们以获得即时帮助。我们始终在线,时间为上午 8 点至下午 5 点(EST)。如果您在该时间之后联系我们,我们将尽快回复您。此外,您可以通过 [email protected]

相关 API