{"id":2,"date":"2026-05-02T10:22:01","date_gmt":"2026-05-02T02:22:01","guid":{"rendered":"https:\/\/doc.crtraveler.top\/?page_id=2"},"modified":"2026-05-02T14:18:39","modified_gmt":"2026-05-02T06:18:39","slug":"api","status":"publish","type":"page","link":"https:\/\/doc.crtraveler.top\/?page_id=2","title":{"rendered":"API\u4f7f\u7528\u6587\u6863"},"content":{"rendered":"<style>\n.api-page {\n  max-width: 960px;\n  margin: 0 auto;\n  line-height: 1.7;\n  font-size: 15px;\n}\n.api-page h2 {\n  font-size: 18px;\n  margin-top: 26px;\n  margin-bottom: 12px;\n  padding-left: 10px;\n  border-left: 4px solid #1677ff;\n  font-weight: 600;\n}\n.api-table {\n  width: 100%;\n  border-collapse: collapse;\n  margin: 14px 0;\n  background: #fff;\n}\n.api-table th, .api-table td {\n  padding: 10px 12px;\n  text-align: left;\n  border: 1px solid #eee;\n}\n.api-table th {\n  background: #f9fafb;\n}\n.api-pre {\n  background: #1f2937;\n  color: #fff;\n  padding: 14px;\n  border-radius: 8px;\n  overflow-x: auto;\n  margin: 14px 0;\n  font-family: Consolas, \"\u5fae\u8f6f\u96c5\u9ed1\", monospace;\n  white-space: pre;\n}\n.api-result-box {\n  background: #f9fafb;\n  border: 1px solid #eee;\n  border-radius: 8px;\n  padding: 14px;\n  margin: 14px 0;\n  max-height: 320px;\n  overflow-y: auto;\n  font-family: Consolas, monospace;\n  font-size: 13px;\n  color: #333;\n  white-space: pre;\n}\n.api-tip {\n  background: #e8f3ff;\n  color: #1677ff;\n  padding: 12px 14px;\n  border-radius: 8px;\n  margin: 14px 0;\n}\n.api-test {\n  display:grid;\n  gap:10px;\n  margin:16px 0;\n}\n.api-test input {\n  padding:8px 12px;\n  border:1px solid #ddd;\n  border-radius:6px;\n}\n.api-test button {\n  padding:8px 12px;\n  background:#1677ff;\n  color:#fff;\n  border:none;\n  border-radius:6px;\n  cursor:pointer;\n}\n<\/style>\n<div class=\"api-page\">\n<h1>CRTraveler \u7ad9\u70b9\u67e5\u8be2 API<\/h1>\n<p>\u63a5\u53e3\u5730\u5740\uff1ahttps:\/\/api.crtraveler.top<\/p>\n<h2>\u53c2\u6570\u8bf4\u660e<\/h2>\n<table class=\"api-table\">\n<tr>\n<th>\u53c2\u6570\u540d<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<tr>\n<td>token<\/td>\n<td>\u5fc5\u987b\u4f20\u5165\uff0c\u6388\u6743\u5bc6\u94a5<\/td>\n<\/tr>\n<tr>\n<td>code<\/td>\n<td>\u7ad9\u70b9\u7f16\u7801\uff0c\u81ea\u52a8\u8f6c\u5927\u5199<\/td>\n<\/tr>\n<tr>\n<td>name<\/td>\n<td>\u7ad9\u70b9\u540d\u79f0\uff0c\u6a21\u7cca\u67e5\u8be2<\/td>\n<\/tr>\n<tr>\n<td>pinyin<\/td>\n<td>\u7ad9\u70b9\u62fc\u97f3\uff0c\u81ea\u52a8\u8f6c\u5c0f\u5199<\/td>\n<\/tr>\n<\/table>\n<div class=\"api-tip\">\n\u2022 token \u5fc5\u4f20<br \/>\n\u2022 code \/ name \/ pinyin \u81f3\u5c11\u4f20\u4e00\u9879<br \/>\n\u2022 \u53ef\u4f20 1\/2\/3 \u9879\uff0c\u4e0d\u53ef\u5168\u4e3a\u7a7a\n<\/div>\n<h2>\u8bf7\u6c42\u793a\u4f8b<\/h2>\n<pre class=\"api-pre\">https:\/\/api.crtraveler.top?token=test123&name=\u6210\u90fd<\/pre>\n<pre class=\"api-pre\">https:\/\/api.crtraveler.top?token=test123&code=icw<\/pre>\n<pre class=\"api-pre\">https:\/\/api.crtraveler.top?token=test123&pinyin=cdd<\/pre>\n<h2>\u6b63\u5e38\u8fd4\u56de\u793a\u4f8b<\/h2>\n<div class=\"api-result-box\">\n{<br \/>\n  &#8220;code&#8221;: 200,<br \/>\n  &#8220;msg&#8221;: &#8220;\u6210\u529f&#8221;,<br \/>\n  &#8220;data&#8221;: [<br \/>\n    {<br \/>\n      &#8220;code&#8221;: &#8220;CDW&#8221;,<br \/>\n      &#8220;name&#8221;: &#8220;\u6210\u90fd\u7ad9&#8221;,<br \/>\n      &#8220;pinyin&#8221;: &#8220;chengdu&#8221;<br \/>\n    }<br \/>\n  ],<br \/>\n  &#8220;total_used&#8221;: 5,<br \/>\n  &#8220;total_left&#8221;: 995,<br \/>\n  &#8220;min_used&#8221;: 3,<br \/>\n  &#8220;min_left&#8221;: 57<br \/>\n}\n<\/div>\n<h2>\u65e0\u6570\u636e\u8fd4\u56de\u793a\u4f8b<\/h2>\n<div class=\"api-result-box\">\n{<br \/>\n  &#8220;code&#8221;: 404,<br \/>\n  &#8220;msg&#8221;: &#8220;\u65e0\u6570\u636e&#8221;,<br \/>\n  &#8220;data&#8221;: [],<br \/>\n  &#8220;total_used&#8221;: 6,<br \/>\n  &#8220;total_left&#8221;: 994,<br \/>\n  &#8220;min_used&#8221;: 4,<br \/>\n  &#8220;min_left&#8221;: 56<br \/>\n}\n<\/div>\n<h2>PHP \u8c03\u7528\u793a\u4f8b<\/h2>\n<pre class=\"api-pre\">&lt;?php\n$params = [\n    'token'  =&gt; 'test123',\n    'code'   =&gt; 'CDW',\n    'name'   =&gt; '\u6210\u90fd'\n];\n\n$url = 'https:\/\/api.crtraveler.top?' . http_build_query($params);\n\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);\n\n$response = curl_exec($ch);\ncurl_close($ch);\n\necho $response;\n?&gt;<\/pre>\n<h2>Python \u8c03\u7528\u793a\u4f8b<\/h2>\n<pre class=\"api-pre\">import requests\nparams = {\n    \"token\": \"test123\",\n    \"name\": \"\u6210\u90fd\"\n}\nresp = requests.get(\"https:\/\/api.crtraveler.top\", params=params)\nprint(resp.json())\n<\/pre>\n<h2>JavaScript \u8c03\u7528\u793a\u4f8b<\/h2>\n<pre class=\"api-pre\">const params = new URLSearchParams({\n  token: \"test123\",\n  name: \"\u6210\u90fd\"\n})\nfetch(\"https:\/\/api.crtraveler.top?\" + params)\n  .then(res =&gt; res.json())\n  .then(data =&gt; console.log(data))\n<\/pre>\n<h2>\u5728\u7ebf\u6d4b\u8bd5<\/h2>\n<div class=\"api-test\">\n  <input id=\"token\" value=\"test123\" placeholder=\"token\"><br \/>\n  <input id=\"code\" placeholder=\"code\"><br \/>\n  <input id=\"name\" placeholder=\"name\"><br \/>\n  <input id=\"pinyin\" placeholder=\"pinyin\"><br \/>\n  <button onclick=\"testApi()\">\u53d1\u9001\u8bf7\u6c42<\/button><\/p>\n<div id=\"result\" class=\"api-result-box\"><\/div>\n<\/div>\n<h2>\u8fd4\u56de\u5b57\u6bb5\u8bf4\u660e<\/h2>\n<table class=\"api-table\">\n<tr>\n<td>code<\/td>\n<td>\u72b6\u6001\u7801<\/td>\n<\/tr>\n<tr>\n<td>msg<\/td>\n<td>\u63d0\u793a\u4fe1\u606f<\/td>\n<\/tr>\n<tr>\n<td>data<\/td>\n<td>\u7ad9\u70b9\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>total_used<\/td>\n<td>\u5df2\u7528\u6b21\u6570<\/td>\n<\/tr>\n<tr>\n<td>total_left<\/td>\n<td>\u5269\u4f59\u6b21\u6570<\/td>\n<\/tr>\n<tr>\n<td>min_used<\/td>\n<td>\u5206\u949f\u5df2\u7528<\/td>\n<\/tr>\n<tr>\n<td>min_left<\/td>\n<td>\u5206\u949f\u5269\u4f59<\/td>\n<\/tr>\n<\/table>\n<h2>\u72b6\u6001\u7801\u8bf4\u660e<\/h2>\n<table class=\"api-table\">\n<tr>\n<td>200<\/td>\n<td>\u6210\u529f<\/td>\n<\/tr>\n<tr>\n<td>401<\/td>\n<td>Token \u65e0\u6548<\/td>\n<\/tr>\n<tr>\n<td>402<\/td>\n<td>\u6b21\u6570\u5df2\u7528\u5b8c<\/td>\n<\/tr>\n<tr>\n<td>404<\/td>\n<td>\u65e0\u6570\u636e<\/td>\n<\/tr>\n<tr>\n<td>429<\/td>\n<td>\u8bf7\u6c42\u9891\u7e41<\/td>\n<\/tr>\n<\/table>\n<h2>\u7279\u6b8a\u8bf7\u6c42\u8bf4\u660e<\/h2>\n<p> &#8211; \u53c2\u6570&#8221;pinyin&#8221;\u4e0d\u540c\u4e8e\u4e00\u822c\u62fc\u97f3\uff0c\u6b64\u53c2\u6570\u5e94\u8f93\u5165\u62fc\u97f3\u9996\u5b57\u6bcd\u3002\u4f8b\uff1a\u6210\u90fd\u4e1c\uff08cdd\uff09\u3001\u5317\u4eac\u897f\uff08bjx\uff09<\/p>\n<p> &#8211; \u53c2\u6570\u201ccode&#8221;\u4e0e\u53c2\u6570\u201cpinyin\u201d\u5927\u5c0f\u5199\u5747\u53ef<\/p>\n<h2>\u6700\u65b0\u6d3b\u52a8<\/h2>\n<p> &#8211; Token\u5927\u653e\u9001\uff0c\u7531\u4e8eAPI\u65b0\u5f00\u53d1\uff0c\u4e3a\u589e\u5927\u6d41\u91cf\uff0c\u51b3\u5b9a\u514d\u8d39\u516c\u5f00\u4e00\u4e0d\u9650\u6b21\u6570Token\uff0c\u6b64Token\u8c03\u7528\u6b21\u6570\u65e0\u4e0a\u9650\uff0c\u6bcf\u5206\u949f\u603b\u9650\u5236\u8c03\u75286000\u6b21\uff01\u6b22\u8fce\u5c1d\u8bd5\uff01<\/p>\n<p><strong>Token: API.CRTRAVELER.TOP<\/strong><\/p>\n<\/div>\n<p><script>\nfunction testApi() {\n  let t = document.getElementById('token').value.trim()\n  let c = document.getElementById('code').value.trim()\n  let n = document.getElementById('name').value.trim()\n  let p = document.getElementById('pinyin').value.trim()\n  let box = document.getElementById('result')<\/p>\n<p>  if (!c && !n && !p) {\n    box.innerText = \"\u8bf7\u81f3\u5c11\u586b\u4e00\u4e2a\u67e5\u8be2\u6761\u4ef6\"\n    return\n  }<\/p>\n<p>  let params = new URLSearchParams()\n  params.append('token', t)\n  if (c) params.append('code', c)\n  if (n) params.append('name', n)\n  if (p) params.append('pinyin', p)<\/p>\n<p>  box.innerText = \"\u8bf7\u6c42\u4e2d...\"<\/p>\n<p>  fetch(\"https:\/\/api.crtraveler.top?\" + params)\n    .then(res => res.json())\n    .then(data => {\n      box.innerText = JSON.stringify(data, null, 2)\n    })\n    .catch(err => {\n      box.innerText = \"\u8bf7\u6c42\u5931\u8d25\"\n    })\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CRTraveler \u7ad9\u70b9\u67e5\u8be2 API \u63a5\u53e3\u5730\u5740\uff1ahttps:\/\/api.crtraveler.top \u53c2\u6570\u8bf4 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2"}],"version-history":[{"count":2,"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":12,"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions\/12"}],"wp:attachment":[{"href":"https:\/\/doc.crtraveler.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}