Developer API
OpenAI-compatible endpoint inside your VPN. Point any tool that speaks the OpenAI REST format at it. Your prompts never cross the public internet.
# Two environment variables. That's the migration. export OPENAI_BASE_URL="http://api.us-east-1.pro.tpai.internal/v1" export OPENAI_API_KEY="tpai-sk-..." # Your existing code works unchanged. curl -s -X POST \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"anthropic.claude-3-5-haiku-20241022-v1:0", "messages":[{"role":"user","content":"Hello."}], "max_tokens":50}' \ "$OPENAI_BASE_URL/chat/completions"
The tradeoff you should not have to make
Your prompt leaves your network, lands on their servers, passes through their infrastructure. You are trusting their retention policy, their access controls, and their incident response.
How it works
The proxy sits behind an internal load balancer in your TPAI VPC. It speaks the OpenAI REST shape and delegates to AWS Bedrock via PrivateLink. No internet hop anywhere in the chain.
No public DNS. No public IP. The only way to reach the proxy is through your encrypted VPN tunnel. If the tunnel is down, the endpoint does not exist.
Every user gets their own tpai-sk- key, stored in DynamoDB encrypted with a customer-managed KMS key. No shared tokens. No wildcard credentials.
Traffic terminates at AWS Bedrock via PrivateLink inside the TPAI infrastructure. No OpenAI. No Anthropic SaaS. No Google AI Studio. The models run inside the air-gapped boundary.
# Every hop after your laptop is inside the air-gapped VPC. # No packet on this path crosses the public internet. your laptop → VPN tunnel (encrypted) → internal ALB (private IP only) → proxy Lambda (validates your tpai-sk- key) → Bedrock Gateway ALB (SG-restricted) → AWS Bedrock (TPAI-managed, via PrivateLink) → response back to you
Drop-in compatible
If your tool speaks the OpenAI REST format, it works with the TPAI API. No new SDK. No wrapper library. No code changes.
from openai import OpenAI client = OpenAI( base_url="http://api.us-east-1.pro.tpai.internal/v1", api_key="tpai-sk-..." ) response = client.chat.completions.create( model="anthropic.claude-3-5-haiku-20241022-v1:0", messages=[{"role": "user", "content": "Summarize this contract."}], max_tokens=500 ) print(response.choices[0].message.content)
What's available
POST /v1/chat/completions with optional tool calls and function calling.
GET /v1/models returns the live list of available Bedrock models.
GET /health unauthenticated liveness probe.
Claude 3.5 Haiku, Claude 3.5 Sonnet, and any other Claude-family model your TPAI account has Bedrock access to. Model list is live from /v1/models.
Embeddings, image generation, audio, moderation. Streaming is accepted (stream: true) but delivered as a single SSE chunk. Clients parse this correctly; you just won't see tokens arrive incrementally.
Tool calls and function calling work if the underlying model supports them. The proxy is pure pass-through: whatever JSON your client sends goes straight to Bedrock, and whatever comes back goes straight to your client.
Security posture
| Dimension | TPAI API | Public LLM API |
|---|---|---|
| Network path | VPN → air-gapped VPC → Bedrock via PrivateLink | Public internet → provider SaaS → their hosts |
| Endpoint reachability | Private DNS, private IP, VPN-only | Public DNS, public IP, reachable from anywhere |
| Credential scope | Per-user key, validated inside the TPAI boundary | Per-account or per-project key, validated by provider |
| Key storage | CMK-encrypted DynamoDB, air-gapped VPC | Provider's key vault, provider operators can read |
| Data residency | Never leaves the air-gapped TPAI environment | Leaves your network to provider infrastructure |
| Provider access to prompts | None. No third-party SaaS in the traffic path. | Provider has technical ability per their ToS |
| Audit trail | CloudWatch + CloudTrail inside the boundary | Provider's dashboard, provider's retention |
| Internet egress | None. VPC has no NAT to public internet. | Required for every request |
Sign up for Totally Private AI Pro and you get the chat interface and the developer API. One subscription, both surfaces. Connect to VPN, get your key, start building.
$199/month — founding beta pricing, locked while you remain subscribed.
You will receive a provisioning package immediately. VPN credentials, API key generation, and full docs included. Up and running in minutes.
Architecture deep-dive, integration help, or security review. We are happy to walk through the details.