spiderssense.com Home

Documentation

One OpenAI- and Anthropic-compatible gateway in front of every frontier model. Keep your existing SDK — point it at our base URL and authenticate with your key. Billing is prepaid from your balance; create a key in the dashboard to get started.

Base URLhttps://spiderssense.com/v1
API keysk-uno-…Create one in your dashboard, then use it as the API key / bearer token.

Quickstart

One OpenAI-compatible base URL. Send your key as a Bearer token and call any model by its id.

bash
curl https://spiderssense.com/v1/chat/completions \
  -H "Authorization: Bearer sk-uno-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'

OpenCode

Add a provider to your opencode.json (project root or ~/.config/opencode/), then pick a model with /models. The attachment + modalities flags tell OpenCode the model accepts images.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "spiderssense": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "spiderssense.com",
      "options": {
        "baseURL": "https://spiderssense.com/v1",
        "apiKey": "sk-uno-YOUR_KEY"
      },
      "models": {
        "gpt-5": {
          "attachment": true,
          "tool_call": true,
          "reasoning": true,
          "modalities": { "input": ["text", "image"], "output": ["text"] }
        }
      }
    }
  }
}

Claude Code

Point Claude Code at our endpoint with two environment variables, then run it as usual.

bash
export ANTHROPIC_BASE_URL="https://spiderssense.com"
export ANTHROPIC_AUTH_TOKEN="sk-uno-YOUR_KEY"
export ANTHROPIC_MODEL="claude-sonnet-4"

claude

OpenAI & Anthropic SDK

Drop-in — change only the base URL and the key.

python
# OpenAI SDK
from openai import OpenAI

client = OpenAI(
    base_url="https://spiderssense.com/v1",
    api_key="sk-uno-YOUR_KEY",
)
resp = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)