Quick Start
NoPII works as a drop-in proxy. Integration takes three steps and under five minutes.
1. Create an account and register your API key
Sign up at app.nopii.co and navigate to the Getting Started page. Select your LLM provider (OpenAI, Anthropic, xAI/Grok, DeepSeek, Mistral, Gemini, Groq, Together, or Fireworks) and enter your API key.
Your API key is never stored - it's passed through to your provider on every request.
2. Update your base URL
Change one line in your existing code. Everything else stays the same - models, parameters, and API keys all work as before.
Python (OpenAI)
python
from openai import OpenAI
client = OpenAI(
base_url="https://api.nopii.co", # ← only change
api_key="sk-your-openai-key",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": "Summarize the case for John Smith, SSN 123-45-6789"
}]
)
print(response.choices[0].message.content)
# PII is tokenized before reaching OpenAI and detokenized in the responsePython (Anthropic)
python
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.nopii.co", # ← only change
api_key="sk-ant-your-key",
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{
"role": "user",
"content": "Draft a letter for Jane Doe at 123 Main St"
}]
)Node.js (OpenAI)
javascript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nopii.co", // ← only change
apiKey: "sk-your-openai-key",
});
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Summarize the case for John Smith" }],
});cURL
bash
curl -X POST https://api.nopii.co/chat/completions \
-H "Authorization: Bearer sk-your-openai-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Summarize for John Smith SSN 123-45-6789"}]
}'3. Verify it works
Send a test message that includes PII (a name, email, SSN, etc.) and verify the response comes back with the original values intact. Behind the scenes, NoPII:
- Detected the PII in your prompt
- Replaced it with tokens before sending to the LLM
- Detokenized the response so you see the original values
You can verify this in the admin console:
- Playground - Send test messages and see the tokenization in real time
- Dashboard - View your API traffic and PII detection stats
- Audit Log - See every detected PII entity with timestamps and confidence scores
Next steps
- How It Works - Understand the full tokenization flow and supported PII types
- Sessions - Optimize multi-turn conversations with session IDs
- API Reference - Full endpoint documentation
- Examples - Working code samples for popular frameworks and languages