> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bibleit.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bibleit.dev/_mcp/server.

# List personal credential metadata

GET https://api.bibleit.app/v1/accounts/{account_id}/tokens

List the owner's active personal API/CLI/manual token metadata using a finite personal `bt_` credential. Delegated OAuth and organization service tokens cannot inspect personal credentials. Results include retiring tokens during the rotation overlap but omit revoked, expired and completed rotations. Secrets, hashes and issuer principal keys are never returned. An empty scopes array means inherited current user authority. Use `limit` and `after` to paginate.

**Required scopes:** `token.get`. Scopes intersect current authority; browser cookies never authenticate REST.

Reference: https://docs.bibleit.dev/api-reference/personal-accounts/list-personal-tokens

## Authentication

- `Authorization` header (bearer token, required) — Personal bearer credential issued through existing account settings or browser-approved CLI flow. Must be active, finite, unexpired, unrevoked, within any rotation overlap, and bound to an active personal membership/user/account. Explicit scopes intersect current user permissions; empty existing personal scopes inherit current user authority. Not an OAuth grant or service token. Browser cookies are ignored.

## Request

### Path parameters

- `account_id` (string, required)

### Query parameters

- `limit` (integer, optional, default: 50)
- `after` (string, optional) — Cursor returned by this collection; book collections use the canonical numeric ID. Translation collections use lowercase slugs.

## Response

### 200

Successful operation

- `data` (list of PersonalTokenMetadata, required)
- `next_cursor` (string, required, nullable)

## Types

### PersonalTokenMetadata

- `id` (string, required)
- `label` (string, required, nullable)
- `source` (enum, required)
  - Allowed values: `manual`, `api`, `cli`
- `scopes` (list of string, required)
- `issued_at` (integer, required)
- `expires_at` (integer, required, nullable)
- `last_used_at` (integer, required, nullable)
- `retiring` (boolean, required)

## Examples

**Response**

```json
{
  "data": [
    {
      "id": "string",
      "label": "string",
      "source": "manual",
      "scopes": [
        "string"
      ],
      "issued_at": 1,
      "expires_at": 1,
      "last_used_at": 1,
      "retiring": true
    }
  ],
  "next_cursor": "string"
}
```

**SDK Code**

```python
import requests

url = "https://api.bibleit.app/v1/accounts/account_id/tokens"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bibleit.app/v1/accounts/account_id/tokens"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```