Overview
The API manages your account, API keys and subusers. The dashboard is a client of the same API - everything it does, you can script.
https://api.tpp.ioRequests and responses are JSON. Every endpoint below /v1 requires a bearer token:
Authorization: Bearer <token>Getting a token
Section titled “Getting a token”Sign in with your dashboard email and password:
curl -s https://api.tpp.io/v1/auth/login \ -d '{"email": "you@example.com", "password": "..."}'{ "id": "...", "token": "...", "expires_at": "2026-08-28T09:30:00Z" }Session tokens last 30 days. For scripts and CI, create a named API key instead - keys can be non-expiring and revoked individually.
POST /v1/auth/logout revokes the token that made the request.
Errors
Section titled “Errors”Errors are {"error": "human-readable message"} with a matching status:
| Status | Meaning |
|---|---|
400 |
Invalid input - the message says which field |
401 |
Missing, invalid or expired token |
403 |
Not allowed - including writes while your account is disabled |
404 |
No such resource (or not yours) |
409 |
Name already taken (e.g. a duplicate proxy_user) |
A disabled account keeps read access - you can still see your balance and why - but all writes return 403.
Pagination
Section titled “Pagination”List endpoints take limit (default 100, max 1000) and offset query parameters.
All bandwidth amounts are integers in bytes. 1 GB as sold is 10⁹ bytes.