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 response

Python (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:

  1. Detected the PII in your prompt
  2. Replaced it with tokens before sending to the LLM
  3. 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