Skip to main content
Tell uses two auth systems: JWT tokens for the HTTP API (dashboards, queries, management) and streaming API keys for data ingestion (SDKs, TCP, syslog). Both are workspace-scoped.

Quick start

First-time setup creates your admin account and returns both token types:
The setup response includes a JWT token for immediate API access and a streaming key for SDK ingestion.

JWT tokens (HTTP API)

All API requests use a tell_-prefixed JWT token in the Authorization header:

Login

Returns:
Tokens expire after 24 hours by default.

Refresh

Extend a token’s expiry without re-entering credentials:
Returns a new token. The old token is invalidated.

Logout

This ends the current session and revokes the token so it can’t be reused.

Current user

Check who a token belongs to:
Returns:
Any authenticated user can call it, and it is not rate-limited like the other auth endpoints. A missing, invalid, or revoked token returns 401.

CLI login

The CLI stores credentials in your OS keyring (macOS Keychain, Windows Credential Manager, or Linux Secret Service):

Streaming API keys (data ingestion)

SDKs and pipeline sources use 32-character hex keys to authenticate data ingestion:
Each key maps to a workspace. You get your first streaming key during setup. Manage additional keys with the CLI:
See API Keys for the full reference.

Sessions

Tell tracks sessions per device with IP address and user agent. You can be logged in from multiple devices simultaneously. The logout endpoint terminates all sessions at once.

Rate limiting

Auth endpoints are rate-limited to 10 requests per minute per IP address. If you exceed this, you’ll receive a 429 Too Many Requests response with a Retry-After: 60 header.

List responses

Every endpoint that returns a list of one kind of resource uses the same shape:
  • items holds one page of results.
  • total counts every matching row across all pages, not just this page.
  • limit and offset echo the page you got.
  • has_more is true when rows exist past this page.
Page with the limit and offset query parameters: Boards, canvases, board groups, and workspace lists (/boards, /canvases, /board-groups, /user/workspaces, /admin/workspaces) default to limit=200 so a plain request returns everything for typical workspaces. The maximum is still 200. Some lists add fields beside these five. For example, /people also returns all_time and total_events_scope. Single resources and analytics results (metric series, funnels, retention) don’t use this shape.

Token format

JWT tokens contain the user ID, email, role, and workspace ID. Streaming keys map directly to a workspace ID with no additional claims.

What’s next