Concepts

Conversations

Sovereign groups requests into conversations, for your dashboard and to keep a conversation on one provider.

Why it matters

A conversation is the unit Sovereign thinks in. Its requests stay with one provider, so the prompt cache keeps paying off, and the dashboard shows each conversation as one session: who had it, what it was for, the models that answered and what it saved.

Send a session id

The most reliable way is to send your own id with every request of a conversation, in any header ending in session-id:

curl https://sov.solibra.ai/v1/chat/completions \
  -H "Authorization: Bearer $SOV_API_KEY" \
  -H "x-session-id: ticket-48213" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6.1-sol", "messages": [{"role": "user", "content": "Where is my order?"}]}'

Use one id per conversation, like a ticket, chat or job id. Ids are scoped to your key, so two apps can't collide.

Claude Code sends its own session id, so nothing is needed there.

Without one

Sovereign groups requests by how the conversation began and how it continues: a first message starts a new conversation, and a follow-up joins the conversation it continues. This works for most chat apps; send an id when your app runs many similar conversations at once.