Me
返回当前凭证对应的账户视图。
- 手动 API Key:返回完整的手动 key 账户视图
- OAuth token:按 scope 裁剪字段
Endpoint
http
GET https://api.sakrylle.com/v1/me请求头
| 名称 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer sk-xxxxxxxxxxxxxxxx 或 Bearer sk_oauth_xxxxxxxxxxxxxxxx |
核心字段
| 字段 | 类型 | 说明 |
|---|---|---|
auth_type | string | api_key 或 oauth |
user | object | 用户资料块 |
account | object | 钱包/显示货币块 |
current_group | object | 当前分组 |
allowed_groups | array | 仅 OAuth account:read 返回 |
granted_scopes | array | 仅 OAuth 返回 |
effective_capabilities | object | 仅 OAuth 返回;已授予 scope 与当前分组能力的交集 |
user
| 字段 | 说明 |
|---|---|
user.id | 用户 ID |
user.username | 用户名 |
user.display_name | 展示名 |
user.avatar_url | 头像 URL,可为 null |
user.locale | 当前 locale |
user.email | 仅在相应 scope 下返回 |
account
| 字段 | 说明 |
|---|---|
account.credit_remaining | 当前余额 |
account.currency_display | 当前显示货币,固定为 CNY |
account.currency_symbol | 当前显示货币符号,固定为 ¥ |
Group fields
| 字段 | 说明 |
|---|---|
id | 数值分组 ID |
name | 分组名 |
rate_multiplier | 当前分组倍率 |
allow_image_generation | 是否允许图像生成相关能力 |
is_default | 仅 allowed_groups[] 返回;标记是否为默认分组 |
Scope 裁剪规则
| Scope | 返回内容 |
|---|---|
profile:read | user |
account:balance:read | account |
account:read | account、current_group、allowed_groups、granted_scopes、effective_capabilities |
补充说明:
- OAuth 响应总会包含
auth_type - OAuth 响应会包含
granted_scopes与effective_capabilities - 若请求中带
openid,响应还可能出现顶层 OIDC 字段,如sub
手动 API Key 示例
json
{
"auth_type": "api_key",
"user": {
"id": 42,
"username": "alice",
"display_name": "alice",
"avatar_url": null,
"locale": "zh-CN"
},
"account": {
"credit_remaining": 23.71,
"currency_display": "CNY",
"currency_symbol": "¥"
},
"current_group": {
"id": 3,
"name": "GPT-Pro",
"rate_multiplier": 0.5,
"allow_image_generation": true
}
}OAuth 示例
json
{
"auth_type": "oauth",
"user": {
"id": 42,
"username": "alice",
"display_name": "alice",
"avatar_url": null,
"locale": "zh-CN"
},
"account": {
"credit_remaining": 23.71,
"currency_display": "CNY",
"currency_symbol": "¥"
},
"current_group": {
"id": 3,
"name": "GPT-Pro",
"rate_multiplier": 0.5,
"allow_image_generation": true
},
"allowed_groups": [
{
"id": 3,
"name": "GPT-Pro",
"rate_multiplier": 0.5,
"allow_image_generation": true,
"is_default": true
},
{
"id": 5,
"name": "GPT-Image",
"rate_multiplier": 1,
"allow_image_generation": true,
"is_default": false
}
],
"granted_scopes": [
"profile:read",
"account:read",
"account:balance:read"
],
"effective_capabilities": {
"profile_read": true,
"email_read": false,
"account_read": true,
"account_balance_read": true,
"models_read": false,
"chat_completions_create": false,
"responses_create": false,
"messages_create": false,
"images_create": false,
"usage_read": false,
"offline_access": false
}
}说明
- 手动 API Key 不做 scope 裁剪
- OAuth token 至少需要
profile:read、account:read、account:balance:read之一才能访问 effective_capabilities.images_create取决于 scope 与分组能力,单有 scope 不一定为true
错误
401 authentication_error— 鉴权失败403 insufficient_scope/permission_error— OAuth scope 不足或无权访问
代码示例
bash
curl https://api.sakrylle.com/v1/me \
-H "Authorization: Bearer $SAKRYLLE_API_KEY"python
import httpx
resp = httpx.get(
"https://api.sakrylle.com/v1/me",
headers={"Authorization": "Bearer sk-xxxxxxxxxxxxxxxx"},
)
print(resp.json())javascript
const resp = await fetch("https://api.sakrylle.com/v1/me", {
headers: { Authorization: "Bearer sk-xxxxxxxxxxxxxxxx" },
});
console.log(await resp.json());go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET",
"https://api.sakrylle.com/v1/me", nil)
req.Header.Set("Authorization", "Bearer sk-xxxxxxxxxxxxxxxx")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}rust
use reqwest::Client;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = Client::new();
let resp: serde_json::Value = client
.get("https://api.sakrylle.com/v1/me")
.bearer_auth("sk-xxxxxxxxxxxxxxxx")
.send()
.await?
.json()
.await?;
println!("{resp:#}");
Ok(())
}java
import java.net.URI;
import java.net.http.*;
public class Me {
public static void main(String[] args) throws Exception {
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.sakrylle.com/v1/me"))
.header("Authorization", "Bearer sk-xxxxxxxxxxxxxxxx")
.GET()
.build();
HttpResponse<String> resp = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(resp.body());
}
}csharp
using System.Net.Http.Headers;
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "sk-xxxxxxxxxxxxxxxx");
var resp = await http.GetAsync("https://api.sakrylle.com/v1/me");
Console.WriteLine(await resp.Content.ReadAsStringAsync());