TitanEnsemble — Quickstart

Base URL: https://api.titanensemble.com · Auth: X-API-Key: <your key> on every request.

TitanEnsemble is one API for the frontier models — your provider key pays the model, the subscription pays for the intelligence layer: every API key keeps its own persistent memory, its own briefing, and its own reading material. An API key is a conversation.

This walkthrough ends in a working call, in under a minute.

0. Get your API key

Sign in at titanensemble.com, then open Settings → Keys and create a key. It is shown exactly once — copy it now.

export TITAN_KEY=qk_...

Each key is its own conversation, with its own memory, briefing and reading material. Create a separate key per project or per assistant rather than reusing one; keys are also the unit you revoke.

1. See the seats

curl -s https://api.titanensemble.com/v1/models \
  -H "X-API-Key: $TITAN_KEY" | jq '.data[].id'

Six seats: AgentK, AgentG, AgentM, AgentQ, AgentD (frontier models, served on your own provider account) and AgentT (hosted by us — works before you add any provider key, and it's what the free tier runs on).

2. Your first completion — the hosted seat

curl -s https://api.titanensemble.com/v1/chat/completions \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"model": "AgentT", "messages": [{"role": "user", "content": "hello"}]}'

Standard OpenAI-compatible request/response shapes — existing SDKs work by pointing base_url at us.

3. Add a provider key — unlock the frontier seats

Store your own provider credential once. We validate it against the provider at paste time (a metadata-only call — zero tokens billed) and never show it again:

curl -s -X PUT https://api.titanensemble.com/v1/secrets/providers/openrouter \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"value": "sk-or-..."}'
  • A bad key is a 400 with the provider's own verdict — nothing is stored.
  • A provider outage is a 503 — nothing is stored; try again.
  • Supported providers today: openrouter, together, novita. You can store keys for several; calls route across your accounts by your priority order, then measured speed.

Check what your keys unlock:

curl -s https://api.titanensemble.com/v1/secrets -H "X-API-Key: $TITAN_KEY" | jq .availability

Each provider row shows which seats it serves (a false cell means that provider doesn't carry the model — add a key for one that does).

4. A frontier completion — on your key

curl -s https://api.titanensemble.com/v1/chat/completions \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"model": "AgentK", "messages": [{"role": "user", "content": "hello"}]}'

Your provider bills the model tokens directly. We never place a paid call on your behalf with our own accounts — if no credential of yours can serve a seat, the request fails with a clear error instead.

5. Teach your key

The briefing — what you TELL a key (persistent instructions, editable any time):

curl -s -X PUT https://api.titanensemble.com/v1/auth/keys/$KEY_ID/briefing \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"text": "You are the support bot for AcmeCo. Never discuss pricing."}'

A knowledge set — what you GIVE it to read (text documents, embedded and retrieved into that key's calls):

SET=$(curl -s -X POST https://api.titanensemble.com/v1/knowledge-sets \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"name": "product docs"}' | jq -r .id)

curl -s -X POST https://api.titanensemble.com/v1/knowledge-sets/$SET/documents \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"name": "faq.md", "text": "Q: How do refunds work?\nA: ..."}'

curl -s -X POST https://api.titanensemble.com/v1/knowledge-sets/$SET/attach \
  -H "X-API-Key: $TITAN_KEY" -H "Content-Type: application/json" \
  -d '{"key_id": "'$KEY_ID'"}'

Text only, quota'd per plan. Knowledge sets are account-level — attach the same set to several keys; each key composes its own reading list.

6. Watch your usage

curl -s https://api.titanensemble.com/v1/usage/summary -H "X-API-Key: $TITAN_KEY"

The breakdown shows tokens per resource type — and for calls served on your own provider accounts, which provider served each slice, so your provider invoices reconcile against our numbers. Optional per-key spending ceilings: PUT /v1/budgets/api_token/{key_id}.

Full endpoint reference: API.md.