Quickstart
A key, one changed line, and your first governed call in about five minutes.
This gets one agent connected and one call on the record. It assumes you already have an account; if not, sign up first — it is free, and stays free until Navige has saved you something.
1. Create an agent and take its key
In the console, go to Agents → Add agent. Name it after the thing that will use it — the name is what you will be reading in the audit log and on the spend page at 2am, so billing-reconciler beats agent-1.
You get back a key that starts with nv_.
2. Point your client at Navige
Change the base URL, add one header, leave everything else — including your provider key — exactly as it is.
Python, OpenAI SDK
from openai import OpenAI
client = OpenAI(
base_url="https://api.navige.ai/proxy/openai/v1",
api_key=OPENAI_API_KEY, # still yours, still goes to OpenAI
default_headers={"x-navige-key": NAVIGE_KEY},
)
client.chat.completions.create(
model="gpt-5.1",
messages=[{"role": "user", "content": "ping"}],
)TypeScript, Anthropic SDK
import Anthropic from "@anthropic-ai/sdk";
const anthropic = new Anthropic({
baseURL: "https://api.navige.ai/proxy/anthropic",
apiKey: process.env.ANTHROPIC_API_KEY,
defaultHeaders: { "x-navige-key": process.env.NAVIGE_KEY! },
});
await anthropic.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 64,
messages: [{ role: "user", content: "ping" }],
});curl, if you would rather see the wire
curl https://api.navige.ai/proxy/openai/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "x-navige-key: $NAVIGE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.1","messages":[{"role":"user","content":"ping"}]}'Authorization carries your provider key and is forwarded upstream untouched. x-navige-key carries your Navige key and never leaves us. They are separate headers precisely so the two can never be mistaken for one another — see Authentication.3. Look at it
Open Transactions in the console. Your call is there, with the model, the token counts, what it cost and how long it took.
If it is not, the usual cause is the key going in the wrong header, which fails closed and loudly rather than silently: you get a 401 from Navige, not a missing row.
4. Give the work a name
One call is a call. What you actually want to know is what a job cost — the eleven model calls and four tool calls that made up one invoice run. Pass a workflow key and Navige groups them.
-H "x-navige-workflow: invoice-run"Now the spend page reports per job, and $0.0004 per call becomes $1.37 per invoice, which is a number somebody can make a decision with.
What you have now
- Every model call through that client, priced and attributed.
- A per-job cost, if you set a workflow key.
- A weekly report of what it all cost and where the waste is — modelled, not charged for, because you are on Watchtower and nothing has been changed.