/me Available#Who am I
Returns the tenant, the integration, the key with its effective scopes, the rate limits and the wallet state. No scope is required: a valid key is enough. Handy for a connectivity check and for picking the cell.
Response body
| Field | Type | Description |
|---|---|---|
tenant | object required | The tenant that owns the key. |
tenant.id | string required | |
tenant.name | string required | |
cell | string required | Platform cell: ru, en or id. Values: ru en id |
base_url | string required | Base URL of this cell API. |
integration | object required | The integration (service account) that owns the key. |
integration.id | string required | |
integration.name | string required | |
channel_id | string required, may be null | The integration "api" channel; null — the channel is not created yet. |
key | object required | |
key.key_id | string required | Public key id (not a secret). |
key.mode | string required | Values: live test |
key.scopes | array<string> required | Effective scopes: integration scopes ∩ the owner current permissions ∩ the licence. Values: conversations:read conversations:write ai_seller:invoke leads:read leads:write leads:score analytics:read analytics:write dashboards:read articles:read articles:write articles:generate strategist:read strategist:write strategist:chat webhooks:manage |
key.expires_at | string required | Key expiry, ISO 8601 UTC. |
key.ip_allowlist | array<string> required, may be null | Allowed addresses and networks (CIDR); null — any address. |
limits | object required | Request rate limits. |
limits.read_per_min | integer required | |
limits.write_per_min | integer required | |
limits.paid_per_min | integer required | |
limits.paid_concurrency | integer required | Concurrent paid operations per tenant. |
wallet | object required | The tenant wallet (AI operations). |
wallet.balance | Money required, may be null | The wallet balance in roubles; null — the state is unknown or the tenant is not billed. |
wallet.state | string required | ok — fine; low — running low; negative — the balance is below zero; blocked — the wallet is blocked; unknown — the state could not be obtained. Details: GET /wallet. Values: ok low negative blocked unknown |
wallet.exchange | string required | suspended for negative and blocked: every route except /me and /wallet answers 402 wallet_suspended. Values: active suspended |
wallet.topup_url | string required | The dashboard address where the wallet is topped up. |
wallet.daily_spend | object required | |
wallet.daily_spend.limit | Money required, may be null | The integration daily spend limit; null — not set. |
wallet.daily_spend.used | Money required | |
crm_mode | string required | The tenant CRM mode: "internal" (our CRM) or an external system. |
Examples
curl -X GET 'https://wfacademy.org/api/public/v1/me' \
-H 'Authorization: Bearer '"$SAPPORT_API_KEY"{
"tenant": {
"id": "EXAMPLE_ID",
"name": "string"
},
"cell": "ru",
"base_url": "https://example.com/hooks/sapport",
"integration": {
"id": "EXAMPLE_ID",
"name": "string"
},
"channel_id": "EXAMPLE_ID",
"key": {
"key_id": "EXAMPLE_ID",
"mode": "live",
"scopes": [
"conversations:read"
],
"expires_at": "2026-10-11T09:00:00Z",
"ip_allowlist": [
"string"
]
},
"limits": {
"read_per_min": 0,
"write_per_min": 0,
"paid_per_min": 0,
"paid_concurrency": 0
},
"wallet": {
"balance": {
"amount": null,
"currency": null
},
"state": "ok",
"exchange": "active",
"topup_url": "https://example.com/hooks/sapport",
"daily_spend": {
"limit": null,
"used": {
"amount": null,
"currency": null
}
}
},
"crm_mode": "string"
}{
"type": "https://wfacademy.org/developers/errors#invalid_api_key",
"title": "Invalid API key",
"status": 401,
"code": "invalid_api_key",
"detail": "EXAMPLE",
"request_id": "req_EXAMPLE"
}Examples are illustrative: the key in them is a placeholder (EXAMPLE), field values are made up.
Possible errors
invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited service_unavailable internal_error