跳到正文

账户

激活、余额、充值、密钥与套餐管理。

概览

基础路径: /v1/account
Python 命名空间: account
text
# Python
from infrai import account

# TypeScript
import { InfraiClient } from "@infrai/sdk";
const client = new InfraiClient({ apiKey: process.env.INFRAI_API_KEY! });
// → client.account

方法

account.activate

POST /v1/activate

一次调用完成入驻:匿名账户、项目密钥与试用额度(Python)。

Python

python
infra.activate(*, region="auto", device_kind="cli", write_credentials=True) -> ActivateResult

TypeScript

typescript
// activation runs via the CLI / infra.activate() in Python; the JS client takes a key directly

参数

名称类型必填说明
region"auto" | "western" | "china"可选激活所在区域。
write_credentialsboolean可选激活后将凭证持久化到本地。

返回

ActivateResult { account_id, project_id, primary_api_key, trial_credit_usd, checkout_url }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

# One-line onboarding: anonymous account + device fingerprint + trial credit.
act = infra.activate()
print("activated:", act.ok, "| trial: $%.2f" % act.trial_credit_usd)

account.balance

GET /v1/account/balance

读取钱包余额。

Python

python
account.balance()

TypeScript

typescript
client.account.balance(): Promise<{ balance_usd, currency }>

返回

{ balance_usd, currency }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import account

bal = account.balance()
print("balance: $%s %s" % (bal.get("balance_usd"), bal.get("currency", "USD")))

account.topup

POST /v1/account/topup

为钱包充值;返回结账 URL——SDK 永不接触卡数据。

Python

python
account.topup(amount_usd=..., return_url=None, idempotency_key=None)

TypeScript

typescript
client.account.topup(opts: TopupOptions): Promise<TopupRecord>

参数

名称类型必填说明
amount_usdnumber
必填
充值金额(美元)。
return_urlstring可选结账后跳转地址。
idempotency_keystring可选可选去重 key;相同重试将返回同一结果。

返回

TopupRecord { topup_id, amount_usd, state, next_action_url? }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import account

# Returns a hosted checkout_url to hand the user; the SDK never touches card data.
t = account.topup(
    amount_usd=25.0,
    return_url="https://app.example.com/billing/return",
)
print("state:", t.get("state"))
print("complete payment at:", t.get("checkout_url") or t.get("next_action_url"))

account.keys.list

GET /v1/account/keys

列出账户下的项目密钥。

Python

python
account.keys.list()

TypeScript

typescript
// see ROUTES["account.keys.list"]

返回

{ items: Array<{ key_id, label, scopes, created_at }> }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import account

for k in account.keys.list().get("items", []):
    print(k.get("key_id"), k.get("label"), k.get("created_at"))

account.tier.upgrade

POST /v1/account/tier/upgrade

将账户升级到目标套餐。

Python

python
# see capability account.tier.upgrade

TypeScript

typescript
client.account.tier.upgrade(target_tier: string): Promise<AccountSummary>

参数

名称类型必填说明
target_tierstring
必填
要升级到的套餐 id。

返回

AccountSummary { account_id, kind, status, tier, balance_usd }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import account

print("tier:", account.tier.upgrade(target_tier="pro").get("tier"))