Files
cursor-api/static
2025-01-02 19:51:23 +08:00
..
2024-12-31 23:20:09 +08:00
2024-12-30 23:41:04 +08:00
2024-12-31 23:20:09 +08:00
2025-01-02 19:51:23 +08:00
2024-12-30 23:41:04 +08:00
2024-12-30 23:41:04 +08:00

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1>cursor-api</h1>

<h2>说明</h2>

<ul>
<li>当前版本已稳定,若发现响应出现缺字漏字,与本程序无关。</li>
<li>若发现首字慢,与本程序无关。</li>
<li>若发现响应出现乱码,也与本程序无关。</li>
<li>属于官方的问题,请不要像作者反馈。</li>
<li>本程序拥有堪比客户端原本的速度,甚至可能更快。</li>
<li>本程序的性能是非常厉害的。</li>
</ul>

<h2>获取key</h2>

<ol>
<li>访问 <a href="https://www.cursor.com">www.cursor.com</a> 并完成注册登录</li>
<li>在浏览器中打开开发者工具F12</li>
<li>在 Application-Cookies 中查找名为 <code>WorkosCursorSessionToken</code> 的条目,并复制其第三个字段。请注意,%3A%3A 是 :: 的 URL 编码形式cookie 的值使用冒号 (:) 进行分隔。</li>
</ol>

<h2>配置说明</h2>

<h3>环境变量</h3>

<ul>
<li><code>PORT</code>: 服务器端口号默认3000</li>
<li><code>AUTH_TOKEN</code>: 认证令牌必须用于API认证</li>
<li><code>ROUTE_PREFIX</code>: 路由前缀(可选)</li>
<li><code>TOKEN_FILE</code>: token文件路径默认.token</li>
<li><code>TOKEN_LIST_FILE</code>: token列表文件路径默认.token-list</li>
</ul>

<p>更多请查看 <code>/env-example</code></p>

<h3>Token文件格式</h3>

<ol>
<li>
<p><code>.token</code> 文件每行一个token支持以下格式</p>

<pre><code># 这是注释
token1
# alias与标签的作用差不多
alias::token2
</code></pre>

<p>alias 可以是任意值,用于区分不同的 token更方便管理WorkosCursorSessionToken 是相同格式<br>
该文件将自动向.token-list文件中追加token同时自动生成checksum</p>
</li>

<li>
<p><code>.token-list</code> 文件每行为token和checksum的对应关系</p>

<pre><code># 这里的#表示这行在下次读取要删除
token1,checksum1
# 支持像.token一样的alias冲突时以.token为准
alias::token2,checksum2
</code></pre>

<p>该文件可以被自动管理,但用户仅可在确认自己拥有修改能力时修改,一般仅有以下情况需要手动修改:</p>

<ul>
<li>需要删除某个 token</li>
<li>需要使用已有 checksum 来对应某一个 token</li>
</ul>
</li>
</ol>

<h3>模型列表</h3>

<p>写死了,后续也不会会支持自定义模型列表</p>

<pre><code>claude-3.5-sonnet
gpt-4
gpt-4o
claude-3-opus
cursor-fast
cursor-small
gpt-3.5-turbo
gpt-4-turbo-2024-04-09
gpt-4o-128k
gemini-1.5-flash-500k
claude-3-haiku-200k
claude-3-5-sonnet-200k
claude-3-5-sonnet-20241022
gpt-4o-mini
o1-mini
o1-preview
o1
claude-3.5-haiku
gemini-exp-1206
gemini-2.0-flash-thinking-exp
gemini-2.0-flash-exp
</code></pre>

<h1>接口说明</h1>

<h2>基础对话</h2>

<ul>
<li>接口地址: <code>/v1/chat/completions</code></li>
<li>请求方法: POST</li>
<li>认证方式: Bearer Token
<ol>
<li>使用环境变量 <code>AUTH_TOKEN</code> 进行认证</li>
<li>使用 <code>.token</code> 文件中的令牌列表进行轮询认证</li>
</ol></li>
</ul>

<h3>请求格式</h3>

<pre><code class="language-json">{
  "model": "string",
  "messages": [
    {
      "role": "system" | "user" | "assistant", // 也可以是 "developer" | "human" | "ai"
      "content": "string" | [
        {
          "type": "text" | "image_url",
          "text": "string",
          "image_url": {
            "url": "string"
          }
        }
      ]
    }
  ],
  "stream": boolean
}
</code></pre>

<h3>响应格式</h3>

<p>如果 <code>stream</code> 为 <code>false</code>:</p>

<pre><code class="language-json">{
  "id": "string",
  "object": "chat.completion",
  "created": number,
  "model": "string",
  "choices": [
    {
      "index": number,
      "message": {
        "role": "assistant",
        "content": "string"
      },
      "finish_reason": "stop" | "length"
    }
  ],
  "usage": {
    "prompt_tokens": number,
    "completion_tokens": number,
    "total_tokens": number
  }
}
</code></pre>

<p>如果 <code>stream</code> 为 <code>true</code>:</p>

<pre><code>data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{"role":"assistant","content":"string"},"finish_reason":null}]}

data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{"content":"string"},"finish_reason":null}]}

data: {"id":"string","object":"chat.completion.chunk","created":number,"model":"string","choices":[{"index":number,"delta":{},"finish_reason":"stop"}]}

