{
"status": "success",
"message": "SignedURL Pro API is running.",
"time": "2026-07-16T13:47:13.632Z"
}
curl --location --request GET 'https://zylalabs.com/api/13197/securegate+dynamic+asset+access+api/26929/health+check' --header 'Authorization: Bearer YOUR_API_KEY'
{
"status": "success",
"accessUrl": "https://signedurl-gatekeeper.cancap.workers.dev/access/eyJmaWxlVXJsIjoiaHR0cHM6Ly9weXBpLm9yZy9weXBpL3JlcXVlc3RzL2pzb24iLCJmaWxlSWQiOiJzYW1wbGUtZmlsZS0xIiwiaXAiOm51bGwsInVhSGFzaCI6bnVsbCwiZXhwIjoxNzg0MTQ5NTcxLCJtYXhVc2VzIjoyLCJub25jZSI6Ijg4YzllMDJmYjU0MGYyYjZjNzA2MGMzMWY1NmJjMDM4In0.feba462a71fbe444d3b78bf7c204c815ee37579a1a7c476c02aad12038a48a49",
"fileId": "sample-file-1",
"expiresAt": "2026-07-15T21:06:11.000Z",
"maxUses": 2,
"ipBound": false,
"clientBound": false
}
curl --location --request POST 'https://zylalabs.com/api/13197/securegate+dynamic+asset+access+api/26930/generate+signed+access+link' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{
"fileUrl": "https://pypi.org/pypi/requests/json",
"fileId": "sample-file-1",
"ttlSeconds": 900,
"maxUses": 2,
"bindIp": false,
"bindClient": false
}'
{"info":{"author":null,"author_email":"Kenneth Reitz <[email protected]>","bugtrack_url":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Web Environment","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Natural Language :: English","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Programming Language :: Python :: 3.15","Programming Language :: Python :: Free Threading :: 2 - Beta","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Internet :: WWW/HTTP","Topic :: Software Development :: Libraries"],"description":"# Requests\n\n[](https://pypi.org/project/requests/)\n[](https://pypi.org/project/requests)\n[](https://pepy.tech/project/requests)\n[](https://github.com/psf/requests/graphs/contributors)\n[](https://requests.readthedocs.io)\n\n**Requests** is a simple, yet elegant, HTTP library.\n\n```python\n>>> import requests\n>>> r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))\n>>> r.status_code\n200\n>>> r.headers['content-type']\n'application/json; charset=utf8'\n>>> r.encoding\n'utf-8'\n>>> r.text\n'{\"authenticated\": true, ...'\n>>> r.json()\n{'authenticated': True, ...}\n```\n\nRequests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your `PUT` & `POST` data — but nowadays, just use the `json` method!\n\nRequests is one of the most downloaded Python packages today, pulling in around `300M downloads / week` — according to GitHub, Requests is currently [depended upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D) by `4,000,000+` repositories.\n\n## Installing Requests and Supported Versions\n\nRequests is available on PyPI:\n\n```console\n$ python -m pip install requests\n```\n\nRequests officially supports Python 3.10+.\n\n## Supported Features & Best–Practices\n\nRequests is ready for the demands of building robust and reliable HTTP–speaking applications, for the needs of today.\n\n- Keep-Alive & Connection Pooling\n- International Domains and URLs\n- Sessions with Cookie Persistence\n- Browser-style TLS/SSL Verification\n- Basic & Digest Authentication\n- Familiar `dict`–like Cookies\n- Automatic Content Decompression and Decoding\n- Multi-part File Uploads\n- SOCKS Proxy Support\n- Connection Timeouts\n- Streaming Downloads\n- Automatic honoring of `.netrc`\n- Chunked HTTP Requests\n\n## Cloning the repository\n\nWhen cloning the Requests repository, you may need to add the `-c\nfetch.fsck.badTimezone=ignore` flag to avoid an error about a bad commit timestamp (see\n[this issue](https://github.com/psf/requests/issues/2690) for more background):\n\n```shell\ngit clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git\n```\n\nYou can also apply this setting to your global Git config:\n\n```shell\ngit config --global fetch.fsck.badTimezone ignore\n```\n\n---\n\n[](https://kennethreitz.org) [](https://www.python.org/psf)\n","description_content_type":"text/markdown","docs_url":null,"download_url":null,"downloads":{"last_day":-1,"last_month":-1,"last_week":-1},"dynamic":["License-File"],"home_page":null,"keywords":null,"license":"Apache-2.0","license_expression":null,"license_files":["LICENSE","NOTICE"],"maintainer":null,"maintainer_email":"Ian Stapleton Cordasco <[email protected]>, Nate Prewitt <[email protected]>","name":"requests","package_url":"https://pypi.org/project/requests/","platform":null,"project_url":"https://pypi.org/project/requests/","project_urls":{"Documentation":"https://requests.readthedocs.io","Source":"https://github.com/psf/requests"},"provides_extra":["security","socks","use-chardet-on-py3"],"release_url":"https://pypi.org/project/requests/2.34.2/","requires_dist":["charset_normalizer<4,>=2","idna<4,>=2.5","urllib3<3,>=1.26","certifi>=2023.5.7","PySocks!=1.5.7,>=1.5.6; extra == \"socks\"","chardet<8,>=3.0.2; extra == \"use-chardet-on-py3\""],"requires_python":">=3.10","summary":"Python HTTP for Humans.","version":"2.34.2","yanked":false,"yanked_reason":null},"last_serial":37059094,"ownership":{"organization":null,"roles":[{"role":"Owner","user":"Lukasa"},{"role":"Owner","user":"graffatcolmingov"},{"role":"Owner","user":"nateprewitt"}]},"releases":{"0.0.1":[],"0.10.0":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"62350230421b8c4efad6624518028163329ad0c2df9e58e6b3bee013427bf8f6","md5":"c90a48af18eb4170dbe4832c1104440c","sha256":"210a82e678c45d433a4ad1f105974b3102a8ab5198872dc0a3238a8750d4c65e"},"downloads":-1,"filename":"requests-0.10.0.tar.gz","has_sig":false,"md5_digest":"c90a48af18eb4170dbe4832c1104440c","packagetype":"sdist","python_version":"source","requires_python":null,"size":62046,"upload_time":"2012-01-22T05:08:17","upload_time_iso_8601":"2012-01-22T05:08:17.091441Z","url":"https://files.pythonhosted.org/packages/62/35/0230421b8c4efad6624518028163329ad0c2df9e58e6b3bee013427bf8f6/requests-0.10.0.tar.gz","yanked":false,"yanked_reason":null}],"0.10.1":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"b456ba2d803383ec32d70f8faa7df5eb37ee9b3fc662ff68b7ab01ad9740b83a","md5":"699147d2143bff95238befa58980b912","sha256":"da6031575a30c7b65ea99465183468349b3645e6bf5322e49d53f565b27ed2b5"},"downloads":-1,"filename":"requests-0.10.1.tar.gz","has_sig":false,"md5_digest":"699147d2143bff95238befa58980b912","packagetype":"sdist","python_version":"source","requires_python":null,"size":63234,"upload_time":"2012-01-23T08:22:52","upload_time_iso_8601":"2012-01-23T08:22:52.352375Z","url":"https://files.pythonhosted.org/packages/b4/56/ba2d803383ec32d70f8faa7df5eb37ee9b3fc662ff68b7ab01ad9740b83a/requests-0.10.1.tar.gz","yanked":false,"yanked_reason":null}],"0.10.2":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"581e6b84552b6553f5beaf7cb0fe15115e7e4673326ed9188ad5338559ee8285","md5":"47c3cf85a0112d423137b43989663bef","sha256":"1546ef1e291ae337086369b621096fb0f69f88f6f67f60b1f6b7c18d1ca278e1"},"downloads":-1,"filename":"requests-0.10.2.tar.gz","has_sig":false,"md5_digest":"47c3cf85a0112d423137b43989663bef","packagetype":"sdist","python_version":"source","requires_python":null,"size":60158,"upload_time":"2012-02-15T09:48:52","upload_time_iso_8601":"2012-02-15T09:48:52.830436Z","url":"https://files.pythonhosted.org/packages/58/1e/6b84552b6553f5beaf7cb0fe15115e7e4673326ed9188ad5338559ee8285/requests-0.10.2.tar.gz","yanked":false,"yanked_reason":null}],"0.10.3":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"014439988315e036b79fe70428273053617266bf20d1363e91082346fae8450d","md5":"a055af00593f4828c3becd0ccfab503f","sha256":"8eeb24328304b015cbd59a49670e2738b77034b225b566729ddb19941899e490"},"downloads":-1,"filename":"requests-0.10.3.tar.gz","has_sig":false,"md5_digest":"a055af00593f4828c3becd0ccfab503f","packagetype":"sdist","python_version":"source","requires_python":null,"size":60493,"upload_time":"2012-02-20T20:10:57","upload_time_iso_8601":"2012-02-20T20:10:57.584946Z","url":"https://files.pythonhosted.org/packages/01/44/39988315e036b79fe70428273053617266bf20d1363e91082346fae8450d/requests-0.10.3.tar.gz","yanked":false,"yanked_reason":null}],"0.10.4":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"94ac5fa21e435ba8050d14db92ce29763c28196b727d4079dc608d39177fbf9b","md5":"5e465e9e739bcc9f71935ca4e9706168","sha256":"2ad4cc51d7595ca6f97373a0d697999e0cbdbbf1ba665d18f0f3dcec12b8be77"},"downloads":-1,"filename":"requests-0.10.4.tar.gz","has_sig":false,"md5_digest":"5e465e9e739bcc9f71935ca4e9706168","packagetype":"sdist","python_version":"source","requires_python":null,"size":60889,"upload_time":"2012-02-20T22:21:31","upload_time_iso_8601":"2012-02-20T22:21:31.091713Z","url":"https://files.pythonhosted.org/packages/94/ac/5fa21e435ba8050d14db92ce29763c28196b727d4079dc608d39177fbf9b/requests-0.10.4.tar.gz","yanked":false,"yanked_reason":null}],"0.10.6":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"b41f8f5430040fcf4391dc5bd324424a569e2e0d96595952b21eb82403602d98","md5":"c889401445de3cbbac98509208a73b83","sha256":"31134b4f35951730dcce59f2af334478b68caa5728902a1d6bd5e115ec677d8b"},"downloads":-1,"filename":"requests-0.10.6.tar.gz","has_sig":false,"md5_digest":"c889401445de3cbbac98509208a73b83","packagetype":"sdist","python_version":"source","requires_python":null,"size":61673,"upload_time":"2012-02-26T05:17:54","upload_time_iso_8601":"2012-02-26T05:17:54.135905Z","url":"https://files.pythonhosted.org/packages/b4/1f/8f5430040fcf4391dc5bd324424a569e2e0d96595952b21eb82403602d98/requests-0.10.6.tar.gz","yanked":false,"yanked_reason":null}],"0.10.7":[{"comment_text":"","core-metadata":false,"digests":{"blake2b_256":"c5cd0597f9c040db24ca6d23cc74faa102554cb0a93bdbffb855d7749547921f","md5":"a3ac9d431981dcfd592fd0f35c499e4a","sha256":"80f32a74bed8cf081a3a25512f8725e09ceda217101ea706efced262bb05aec6"},"downloads":-1,"filename":"requests-0.10.7.tar.gz","has_sig":false,"md5_digest":"a3ac9d431981dcfd592fd0f35c499e4a"}]},"_note":"Response truncated for documentation purposes"}
curl --location --request GET 'https://zylalabs.com/api/13197/securegate+dynamic+asset+access+api/26931/access+protected+file' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw 'eyJmaWxlVXJsIjoiaHR0cHM6Ly9weXBpLm9yZy9weXBpL3JlcXVlc3RzL2pzb24iLCJmaWxlSWQiOiJzYW1wbGUtZmlsZS0xIiwiaXAiOm51bGwsInVhSGFzaCI6bnVsbCwiZXhwIjoxNzg0MTQ5NTcxLCJtYXhVc2VzIjoyLCJub25jZSI6Ijg4YzllMDJmYjU0MGYyYjZjNzA2MGMzMWY1NmJjMDM4In0.feba462a71fbe444d3b78bf7c204c815ee37579a1a7c476c02aad12038a48a49'
{
"status": "success",
"valid": true,
"fileId": "sample-file-1",
"expiresAt": "2026-07-15T21:06:11.000Z",
"secondsRemaining": 395,
"usesRemaining": 1,
"ipBound": false,
"clientBound": false
}
curl --location --request GET 'https://zylalabs.com/api/13197/securegate+dynamic+asset+access+api/26932/verify+link+status' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw 'eyJmaWxlVXJsIjoiaHR0cHM6Ly9weXBpLm9yZy9weXBpL3JlcXVlc3RzL2pzb24iLCJmaWxlSWQiOiJzYW1wbGUtZmlsZS0xIiwiaXAiOm51bGwsInVhSGFzaCI6bnVsbCwiZXhwIjoxNzg0MTQ5NTcxLCJtYXhVc2VzIjoyLCJub25jZSI6Ijg4YzllMDJmYjU0MGYyYjZjNzA2MGMzMWY1NmJjMDM4In0.feba462a71fbe444d3b78bf7c204c815ee37579a1a7c476c02aad12038a48a49'
注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 安全网关动态资产访问 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。
| 标头 | 描述 |
|---|---|
授权
|
必需
应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。
|
无长期承诺。随时升级、降级或取消。 免费试用包括最多 50 个请求。
(年度计费可节省 2 个月 🎉)
领先企业的信赖之选
此API生成签名访问令牌,以控制对文件的访问,防止其被随意分享或再分发
端点和功能:
典型用例:保护优质视频/课程内容、限制数字下载、临时文件共享链接、许可证密钥交付,以及任何需要阻止付费链接被随意再分发的平台场景
发送带有真实文件网址、最终用户的IP地址、过期时间和最大使用次数的POST请求到/generate。API返回一个签名的访问链接,可以安全地提供给该用户——真实文件位置从未曝光
每个链接都绑定到它被发放的特定IP地址和浏览器签名上,在设定时间后过期,并且只能使用有限的次数。如果链接从不同的网络或设备打开,或者在过期后或达到使用限制后,访问将被拒绝
是的 发送一个GET请求到/verify/:token来查看剩余时间和使用次数而不消耗访问尝试 这对于在用户点击之前显示倒计时或剩余下载指示器很有用
不 API 在服务器端检索文件并通过签名链接将其流回 浏览器地址栏 网络请求或页面源中永远不会出现实际文件位置 所以在链接过期后无法书签或重用
每个令牌都经过加密签名 任何修改链接的行为 包括试图延长其过期时间或增加使用限制 都会使签名无效 请求会立即被拒绝
生成签名访问链接端点返回一个包含请求状态、签名访问 URL、文件 ID、到期时间、允许的最大使用次数以及链接是否绑定到 IP 或客户端的 JSON 对象
访问受保护文件端点需要一个签名的令牌作为参数 该令牌包含所有必要的验证信息,包括签名 过期时间和使用限制
验证链接状态端点返回一个JSON对象,结构中包含指示请求状态、令牌有效性、文件ID、过期时间、剩余秒数、剩余使用次数和绑定信息的字段
关键字段包括“状态”(表示成功)、“访问网址”(签名链接)、“文件ID”(文件的标识符)、“到期时间”(到期时间戳)、“最大使用次数”(允许的最大使用次数)以及IP和客户端的绑定标志
验证链接状态端点提供有关令牌有效性的详细信息,包括到期前的剩余时间、剩余使用次数,以及链接是否绑定到IP或客户端,而不消耗使用次数
用户可以通过在发送POST请求到生成签名访问链接端点时指定真实文件URL、最终用户的IP地址、所需的过期时间和最大使用次数来自定义请求
如果访问受保护文件端点接收到无效的令牌(过期、篡改、IP不匹配或已完全使用),它将拒绝请求并且不会流式传输文件,以确保安全访问控制
典型的用例包括保护高级视频内容 门禁数字下载 临时文件共享链接和安全许可证密钥传递 确保访问受控和监控