API Documentation

BadAssModeles is a drop-in OpenAI-compatible API. If a tool speaks OpenAI, it speaks BadAssModeles.

The two things every tool asks for

Base URL: https://badassmodel.com/v1

API Key: sk-bam-... (Dashboard → API Keys → Create key)

curl (the 30-second test)

curl https://badassmodel.com/v1/chat/completions \
  -H "Authorization: Bearer sk-bam-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1",
    "stream": true,
    "messages": [{"role": "user", "content": "hello"}]
  }'

List models: curl https://badassmodel.com/v1/models -H "Authorization: Bearer sk-bam-..."

Python (official openai SDK)

from openai import OpenAI

client = OpenAI(base_url="https://badassmodel.com/v1", api_key="sk-bam-...")

stream = client.chat.completions.create(
    model="deepseek-r1",
    messages=[{"role": "user", "content": "hello"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

OpenCode

export BADASS_API_KEY=sk-bam-...
# add to ~/.config/opencode/opencode.json:
{
  "provider": {
    "badassmodeles": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "BadAssModeles",
      "options": { "baseURL": "https://badassmodel.com/v1", "apiKey": "{env:BADASS_API_KEY}" },
      "models": { "deepseek-r1": { "name": "DeepSeek R1" } }
    }
  }
}

Cursor / VS Code (Cline, Roo, Continue) / Open WebUI / SillyTavern

Choose OpenAI Compatible as the provider and fill in:

Base URL: https://badassmodel.com/v1

API Key: sk-bam-...

Model: any id from GET https://badassmodel.com/v1/models

Billing & limits

Prepaid balance only, crypto deposits via NOWPayments ($5 minimum). Every request is billed per token from your balance — no balance, no requests (HTTP 402). 60 requests/min per key. Larger single deposits permanently unlock lower rates ($50, $100, $200 tiers — see pricing).