Getting Started with Notis
Notis is an AI data egress gateway. You point your apps and coding agents at it, it inspects every prompt and streamed response inline — monitor, redact, tokenize, or block sensitive data — and writes an audit trail. Detection is deterministic and runs in-path: your data never leaves your boundary to be scanned.
This guide takes you from zero to protected traffic in about ten minutes.
Overview
There are two moving parts. The gateway is a dedicated proxy for your workspace — your traffic flows through it, and it enforces policy inline. The control plane (app.notis.io) is where you manage policies, keys, and the audit trail. The gateway pulls policy from the control plane and pushes audit metadata back to it — raw prompt content never leaves the gateway.
Before you start
You need access to a Notis workspace. Design partners are provisioned one and invited by email — accept the invite and sign in at app.notis.io. Everything below happens inside your workspace.
Don’t have access yet? .
Activate your gateway
In the control plane, open Gateway and click Activate. Provisioning takes a minute or two; the page updates to Ready when your dedicated gateway is live. Note its endpoint — it looks like:
https://<your-workspace>.gateway.notis.io
A freshly started gateway warms up for a few seconds while it loads your policy. If a request lands in that window it returns 503 with Retry-After — just retry.
Choose a policy
Open Policies and browse the pack catalog. Pick a starting point — e.g. PII Baseline (redacts SSNs, emails, phone numbers, cards) or Secrets (API keys, tokens, private keys) — and activate it. Policies compose, so you can attach more than one, and scope them to specific workloads.
Each check has an action: monitor (observe only), redact, tokenize (reversible — restored on the response), or block. Start with monitor if you want to see what fires before enforcing.
Get an API key
Open API Keys and generate a key. It looks like nt_live_… and is shown once — copy it now. This is the credential your app or agent presents to the gateway (it never sees your real provider key; the gateway holds that).
Route your traffic through the gateway
You don’t rewrite your code — you change one base URL so calls go to your gateway instead of the provider directly. Pick your path:
Point your app’s base URL at the gateway and authenticate with your nt_live_ key. The gateway speaks the provider’s native API, so your SDK and request bodies are unchanged.
Your nt_live_ key is the only credential your app sends. The gateway holds the provider (Anthropic, OpenAI) credential and applies it on the outbound call, so your provider key never lives in your app or travels in your requests. Design-partner workspaces are set up with a provider credential for you; using your own is configured with your Notis contact during onboarding.
curl https://<your-workspace>.gateway.notis.io/v1/messages \
-H "x-api-key: $NOTIS_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [
{ "role": "user",
"content": "Draft a reply to John Doe, SSN 123-45-6789." }
]
}'from openai import OpenAI
client = OpenAI(
base_url="https://<your-workspace>.gateway.notis.io/v1",
api_key="nt_live_...", # your Notis key, not your OpenAI key
)
client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "..."}],
)Send your first request
Send a prompt containing something sensitive (an SSN, an API key) and watch it get redacted before it reaches the model. Two easy ways to confirm it’s working:
- Policy Tester (in the control plane) — send a sample prompt with and without Notis and see the gateway’s decision side by side.
- Audit Log — every request shows the action taken, what was detected, the policy that fired, and the gateway’s own overhead (sub-millisecond; the total round-trip time is the model generating a response, not Notis).
Review your coverage
Open Coverage. Notis flags any sensitive data it detected that your active policy doesn’t yet govern — your unreviewed exposure. For each category you decide: enforce it (add a pack), monitor it, or dismiss it as an auditable decision. Drive it to zero and you have a policy that matches your real traffic.
Troubleshooting
503 — “gateway is starting”
The gateway is warming up and loading your policy. It’s transient and carries a Retry-After header — retry in a couple of seconds. A gateway that has been idle cold-starts on the next request, so the first call after a quiet period may briefly warm up.
“Gateway is not active yet”
The workspace gateway hasn’t been provisioned. Open Gateway and click Activate; wait for Ready before sending traffic.
401 / 403 on requests
Check that you’re sending your nt_live_ key (not your provider key) and that the base URL points at your workspace’s gateway endpoint. Keys are workspace-scoped — a key from another workspace is rejected.
Requests feel slow
Total round-trip time is mostly the model generating tokens, not Notis. The audit log’s Overhead column is the gateway’s own time — typically well under a millisecond for interactive traffic.
Policy shows active but nothing is redacted
Confirm the policy is attached to the workload you’re calling (or set as the workspace baseline), and that the check for that data type is enabled and set to an enforcing action rather than monitor. Coverage will show anything detected but not governed.
Need a hand?
Stuck on setup or want a walkthrough? and we’ll help you get protected.