Fakeopen API 文档
大约 12 分钟使用指南Fakeopen
基本信息
- Base URL:
https://ai.fakeopen.com
- 本服务为
Pandora
的一部分,用于提供ChatGPT
/OpenAI
相关的接口 - 本服务完全免费,服务器及带宽均为zhile佬自掏腰包,请大户手下留情,不要滥用!
重要提醒!!!
目前ai.fakeopen.com
已经不可用,你需要自己搭建PandoraNext服务来获取自己的接口地址
查看相关信息
ChatGPT
相关
基础信息
- 请求接口需要提供
Authorization
或X-Authorization
头,值为Bearer <Token>
Token
可以是Access Token
或Share Token
- 请求字段: 请自行使用浏览器开发者工具查看
- 返回类型:
application/json
- 返回字段: 请自行使用浏览器开发者工具查看
- 报错信息: 内容包含在
detail
字段中
接口列表
/api/conversation
1. - 对应
https://chat.openai.com/backend-api/conversation
的用法 - 接口描述: 发送对话,获取回复
- HTTP方法:
POST
- 请求类型:
application/json
- 返回字段: 返回
text/event-stream
流式数据,需要自行解析 - 频率控制: 根据
IP
地址3/10s
限制,被限制时返回429
错误码
/api/models
2. - 对应
https://chat.openai.com/backend-api/models
的用法 - 接口描述: 列出账号可用的模型
- HTTP方法:
GET
- 频率控制: 无
- 特别说明: 可根据其中是否有
GPT-4
模型来判断账号是否为ChatGPT Plus
/api/conversations
3. - 对应
https://chat.openai.com/backend-api/conversations
的用法 - 接口描述: 以分页方式列出会话列表
- HTTP方法:
GET
- 频率控制: 无
- 特别说明: 使用隔离会话
Share Token
时,会话列表中只会显示Share Token
所属的会话
/api/conversation/<conversation id>
4. - 对应
https://chat.openai.com/backend-api/conversation/<conversation id>
的用法 - 接口描述: 根据
conversation id
删除指定会话 - HTTP方法:
PUT
- 请求类型:
application/json
- 请求字段:
{"is_visible": false}
- 频率控制: 无
/api/conversation/<conversation id>
5. - 对应
https://chat.openai.com/backend-api/conversation/<conversation id>
的用法 - 接口描述: 根据
conversation id
修改会话标题 - HTTP方法:
PUT
- 请求类型:
application/json
- 请求字段:
{"title": "New Title"}
- 频率控制: 无
/api/conversations
6. - 对应
https://chat.openai.com/backend-api/conversations
的用法 - 接口描述: 清除所有会话
- HTTP方法:
PUT
- 请求类型:
application/json
- 请求字段:
{"is_visible": false}
- 频率控制: 无
- 特别说明: 使用隔离会话
Share Token
时,不可调用本接口
Pandora Cloud
后查看
更多接口请自行使用浏览器开发者工具查看可在官方查看,也可以部署 OpenAI API
相关
基础信息
- 请求接口需要提供
Authorization
或X-Authorization
头,值为Bearer <Token>
Token
可以是Access Token
或sk-
开头的官方API Key
,会扣官方额度Token
可以是Share Token
或Pool Token
,此时为模拟接口,不会扣官方额度- 官方文档: https://platform.openai.com/docs/api-reference
接口列表
/v1/chat/completions
1. - 对应
https://api.openai.com/v1/chat/completions
的用法 - 官方文档: https://platform.openai.com/docs/api-reference/chat/create
- 接口描述: 发送对话,获取回复可使用
Share Token
或Pool Token
模拟免费调用绝大多数OpenAI API
客户端均支持 - 模型映射:
gpt-3.5-turbo
->text-davinci-002-render-sha
,真实长度为:8K
gpt-3.5-turbo-0301
->text-davinci-002-render-sha
,真实长度为:8K
gpt-3.5-turbo-0613
->text-davinci-002-render-sha
,真实长度为:8K
gpt-3.5-turbo-16k
->text-davinci-002-render-sha
,真实长度为:8K
gpt-3.5-turbo-16k-0613
->text-davinci-002-render-sha
,真实长度为:8K
gpt-4
->gpt-4
,真实长度为:4K
gpt-4-0314
->gpt-4
,真实长度为:4K
gpt-4-0613
->gpt-4
,真实长度为:4K
gpt-4-32k
->gpt-4-plugins
,真实长度为:8K
gpt-4-32k-0314
->gpt-4-plugins
,真实长度为:8K
gpt-4-32k-0613
->gpt-4-plugins
,真实长度为:8K
- 请求字段: 同官方,但不保证支持以下字段:
functions
function_call
temperature
top_p
n
stop
max_tokens
presence_penalty
frequency_penalty
logit_bias
user
- 返回字段: 返回
text/event-stream
流式数据,需要自行解析 - 频率控制: 根据
IP
地址3/10s
限制,被限制时返回429
错误码 - 特别说明:
- 扣官方额度时,只存在官方频率限制
- 官方
ChatGPT
存在同时只能有1
个会话的限制,建议使用多个账号组合Pool Token
来解决
其余官方接口均直接转发到官方,不做任何处理
登录相关
基础信息
- 登录相关接口并不支持
Google
/Microsoft
等第三方登录 - 可以在 https://ai.fakeopen.com/auth 操作界面中进行同等操作
- 请务必仅用来操作自己的账号!!!,撞号后果自负,且会导致拉黑
IP
或ASN
- 返回类型:
application/json
- 报错信息: 内容包含在
detail
字段中
接口列表
/auth/preauth
1. - 接口描述: 获取登录预授权,具体见:https://zhile.io/2023/05/19/how-to-get-chatgpt-access-token-via-pkce.html
- HTTP方法:
GET
- 频率控制: 无
注意
因为现在用苹果批量登录会封设备,甚至封号,此接口已废弃,不再提供支持
/auth/login
2. - 接口描述: 使用账号信息登录,获取供 ChatGPT 使用的
Access Token
等信息 - HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
username
:ChatGPT
账号password
:ChatGPT
密码mfa_code
:开启二次验证,需要提供否则不需要
- 返回字段: 返回
Access Token
和Session Token
等信息 - 频率控制: 根据IP地址
6/1m
限制,被限制时返回429
错误码 - 特别说明: 可直接调用,无需先调用获取登录预授权接口也无需支持国家的梯子
Curl
curl --location 'https://ai.fakeopen.com/auth/login' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=' \
--data-urlencode 'password='
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("username", "");
urlencoded.append("password", "");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/auth/login", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'username': '',
'password': ''
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/auth/login',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/auth/login"
payload = 'username=&password='
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
/auth/refresh
3. - 接口描述: 使用
Refresh Token
获取供 ChatGPT 使用的Access Token
等信息 - HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
refresh_token
:ChatGPT
的Refresh Token
- 返回字段: 返回
Access Token
等信息 - 频率控制: 无
Curl
curl --location 'https://ai.fakeopen.com/auth/refresh' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'refresh_token='
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("refresh_token", "");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/auth/refresh", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'refresh_token': ''
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/auth/refresh',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/auth/refresh"
payload = 'refresh_token='
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
/auth/platform/login
4. - 接口描述: 使用账号信息登录,获取供 Platform 使用的
Access Token
等信息,用做获取用度、账单等信息 - HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
username
:ChatGPT
账号password
:ChatGPT
密码mfa_code
:开启二次验证,需要提供否则不需要
- 返回字段: 返回
Access Token
和Refresh Token
等信息 - 频率控制: 根据IP地址
6/1m
限制,被限制时返回429
错误码
Curl
curl --location 'https://ai.fakeopen.com/auth/platform/login' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=' \
--data-urlencode 'password='
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("username", "");
urlencoded.append("password", "");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/auth/platform/login", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'username': '',
'password': ''
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/auth/platform/login',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/auth/platform/login"
payload = 'username=&password='
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
/auth/platform/refresh
5. - 接口描述: 使用
Refresh Token
获取供 Platform 使用的Access Token
等信息,用做获取用度、账单等信息 - HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
refresh_token
:Platform
的Refresh Token
- 返回字段: 返回
Access Token
等信息 - 频率控制: 无
Curl
curl --location 'https://ai.fakeopen.com/auth/platform/refresh' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'refresh_token='
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("refresh_token", "");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/auth/platform/refresh", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'refresh_token': ''
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/auth/platform/refresh',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/auth/platform/refresh"
payload = 'refresh_token='
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
/auth/session
6. - 接口描述: 使用
Session Token
获取供 ChatGPT 使用的Access Token
等信息 - HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
session_token
:ChatGPT
的Session Token
- 返回字段: 返回
Access Token
等信息 - 频率控制: 无
- 特别说明:
Session Token
有效期为3
个月
Curl
curl --location 'https://ai.fakeopen.com/auth/session' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'session_token='
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("session_token", "");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/auth/session", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'session_token': ''
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/auth/session',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/auth/session"
payload = 'session_token='
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Share Token 相关
基础信息
- 基本格式为:
fk-[0-9a-zA-Z_\-]{43}
,长度为:46
- 使用该功能可以实现多人共享一个账号,可以进行会话隔离
- 可以在共享账号是隐藏
邮箱
等账号信息,防止被撞号 - 可以在共享账号时隐藏
Access Token
,官方Access Token
在有效期内无法吊销,泄露损失很大 - 可以灵活控制
Share Token
的有效期,过期后会自动失效也可随时手动吊销 - 可以限制
Share Token
使用的站点,防止被滥用 - 可以在部署的
Pandora Cloud
上使用<部署地址>/auth/login_share?token=<Share Token>
快速使用 - 可以在 https://ai.fakeopen.com/token 操作界面中进行同等操作
- 既可以使用在
ChatGPT
上,也可以使用在模拟OpenAI API
的调用上 - 返回类型:
application/json
- 报错信息: 内容包含在
detail
字段中
接口列表
/token/info/<share token>
1. - 接口描述: 获取
Share Token
的详细信息 - HTTP方法:
GET
- 返回字段: 返回
Share Token
所的详细信息 - 频率控制: 无
- 特别说明:
Authorization
可选,值为Bearer <Access Token>
- 若提供有效
Share Token
注册用户的Access Token
,则返回Share Token
对各个模型的当日用度信息 - 此开共享
ChatGPT Plus
车必备统计数据功能
Curl
curl --location 'https://ai.fakeopen.com/token/info/<share token>'
javascript
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/token/info/<share token>", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
let config = {
method: 'get',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/token/info/<share token>',
headers: { }
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/token/info/<share token>"
payload = {}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
/token/register
2. - 接口描述: 注册或更新
Share Token
- HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
unique_name
:一个唯一的名字,这里要注意相同unique_name
和access_token
始终生成相同的Share Token
access_token
:ChatGPT
账号的Access Token
site_limit
:限制Share Token
使用的站点,格式为:https://xxx.yyy.com
,可留空不作限制expires_in
:Share Token
的有效期,单位为:秒
,为0
时表示与Access Token
同效,为-1
时吊销Share Token
show_conversations
:是否进行会话隔离,true
或false
,默认为false
show_userinfo
:是否隐藏邮箱
等账号信息,true
或false
,默认为false
- 返回字段: 返回
Share Token
等信息 - 频率控制: 无
Curl
curl --location 'https://ai.fakeopen.com/token/register' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'unique_name=fakeopen' \
--data-urlencode 'access_token=<accesstoken>' \
--data-urlencode 'site_limit=https://chat.xf233.net' \
--data-urlencode 'expires_in=0' \
--data-urlencode 'show_conversations=true' \
--data-urlencode 'show_userinfo=true'
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("unique_name", "fakeopen");
urlencoded.append("access_token", "<accesstoken>");
urlencoded.append("site_limit", "https://chat.xf233.net");
urlencoded.append("expires_in", "0");
urlencoded.append("show_conversations", "true");
urlencoded.append("show_userinfo", "true");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/token/register", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'unique_name': 'fakeopen',
'access_token': '<accesstoken>',
'site_limit': 'https://chat.xf233.net',
'expires_in': '0',
'show_conversations': 'true',
'show_userinfo': 'true'
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/token/register',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/token/register"
payload = 'unique_name=fakeopen&access_token=%3Caccesstoken%3E&site_limit=https%3A%2F%2Fchat.xf233.net&expires_in=0&show_conversations=true&show_userinfo=true'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Pool Token 相关
基础信息
- 基本格式为:
pk-[0-9a-zA-Z_\-]{43}
,长度为:46
- 使用该功能可以将最多
100
个Share Token
组合在一起 - 使用组合的
Pool Token
时会自动轮转,突破ChatGPT
同时只能有1
个会话的限制 - 可以在 https://ai.fakeopen.com/pool 操作界面中进行同等操作
- 仅可以使用在模拟
OpenAI API
的调用上 pk-this-is-a-real-free-pool-token-for-everyone
是一个可用的共享Pool Token
,容量有几千个Share Token
感谢社区热心人士提供- 返回类型:
application/json
- 报错信息: 内容包含在
detail
字段中
接口列表
/pool/update
1. - 接口描述: 注册或更新
Pool Token
- HTTP方法:
POST
- 请求类型:
application/x-www-form-urlencoded
- 请求字段:
share_tokens
:Share Token
列表,每行1
个,最多100
个pool_token
:Pool Token
,可留空,留空时生成新Pool Token
不为空则更新Pool Token
- 返回字段: 返回
Pool Token
等信息 - 频率控制: 无
- 特别说明:
share_tokens
为空,且pool_token
不为空时,会吊销指定的Pool Token
Curl
curl --location 'https://ai.fakeopen.com/pool/update' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'share_tokens=<Share Token>' \
--data-urlencode 'pool_token=<Pool Token>'
javascript
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
var urlencoded = new URLSearchParams();
urlencoded.append("share_tokens", "<Share Token>");
urlencoded.append("pool_token", "<Pool Token>");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://ai.fakeopen.com/pool/update", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
nodejs
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
'share_tokens': '<Share Token>',
'pool_token': '<Pool Token>'
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://ai.fakeopen.com/pool/update',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
Python
import requests
url = "https://ai.fakeopen.com/pool/update"
payload = 'share_tokens=<Share Token>&pool_token=<Pool Token>'
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)