DEV Community

brian austin
brian austin

Posted on

I built a $2/month Claude API proxy — here's the curl command

I built a $2/month Claude API proxy — here's the curl command

Every time I hit Claude's rate limit mid-session, I thought: there has to be a better way.

So I built one. Here's the exact curl command to use it:

curl https://simplylouie.com/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"messages": [{"role": "user", "content": "Hello"}]}'
Enter fullscreen mode Exit fullscreen mode

That's it. No local server. No OpenClaw CVE. No npm install. Just an HTTP endpoint that proxies to Claude.

Why I built this

I use Claude Code every day. The rate limit wall — that moment when Claude stops mid-refactor and says "try again in 4 hours" — was killing my flow.

The alternatives:

  • ChatGPT API: expensive, different model
  • OpenClaw: now blocked by Anthropic + had CVE-2026-33579
  • Self-hosted proxy: requires a server, npm, maintenance
  • Just waiting: not acceptable when you're in flow

What SimplyLouie actually is

It's a Claude API proxy at simplylouie.com. You set one environment variable and your rate limit ceiling disappears:

export ANTHROPIC_BASE_URL=https://simplylouie.com
Enter fullscreen mode Exit fullscreen mode

Then Claude Code uses SimplyLouie as its API endpoint. You keep using Claude Code exactly as before — same commands, same workflow, same model.

Cost: $2/month (7-day free trial, card required upfront, not charged for 7 days).

For comparison:

  • Claude Pro: $20/month
  • ChatGPT Plus: $20/month
  • SimplyLouie: $2/month

The developer API

Beyond Claude Code, SimplyLouie exposes a REST API you can call directly from your own code.

Get an API key

Sign up at simplylouie.com/developers, grab your key from the dashboard.

Chat completion

curl https://simplylouie.com/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "messages": [
      {"role": "user", "content": "Explain async/await in 2 sentences"}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

Response:

{
  "id": "msg_01abc123",
  "content": "Async/await is syntactic sugar over Promises that lets you write asynchronous code that reads like synchronous code. When you await a Promise, JavaScript pauses execution of that function until the Promise resolves, without blocking the main thread.",
  "model": "claude-sonnet-4-5",
  "usage": {
    "input_tokens": 18,
    "output_tokens": 52
  }
}
Enter fullscreen mode Exit fullscreen mode

With system prompt

curl https://simplylouie.com/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "system": "You are a senior code reviewer. Be direct and specific.",
    "messages": [
      {"role": "user", "content": "Review this function: function add(a,b) { return a+b }"}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

Stream responses

curl https://simplylouie.com/api/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --no-buffer \
  -d '{
    "messages": [{"role": "user", "content": "Write a haiku about debugging"}],
    "stream": true
  }'
Enter fullscreen mode Exit fullscreen mode

Python example

import requests

def ask_claude(prompt, api_key):
    response = requests.post(
        "https://simplylouie.com/api/chat",
        headers={
            "Content-Type": "application/json",
            "Authorization": f"Bearer {api_key}"
        },
        json={
            "messages": [{"role": "user", "content": prompt}]
        }
    )
    return response.json()["content"]

result = ask_claude("What is the time complexity of quicksort?", "YOUR_API_KEY")
print(result)
Enter fullscreen mode Exit fullscreen mode

Node.js example

async function askClaude(prompt, apiKey) {
  const response = await fetch('https://simplylouie.com/api/chat', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${apiKey}`
    },
    body: JSON.stringify({
      messages: [{ role: 'user', content: prompt }]
    })
  });

  const data = await response.json();
  return data.content;
}

const answer = await askClaude('Explain closures in JavaScript', 'YOUR_API_KEY');
console.log(answer);
Enter fullscreen mode Exit fullscreen mode

Use with Claude Code (the main use case)

# Add to your shell profile
export ANTHROPIC_BASE_URL=https://simplylouie.com

# Reload and Claude Code uses SimplyLouie automatically
source ~/.zshrc
claude "refactor this module for testability"
Enter fullscreen mode Exit fullscreen mode

No more rate limit walls. No CVEs. No local server maintenance. $2/month.

Who this is for

  • Developers who use Claude Code daily and hit rate limits
  • Teams running automated Claude pipelines that need reliable uptime
  • Anyone who thinks $20/month for Claude Pro is too much
  • Developers in India, Nigeria, Philippines, Kenya, Brazil — where $20/month is a serious budget

The honest trade-off

SimplyLouie is a proxy, not Anthropic directly. Your requests go through SimplyLouie's server. The API is identical — same models, same response format — but it's one hop further than calling Anthropic directly.

For most use cases (Claude Code, personal projects, small teams) this is fine. For regulated industries with data residency requirements, check your compliance policy first.

Try it

7-day free trial. Card upfront, not charged for 7 days, $2/month after.

simplylouie.com/developers


50% of SimplyLouie revenue goes to animal rescue organizations.

Top comments (0)