Safe AI address
Paste one address into your tool. Every reply is checked first.
The Safe AI address sits between your tool and your AI provider. Your tool sends its normal chat request to Nexxtool AI; we forward it to your provider with your saved key, check the full reply against your rules and facts, and only a safe reply goes back.
Base URL: https://nexxtool.ai/v1/connect
API key: your Nexxtool key (wtk_live_...)
Endpoint: POST /v1/connect/chat/completions
Models: GET /v1/connect/models
Set it up
- Add your AI key on Connect your AI (or choose "Our AI") and press Test connection.
- Tick the rules in plain English (check my facts, block leftover AI phrases, no guarantees, no links), add words to never say, set the fallback message and how many rewrites (0 to 3, default 2).
- Copy the Safe AI address and your key into your tool. The page has a Send a test message box that runs the whole thing.
What happens to each reply
- Pass: returned unchanged.
- Block: the AI gets one follow-up: "Your reply broke these rules: [plain list]. Rewrite it so it follows them. Keep it helpful." The new reply is checked again, up to your rewrite count.
- Still failing: your customer gets your fallback message (default "Let me get a team member to help with that.") and the response says it was replaced and why.
Nothing unchecked is ever returned. If your AI errors or times out (on the first call or during a rewrite), or our checker cannot run on a reply, your customer gets the fallback message with HTTP 200, the same for normal and "stream": true calls. They never see an error or the unchecked reply. The real error is saved in your Checks history so you can fix it. The one exception: if your monthly checks are used up the call returns HTTP 402 and no AI text.
The response is a normal OpenAI chat completion plus a nexxtool object: outcome (passed, fixed or fallback), rewrites, checks_used, replaced; and the headers X-Nexxtool-Outcome and X-Nexxtool-Rewrites.
Reasons are hidden by default. The nexxtool object has no reasons (and no why) unless you turn on Include reasons in the response in the connection's settings on Connect your AI. When it is on, reasons lists the plain-English reasons a reply was changed or replaced (an empty list when it passed). This keeps your rules out of the response the people using your tool can see. Reasons are always saved in your dashboard history, whatever this setting is.
Checks, history and limits
- Every attempt is one check (original reply and each rewrite) and is saved in Checks with its result, reasons, whether it was the original or a rewrite, and the final outcome. Like all history, only a 60-character preview and a fingerprint of each reply are kept, never the full reply.
- How many connections your plan allows is on Pricing. If you downgrade, only the oldest connections keep working.
- The model named in the request picks the connection when it equals a connection's name or id; otherwise your oldest connection is used with its own model.
- Only a few requests per account run at the same time, plus the normal per-key rate limit.
Streaming
"stream": true works, with an honest catch: we must hold the whole reply to check it, so the first words arrive only after the full reply is generated and checked (plus any rewrites). Then the checked text is streamed to you. Expect a delay of one or more AI calls before streaming starts. The final chunk carries the nexxtool object.
Not supported (and why)
Tool and function calls, images, audio and n above 1 are refused with a clear 400, because those cannot be checked as text.
Which tools can use it
Any tool that lets you change the OpenAI base URL (also called API base, base path or endpoint) can use it. Tools locked to one vendor's address cannot; use the API there.
| Tool | Where to paste the address |
|---|---|
| OpenAI SDKs (Python, JavaScript, Go, Java, Ruby, C#) | base_url / baseURL on the client |
| Flowise | ChatOpenAI node, Additional Parameters, BasePath |
| n8n | OpenAI credential, Base URL field (present in current versions; check yours) |
| Open WebUI, LibreChat and similar chat front ends | Connections / endpoint settings, OpenAI API URL (base URL) |
| Zapier, Make, Botpress and similar | Use the tool's HTTP / webhook step to call the endpoint above. We could not confirm a base URL setting in their public documentation. |
Provider documentation we used
- OpenAI Chat Completions: platform.openai.com/docs/api-reference/chat
- Anthropic Messages API and its OpenAI compatibility layer (base URL
https://api.anthropic.com/v1/): platform.claude.com/docs/en/api/openai-sdk (formerly docs.anthropic.com) - Google Gemini API (native
generateContent; OpenAI-compatible basehttps://generativelanguage.googleapis.com/v1beta/openai/): ai.google.dev/gemini-api/docs/openai - Flowise ChatOpenAI custom base path: docs.flowiseai.com
We call each provider's native API with your key (OpenAI chat completions, Anthropic Messages, Gemini generateContent); the OpenAI format is what your tool speaks to us.