BadlandsLabs
Getting Started

Overview

Badlands Labs is a simple, privacy-first API gateway. One key. OpenAI-compatible. No data collection. No usage tracking. Canadian-operated under PIPEDA.

No Data Collection

Requests pass through our infrastructure for routing only. Your prompts and inferences are never stored or logged.

Canadian Compliant

PIPEDA-compliant infrastructure operated from Canada. Your data stays under Canadian jurisdiction.

Simple Pricing

Free while in development. 35K tokens per 5-hour rolling window. No meter, no overage charges.

Deployment & Routing Architecture

This documentation wiki is hosted statically on Cloudflare Pages (badlandslabs.pages.dev) for global edge delivery, while the dynamic gateway is hosted on GCP Cloud Run. When deploying static updates to the docs (including logo assets), make sure to deploy them to Cloudflare Pages using: npx wrangler pages deploy html/docs/ --project-name badlandslabs.

Quick Start

Get up and running with Badlands Labs in three simple steps.

1

Create an Account

Sign up at badlandslabs.com/signup to create your account and generate an API key.

2

Configure Your SDK

Set the base URL to https://api.badlandslabs.com/v1 and authenticate with your API key.

3

Start Building

Make requests to any supported model. The proxy handles routing and rate limiting. No data is stored.

API Key Format

All Badlands Labs API keys use the prefix sk-bdl-api03- followed by a 24-character alphanumeric string.

Authentication

Badlands Labs uses Bearer token authentication. Include your API key in the Authorization header of every request.

bash
curl https://api.badlandslabs.com/v1/chat/completions \
  -H "Authorization: Bearer sk-bdl-api03-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.5-router",
    "messages": [{"role": "user", "content": "Hello, world!"}]
  }'
Keep Your Key Secure

Never expose your API key in client-side code, public repositories, or shared documents. If compromised, rotate immediately from your dashboard.

API Gateway Reference

OpenAI Compatibility

Badlands Labs provides full OpenAI API compatibility. Point your existing OpenAI SDK or HTTP client to our endpoint and swap your API key.

Chat Completions

bash
curl https://api.badlandslabs.com/v1/chat/completions \
  -H "Authorization: Bearer sk-bdl-api03-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.5-router",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Explain quantum computing in simple terms."}
    ],
    "max_tokens": 512,
    "temperature": 0.7
  }'

Anthropic Compatibility

Access Claude models through our Anthropic-compatible endpoint. The proxy translates requests and responses to match the Anthropic API format.

bash
curl https://api.badlandslabs.com/v1/messages \
  -H "Authorization: Bearer sk-bdl-api03-your-key-here" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "anthropic/claude-4-6-sonnet-router",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'
Supported Claude Models

anthropic/claude-4-6-sonnet-router (mapped dynamically to MiniMax-M2.7 upstream).

Base URLs

Standardize all API requests using the following base URLs:

GET
https://api.badlandslabs.com/v1/models
List available models
POST
https://api.badlandslabs.com/v1/chat/completions
Chat completions (OpenAI compatible)
POST
https://api.badlandslabs.com/v1/messages
Claude messages (Anthropic compatible)

SDK Samples

OpenAI Python SDK

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-bdl-api03-your-key-here",
    base_url="https://api.badlandslabs.com/v1"
)

response = client.chat.completions.create(
    model="openai/gpt-5.5-router",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)

Anthropic Python SDK

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-bdl-api03-your-key-here",
    base_url="https://api.badlandslabs.com/v1"
)

message = client.messages.create(
    model="anthropic/claude-4-6-sonnet-router",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}]
)

print(message.content[0].text)

OpenAI Node.js SDK

javascript
import OpenAI from 'openai';

const client = new OpenAI({
    apiKey: 'sk-bdl-api03-your-key-here',
    baseURL: 'https://api.badlandslabs.com/v1'
});

const response = await client.chat.completions.create({
    model: 'openai/gpt-5.5-router',
    messages: [{role: 'user', content: 'Hello!'}]
});

console.log(response.choices[0].message.content);

@anthropic-ai/sdk

javascript
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
    apiKey: 'sk-bdl-api03-your-key-here',
    baseURL: 'https://api.badlandslabs.com/v1'
});

const message = await client.messages.create({
    model: 'anthropic/claude-4-6-sonnet-router',
    max_tokens: 1024,
    messages: [{role: 'user', content: 'Hello!'}]
});

console.log(message.content[0].text);

Chat Completions

bash
curl https://api.badlandslabs.com/v1/chat/completions \
  -H "Authorization: Bearer sk-bdl-api03-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.5-router",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Claude Messages

bash
curl https://api.badlandslabs.com/v1/messages \
  -H "Authorization: Bearer sk-bdl-api03-your-key-here" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "anthropic/claude-4-6-sonnet-router",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
System Status

Node Health

Real-time status of BadlandsLabs infrastructure. We operate a lean, focused service built on a single MiniMax upstream.

API Gateway
Operational
P99: 124ms · 99.96% uptime
Control Center
Operational
Key mgmt, auth, signup
Model Endpoint
Operational
All models available
Cache Layer
Healthy
Hit rate: 87.3%
Key Storage
Connected
SQLite + WAL mode
Rate Limiter
Active
1500 req/5hrs per key

Latency Metrics

Gateway response times measured as the 50th, 75th, 95th, and 99th percentiles over the last month. These include network round-trip to MiniMax upstream.

92ms
P50 Latency
156ms
P75 Latency
287ms
P95 Latency
412ms
P99 Latency
156K
Requests This Month
99.96%
Monthly Uptime
0.04%
Error Rate

Incident History

May 12, 2026 — Cache Layer Tuning Resolved

Optimized LRU cache eviction policy. Hit rate improved from 84% to 87%. No service interruption.

April 30, 2026 — Rate Limiter Threshold Update Resolved

Adjusted sliding window rate limit thresholds from 1200 to 1500 req/5hrs. Request queues now processing faster.

April 8, 2026 — Latency Spike Resolved

Brief upstream latency spike lasting 15 minutes. P99 reached 512ms, resolved within 23 minutes total.

March 15, 2026 — Key Validation Performance Resolved

Implemented JWKS caching for Firebase token validation. API key checks now average 8ms (down from 34ms).

Support Desk

Contact Us

For general inquiries, technical questions, or partnership opportunities, reach out to our team.

Support & Questions

Response within 24-48 hours

support@badlandslabs.com

Bug Reports

Critical issues: urgent response

bugs@badlandslabs.com

Feedback

Help us improve the service

feedback@badlandslabs.com

Community Support

Join our Discord for real-time help

Join Discord

Frequently Asked Questions

Badlands Labs provides an OpenAI-compatible API with built-in rate limiting, response caching, and Canadian privacy compliance. One API key. No data collection. No usage tracking. Built for founders who need simplicity and privacy.

Sign up at badlandslabs.com/signup and create an account. Your first API key is generated immediately. You can rotate or revoke keys anytime from your dashboard.

Each API key gets a rolling 5-hour quota of 35K tokens. We use a sliding window to distribute your allowance fairly. When you hit the limit, requests receive a 429 status code. The window resets as time passes.

Badlands Labs is free while in development. You get 35K tokens per 5-hour rolling window, no hidden charges. Priority access is available for Alberta Innovates and BC Innovates founders.

No. Request/response bodies are not persisted to disk. They pass through our infrastructure for routing only. See our Privacy Policy for full details.

Legal

Privacy Policy

Terms of Service