Platform integration
Embed Tesska's credential capabilities into your product: your users each connect their own Tesska and your platform calls the broker on their behalf — while your platform's own operational credentials go through its own workspace. No raw secret ever touches your code.
Two integration shapes
Pick one — or combine both — depending on who owns the credentials:
- Connect Tesska (OAuth) — each of your users connects their own Tesska account. Your platform receives a per-user, revocable, scoped token and calls the broker on their behalf. Credentials always remain the user's.
- Platform-owned workspace — your platform hosts its own operational credentials (bot accounts, deploy keys, …) in its own workspace, issues a project key (prefixed tsk_) in the console's Token Center, and calls /v1/* directly.
Shape 1: Connect Tesska (acting on behalf of users)
Register a client yourself under Developer Apps in the console (the client_secret is shown only once — store it safely). Integration follows the standard OAuth authorization-code flow with mandatory PKCE (S256): redirect the user to the consent page, then exchange the authorization code for a per-user access_token — a revocable, scoped key you can use directly as a Bearer token on every /v1/* endpoint.
# 1. Redirect the user to the Tesska consent page (PKCE S256 is mandatory)
GET https://tesska.com/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://your-platform.com/callback
&state=RANDOM_STATE
&code_challenge=BASE64URL(SHA256(code_verifier))
&code_challenge_method=S256
# 2. Exchange the authorization code for a per-user access token
POST https://tesska.com/oauth/token
{ "code": "AUTH_CODE", "code_verifier": "CODE_VERIFIER" }
# => { "access_token": "..." }
# A revocable, per-user scoped key. Use it as a Bearer token on /v1/*.With the token: call the broker on the user's behalf
Use GET /v1/grants to see which credentials the user has authorized for your app and GET /v1/platforms for available platforms, then POST /v1/login to broker short-lived access. Direct-issue (A) credentials return a short-lived token immediately; approval-required (B) credentials push a request to the owner's phone — once approved, fetch the end-to-end encrypted result via GET /v1/approvals/:id. Only your caller's private key can decrypt it.
# Discover what the connected user has authorized for your app
curl https://tesska.com/v1/grants \
-H "Authorization: Bearer USER_ACCESS_TOKEN"
# Broker a short-lived access token (never the raw secret)
curl -X POST https://tesska.com/v1/login \
-H "Authorization: Bearer USER_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"platform":"github","account":"octocat"}'
# Mode A (direct issue) => { "token": "...", "expiresAt": "...", "scopes": [...] }
# Mode B (approval) => { "kind": "pending_approval", "requestId": "...", "expiresAt": "..." }
# the owner approves on their phone; poll GET /v1/approvals/:idShape 2: platform-owned workspace, direct to the broker
Your platform's own operational credentials have nothing to do with your users, so they take the direct path: host them in a workspace of your own and issue a separate project key per backend service in the Token Center. Every grant = project × credential × scope, plus a token TTL cap, per-minute rate limits and a per-project platform allowlist — so the blast radius of any single leaked key stays minimal.
# Your platform's own operational credentials, via a project-scoped key
curl -X POST https://tesska.com/v1/login \
-H "Authorization: Bearer tsk_..." \
-H "Content-Type: application/json" \
-d '{"platform":"slack","account":"ops-bot"}'Security boundaries
- Your platform never receives a user's raw credential — the broker only delivers short-lived access tokens (raw delivery requires the asset owner to opt in explicitly and is gated by a global switch, off by default).
- Approval-required (B) credentials need the owner's approval on their phone for every call; results are end-to-end encrypted and the server never sees plaintext.
- Users can revoke your app's access at any time under Connected Apps; credentials themselves can be frozen or revoked with one click.
- Full audit logging records metadata only (never plaintext), backed by anomaly detection and push alerts.
- Multi-sig (M-of-N) and seed-phrase-grade protection: the most sensitive keys can be Shamir-split into N shares where any M reconstruct — neither the server nor your platform ever holds the complete key (coming soon).
Credentials belong to the user.Under Connect Tesska your platform only ever handles short-lived tokens and end-to-end ciphertext; users can withdraw access at any moment without affecting their other connected apps.
Approval webhooksPlanned
Outbound webhooks are not live yet. For the approval (B) flow, poll GET /v1/approvals/:id for the result. Official SDKs have not shipped either — every endpoint is plain HTTPS + JSON, so any HTTP client plus the examples in these docs is all you need.
Partnerships & billing
Billing for platform-level integrations is covered on the pricing page. For bulk user onboarding, higher rate limits or dedicated support, get in touch with us via tesska.com.