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.
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.
Create an Account
Sign up at badlandslabs.com/signup to create your account and generate an API key.
Configure Your SDK
Set the base URL to https://api.badlandslabs.com/v1 and authenticate with your API key.
Start Building
Make requests to any supported model. The proxy handles routing and rate limiting. No data is stored.
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.
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!"}]
}'
Never expose your API key in client-side code, public repositories, or shared documents. If compromised, rotate immediately from your dashboard.
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
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.
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!"}
]
}'
anthropic/claude-4-6-sonnet-router (mapped dynamically to MiniMax-M2.7 upstream).
Base URLs
Standardize all API requests using the following base URLs:
SDK Samples
OpenAI Python SDK
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
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
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
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
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
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!"}]
}'
Node Health
Real-time status of BadlandsLabs infrastructure. We operate a lean, focused service built on a single MiniMax upstream.
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.
Incident History
Optimized LRU cache eviction policy. Hit rate improved from 84% to 87%. No service interruption.
Adjusted sliding window rate limit thresholds from 1200 to 1500 req/5hrs. Request queues now processing faster.
Brief upstream latency spike lasting 15 minutes. P99 reached 512ms, resolved within 23 minutes total.
Implemented JWKS caching for Firebase token validation. API key checks now average 8ms (down from 34ms).
Contact Us
For general inquiries, technical questions, or partnership opportunities, reach out to our team.
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.
Privacy Policy
Information We Collect
When you use Badlands Labs, we collect information necessary to provide and improve our services:
- Account Information: Email address, name, and account credentials when you register
- Usage Data: API request metadata including timestamps, endpoint paths, model names, and request sizes
- Usage Analytics: Aggregated metrics on request volumes, latency distributions, and error rates per user
- Log Data: Server-side logs containing request headers (excluding API key content), IP addresses, and response codes
How We Use Your Information
We use collected information for:
- Providing, maintaining, and improving our API proxy services
- Processing API requests through our infrastructure to OpenAI and Anthropic endpoints
- Generating usage dashboards and analytics for your account
- Communicating about service updates, security notices, and billing
- Detecting, preventing, and addressing technical issues and abuse
Proxy Processing and Data Handling
Badlands Labs operates as an API proxy service. When you send requests through our infrastructure:
- Your API requests are routed through our servers to the target AI provider
- We do not store the content of your prompts or completions beyond what is required for brief operational buffering
- Request/response bodies are not persisted to disk in our infrastructure
- Your API key is validated against our database and then passed through to the target provider
- All traffic is encrypted in transit using TLS 1.2 or higher
Data Retention
We retain different types of data for different periods:
- Account Data: Retained for the duration of your account plus 90 days after deletion
- Usage Logs: Aggregated statistics retained for 13 months for billing and analytics purposes
- Operational Logs: Server logs retained for 30 days for debugging and security purposes
- API Request Metadata: Path, timestamp, and status code retained for 90 days; full headers excluded after validation
Data Security
We implement industry-standard security measures:
- All data encrypted in transit using AES-256 or TLS 1.2+
- API keys hashed using bcrypt before storage
- Access logs maintained with immutable storage for audit trails
- Regular third-party security audits conducted quarterly
- Infrastructure hosted in SOC 2 Type II compliant data centers
Your Rights
Depending on your location, you may have:
- Access: Request a copy of personal data we hold about you
- Rectification: Request correction of inaccurate personal data
- Deletion: Request deletion of your personal data
- Portability: Request your data in a structured format
- Opt-out: Unsubscribe from marketing communications at any time
Contact Us
For questions about this Privacy Policy or to exercise your rights:
Terms of Service
Acceptance of Terms
By accessing or using Badlands Labs services, you agree to be bound by these Terms of Service. If you do not agree to these terms, do not use our services.
Description of Service
Badlands Labs provides an API proxy infrastructure that routes requests to underlying AI service providers. Our service provides unified access, rate limiting, and other infrastructure features. We do not store your prompts or inferences.
Account Registration
To use Badlands Labs, you must:
- Provide accurate, current, and complete information during registration
- Maintain and update your information to keep it accurate and current
- Be at least 16 years of age or have parental consent if younger
- Not register more than one account unless explicitly permitted
- Be responsible for all activity under your account
API Key Management
Your API key is the sole credential for authenticating requests. You agree to:
- Keep your API key confidential and never share it publicly
- Treat your API key with the same security as a password
- Immediately revoke and regenerate your key if you suspect compromise
- Accept all charges incurred through your API key, whether authorized or not
- Use only the API key format provided (
sk-bdl-api03-*prefix)
Acceptable Use Policy
You agree not to use Badlands Labs to:
- Violate any applicable laws, regulations, or third-party rights
- Generate spam, malware, or content for illegal activities
- Attempt to circumvent rate limits or exploit system vulnerabilities
- Resell or redistribute our services without explicit permission
- Use automated tools to overwhelm or test our infrastructure
- Interfere with, disrupt, or damage our services or infrastructure
- Impersonate any person or entity or falsely represent your affiliation
Rate Limits and Quotas
Badlands Labs uses a rolling 5-hour quota system:
- Free Plan: 35,000 tokens per 5-hour rolling window
- Your quota resets continuously as time passes
- Exceeding your quota results in a 429 status code until your window resets
- No overage charges — the service is free while in development
No Billing or Payment
Badlands Labs is completely free while in development:
- No credit card required to sign up
- No usage tracking or metering charges
- No hidden fees or overage costs
- Service is provided as-is during the development phase
Disclaimer of Warranties
OUR SERVICES ARE PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. WE DO NOT WARRANT THAT THE SERVICE WILL BE UNINTERRUPTED, ERROR-FREE, OR COMPLETELY SECURE.
Limitation of Liability
TO THE MAXIMUM EXTENT PERMITTED BY LAW, BADLANDS LABS SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS, DATA, OR USE.
Contact Information
For questions about these Terms of Service: