---
summary: "T3 Chat provider auth, tRPC endpoint, and quota windows."
read_when:
  - Adding or modifying the T3 Chat provider
  - Debugging T3 Chat cookie import or usage parsing
  - Explaining T3 Chat setup
---

# T3 Chat Provider

The T3 Chat provider tracks the 4-hour Base and monthly Overage usage buckets from
[t3.chat](https://t3.chat).

> **Unofficial integration:** T3 Chat does not publish an API for this data. CodexBar reads a cookie-authenticated
> endpoint used by the website, so the integration may change or stop working without notice.

## Setup

### Automatic (recommended)

1. Sign in to T3 Chat in any supported browser.
2. Enable **T3 Chat** in **Settings → Providers**.

CodexBar imports your browser session cookie automatically. CodexBar sends the cookie only to
`https://t3.chat`.

**Note**: Browser cookie import may require Full Disk Access (especially for Safari) or macOS
Keychain approval (for Chromium-based browsers).

### Manual

Set **Cookie source** to **Manual** in the T3 Chat provider settings, then paste either:

- A bare `Cookie: ...` header value copied from a browser network request to `t3.chat`, or
- A full `curl` command captured from the T3 Chat settings page (all `-H` flags are parsed;
  only the `Cookie` header and a fixed set of safe request headers are forwarded).

To capture the cookie manually:

1. Open [t3.chat/settings/customization](https://t3.chat/settings/customization) in your browser.
2. Open Developer Tools → Network tab.
3. Reload the page and find a `getCustomerData` tRPC request.
4. Right-click → Copy → Copy as cURL.
5. Paste the full `curl` command into the **T3 Chat cookie** field in CodexBar settings.

T3 Chat does not support a standalone environment variable or a `--cookie` CLI flag. The only manual path is the Settings field above.

## Data Source

CodexBar sends one GET request per refresh:

```text
GET https://t3.chat/api/trpc/getCustomerData?batch=1&input=...
```

The response is JSONL. CodexBar scans each line for the embedded `getCustomerData` tRPC result
object and decodes it to a `T3ChatCustomerData` struct. No other T3 Chat endpoints are called.

### Fields mapped to usage windows

| Source field | CodexBar label | Notes |
|---|---|---|
| `usageFourHourPercentage` | **Base** (primary) | 4-hour rolling window; 0–100 |
| `usageFourHourNextResetAt` | Base reset time | JavaScript epoch ms or Unix seconds |
| `usageWindowNextResetAt` | Base reset time (fallback) | Used when `usageFourHourNextResetAt` is absent |
| `usageMonthPercentage` | **Overage** (secondary) | Monthly overage window |
| `usagePeriodPercentage` | Overage (fallback) | Used when `usageMonthPercentage` is absent |
| `subscription.currentPeriodEnd` | Overage reset time | Billing period end; absent on some plans |
| `usageBand` | Base label suffix | e.g. `"standard"` appended as "Base - standard" |
| `subTier` / `subscription.productName` | Plan name | Shown as the account identity in the menu |

Timestamps larger than 10 billion are treated as milliseconds; smaller values are treated as Unix
seconds.

## Usage Windows

**Base window (primary)**: 4-hour rolling rate-limit bucket. Tracks the percentage of the hourly
model-generation allowance consumed since the window opened. Resets approximately every 4 hours on
T3 Chat's server clock.

**Overage window (secondary)**: Monthly overage budget. Tracks spend beyond the included plan
allowance. Reset timing comes from the active subscription's current-period end; if no subscription
metadata is present, the reset time is shown as unknown.

## CLI

```bash
# Show T3 Chat usage
codexbar usage --provider t3chat

# Or use the alias
codexbar usage --provider t3-chat
codexbar usage --provider t3
```

T3 Chat provides no token-cost data. The `usage --format json` output contains usage and identity
data, while `codexbar cost --provider t3chat` is unsupported.

## Common errors

| Error | Cause | Fix |
|---|---|---|
| `No T3 Chat cookies found` | No browser session for `t3.chat` | Sign in to T3 Chat in a supported browser and try automatic mode |
| `T3 Chat session cookie is invalid or expired` | Stale or revoked session cookie | Sign out of T3 Chat, sign back in, then refresh CodexBar or repaste the cookie |
| `T3 Chat returned a Vercel security challenge` | Manual Cookie header was used but T3 Chat requires additional Vercel request headers | Paste a full `curl` capture instead of a bare Cookie header |
| `Could not parse T3 Chat usage` | T3 Chat changed its tRPC response shape | Open a CodexBar issue with a redacted response sample |
| `HTTP 401` / `HTTP 403` | Session expired or account not found | Re-authenticate |
| `HTTP 429` with `x-vercel-mitigated: challenge` | Rate-limited by Vercel edge | Wait a few minutes, then retry with a full cURL capture |

## Key files

- `Sources/CodexBarCore/Providers/T3Chat/T3ChatProviderDescriptor.swift` — provider metadata and fetch pipeline
- `Sources/CodexBarCore/Providers/T3Chat/T3ChatUsageFetcher.swift` — tRPC request, cookie import, and cURL parsing
- `Sources/CodexBarCore/Providers/T3Chat/T3ChatUsageSnapshot.swift` — response decoding and window mapping
- `Sources/CodexBar/Providers/T3Chat/T3ChatProviderImplementation.swift` — settings pickers and bindings
- `Sources/CodexBar/Providers/T3Chat/T3ChatSettingsStore.swift` — cookie source and header persistence