data: [DONE]
</code></pre>

<h2>Token管理接口</h2>

<h3>简易Token信息管理页面</h3>

<ul>
<li>接口地址: <code>/tokeninfo</code></li>
<li>请求方法: GET</li>
<li>响应格式: HTML页面</li>
<li>功能: 获取 .token 和 .token-list 文件内容,并允许用户方便地使用 API 修改文件内容</li>
</ul>

<h3>更新Token信息 (GET)</h3>

<ul>
<li>接口地址: <code>/update-tokeninfo</code></li>
<li>请求方法: GET</li>
<li>认证方式: 不需要</li>
<li>功能: 请求内容不包括文件内容,直接修改文件,调用重载函数</li>
</ul>

<h3>更新Token信息 (POST)</h3>

<ul>
<li>接口地址: <code>/update-tokeninfo</code></li>
<li>请求方法: POST</li>
<li>认证方式: Bearer Token</li>
<li>请求格式:</li>
</ul>

<pre><code class="language-json">{
  "tokens": "string",
  "token_list": "string"
}
</code></pre>

<ul>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "status": "success",
  "message": "Token files have been updated and reloaded",
  "token_file": "string",
  "token_list_file": "string",
  "token_count": number
}
</code></pre>

<h3>获取Token信息</h3>

<ul>
<li>接口地址: <code>/get-tokeninfo</code></li>
<li>请求方法: POST</li>
<li>认证方式: Bearer Token</li>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "status": "success",
  "token_file": "string",
  "token_list_file": "string",
  "tokens": "string",
  "token_list": "string"
}
</code></pre>

<h2>配置管理接口</h2>

<h3>配置页面</h3>

<ul>
<li>接口地址: <code>/config</code></li>
<li>请求方法: GET</li>
<li>响应格式: HTML页面</li>
<li>功能: 提供配置管理界面,可以修改页面内容和系统配置</li>
</ul>

<h3>更新配置</h3>

<ul>
<li>接口地址: <code>/config</code></li>
<li>请求方法: POST</li>
<li>认证方式: Bearer Token</li>
<li>请求格式:</li>
</ul>

<pre><code class="language-json">{
  "action": "get" | "update" | "reset",
  "path": "string",
  "content": "string",
  "content_type": "default" | "text" | "html",
  "enable_stream_check": boolean,
  "enable_stream_check": boolean,
  "vision_ability": "none" | "base64" | "all", // "disabled" | "base64-only" | "base64-http"
  "enable_slow_pool": boolean,
  "enable_slow_pool": boolean
}
</code></pre>

<ul>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "status": "success",
  "message": "string",
  "data": {
    "page_content": {
      "type": "default" | "text" | "html",
      "content": "string"
    },
    "enable_stream_check": boolean,
    "vision_ability": "base64" | "url" | "none", 
    "enable_slow_pool": boolean
  }
}
</code></pre>

<h2>静态资源接口</h2>

<h3>获取共享样式</h3>

<ul>
<li>接口地址: <code>/static/shared-styles.css</code></li>
<li>请求方法: GET</li>
<li>响应格式: CSS文件</li>
<li>功能: 获取共享样式表</li>
</ul>

<h3>获取共享脚本</h3>

<ul>
<li>接口地址: <code>/static/shared.js</code></li>
<li>请求方法: GET</li>
<li>响应格式: JavaScript文件</li>
<li>功能: 获取共享JavaScript代码</li>
</ul>

<h3>环境变量示例</h3>

<ul>
<li>接口地址: <code>/env-example</code></li>
<li>请求方法: GET</li>
<li>响应格式: 文本文件</li>
<li>功能: 获取环境变量配置示例</li>
</ul>

<h2>其他接口</h2>

<h3>获取模型列表</h3>

<ul>
<li>接口地址: <code>/v1/models</code></li>
<li>请求方法: GET</li>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "object": "list",
  "data": [
    {
      "id": "string",
      "object": "model",
      "created": number,
      "owned_by": "string"
    }
  ]
}
</code></pre>

<h3>获取随机checksum</h3>

<ul>
<li>接口地址: <code>/checksum</code></li>
<li>请求方法: GET</li>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "checksum": "string"
}
</code></pre>

<h3>健康检查接口</h3>

<ul>
<li>接口地址: <code>/health</code> 或 <code>/</code>(重定向)</li>
<li>请求方法: GET</li>
<li>响应格式: 根据配置返回不同的内容类型(默认、文本或HTML)</li>
</ul>

<h3>获取日志接口</h3>

<ul>
<li>接口地址: <code>/logs</code></li>
<li>请求方法: GET</li>
<li>响应格式: 根据配置返回不同的内容类型(默认、文本或HTML)</li>
</ul>

<h3>获取日志数据</h3>

<ul>
<li>接口地址: <code>/logs</code></li>
<li>请求方法: POST</li>
<li>认证方式: Bearer Token</li>
<li>响应格式:</li>
</ul>

<pre><code class="language-json">{
  "total": number,
  "logs": [
    {
      "timestamp": "string",
      "model": "string",
      "token_info": {
        "token": "string",
        "checksum": "string",
        "alias": "string"
      },
      "prompt": "string",
      "stream": boolean,
      "status": "string",
      "error": "string"
    }
  ],
  "timestamp": "string",
  "status": "success"
}
</code></pre>