Ship AI features without shipping card data.

Point your OpenAI and Anthropic apps at one base URL. Card numbers, IBANs and customer IDs never reach the provider.

disputes/explain.ts
// one change: baseURL points at your gateway
const client = new OpenAI({ baseURL: "https://nymgate.corp.internal/v1", apiKey: process.env.PG_KEY });

const res = await client.responses.create({
  model: "gpt-5",
  input: `Explain why card ⟦CARD:7F31:0001⟧ for ⟦EMAIL:7F31:0002⟧ was declined at merchant ⟦MERCHANT_ID:7F31:0003⟧.`,
});

Live in an afternoon

No SDK. No code changes beyond the base URL.

01 · Point

Change the base URL

Your existing OpenAI or Anthropic client.

02 · Key

Use a gateway key

Real provider keys stay in gateway secrets.

03 · Stream

Keep streaming

Deltas and tool calls are restored in flight.

04 · Ship

Ship it

Card data never reaches the provider.

For engineers

Questions engineers ask.

Does streaming still work?
Yes. Server-sent events are parsed per protocol and tokens are restored even when split across chunks.
What about tool calls?
Arguments are tokenized on the way out and restored as parsed JSON on the way back.
What about embeddings?
Not supported yet. Those requests are rejected, never sent raw.
How much latency does it add?
About 177 ms at p95 for a 2,000-character prompt in our benchmark.

Give your teams AI your security team can sign off.