openrouter-install-auth
Configures OpenRouter API keys and initializes the OpenAI-compatible client.
Install
mkdir -p .claude/skills/openrouter-install-auth && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8646" && unzip -o skill.zip -d .claude/skills/openrouter-install-auth && rm skill.zipInstalls to .claude/skills/openrouter-install-auth
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Set up OpenRouter API authentication and configure API keys. Use whenKey capabilities
- →Set up OpenRouter API credentials
- →Configure the OpenAI-compatible client
- →Verify authentication status
- →Check credit balance
- →Generate new API keys
How it works
The skill guides the user to generate an API key from OpenRouter, configure it as an environment variable, and initialize an OpenAI-compatible client.
Inputs & outputs
When to use openrouter-install-auth
- →Initial integration with OpenRouter
- →Rotating compromised API keys
- →Troubleshooting authentication errors
- →Configuring environment variables for secure API access
About this skill
OpenRouter Install & Auth
Overview
Set up OpenRouter API credentials, configure the OpenAI-compatible client, verify authentication, and check credit balance. OpenRouter keys start with sk-or-v1- and authenticate against https://openrouter.ai/api/v1.
Prerequisites
- OpenRouter account (free at openrouter.ai)
- Python 3.8+ or Node.js 18+
- OpenAI SDK (
pip install openaiornpm install openai)
Instructions
1. Generate an API Key
- Go to openrouter.ai/keys
- Click Create Key, name it (e.g.,
my-app-dev) - Copy the
sk-or-v1-...value immediately (shown only once) - Optionally set a credit limit on the key for spend control
2. Configure Environment
# .env file (add .env to .gitignore!)
OPENROUTER_API_KEY=sk-or-v1-your-key-here
# Or export directly
export OPENROUTER_API_KEY="sk-or-v1-your-key-here"
3. Initialize the Client
Python:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
default_headers={
"HTTP-Referer": "https://your-app.com", # For analytics attribution
"X-Title": "Your App Name", # Shows in dashboard
},
)
TypeScript:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
defaultHeaders: {
"HTTP-Referer": "https://your-app.com",
"X-Title": "Your App Name",
},
});
4. Verify Authentication
# Quick auth + credit check
import requests
resp = requests.get(
"https://openrouter.ai/api/v1/auth/key",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
)
data = resp.json()["data"]
print(f"Key: {data['label']}")
print(f"Credits used: ${data['usage']:.4f}")
print(f"Credit limit: ${data.get('limit', 'unlimited')}")
print(f"Free tier: {data['is_free_tier']}")
print(f"Rate limit: {data['rate_limit']['requests']} req / {data['rate_limit']['interval']}")
5. Send a Test Request
response = client.chat.completions.create(
model="google/gemma-2-9b-it:free", # Free model for testing
messages=[{"role": "user", "content": "Say hello"}],
max_tokens=50,
)
print(response.choices[0].message.content)
print(f"Tokens: {response.usage.prompt_tokens} in / {response.usage.completion_tokens} out")
Required Headers
| Header | Purpose | Required |
|---|---|---|
Authorization | Bearer sk-or-v1-... | Yes |
HTTP-Referer | Your app URL for dashboard attribution | Recommended |
X-Title | App name shown in OpenRouter dashboard | Recommended |
Content-Type | application/json | Yes (POST) |
Key Formats
| Type | Pattern | Purpose |
|---|---|---|
| Standard key | sk-or-v1-... | API access (chat completions, models) |
| Management key | sk-or-v1-... | Key provisioning only (cannot call completions) |
| BYOK provider key | Varies by provider | Bring-your-own-key for direct provider access |
Output
A completed setup leaves you with:
OPENROUTER_API_KEYset in your environment (or a gitignored.envfile), holding thesk-or-v1-...key from openrouter.ai/keys- A configured OpenAI-SDK client pointed at
https://openrouter.ai/api/v1withHTTP-RefererandX-Titleheaders for dashboard attribution - An auth-verification printout from
/api/v1/auth/key: key label, credits used, credit limit, free-tier flag, and rate limit - A test completion from the free model (
google/gemma-2-9b-it:free) with its reply text and prompt/completion token counts
Examples
Running the step-4 verification against a fresh key prints something like:
Key: my-app-dev
Credits used: $0.0000
Credit limit: unlimited
Free tier: True
Rate limit: 10 req / 10s
Then the step-5 test request returns a greeting plus Tokens: 9 in / 12 out, confirming the key can call completions end-to-end. More worked examples: references/examples.md.
Error Handling
| HTTP | Error Code | Cause | Fix |
|---|---|---|---|
| 401 | invalid_api_key | Key malformed, revoked, or wrong | Regenerate at openrouter.ai/keys |
| 401 | missing_api_key | No Authorization header | Add Authorization: Bearer sk-or-v1-... |
| 403 | insufficient_credits | Zero balance on paid model | Add credits at openrouter.ai/credits or use :free model |
| 403 | key_disabled | Key was disabled by admin | Re-enable in dashboard or create new key |
Key Rotation
# Programmatic key management via Management API
import requests
MGMT_KEY = os.environ["OPENROUTER_MGMT_KEY"] # Management key, not API key
# Create a new key
resp = requests.post(
"https://openrouter.ai/api/v1/keys",
headers={"Authorization": f"Bearer {MGMT_KEY}"},
json={"name": "my-app-prod-v2", "limit": 100.0},
)
new_key = resp.json()["data"]["key"] # sk-or-v1-...
# List existing keys
keys = requests.get(
"https://openrouter.ai/api/v1/keys",
headers={"Authorization": f"Bearer {MGMT_KEY}"},
).json()
Enterprise Considerations
- Store keys in a secrets manager (AWS Secrets Manager, GCP Secret Manager, Vault)
- Use management keys to provision per-service API keys programmatically
- Set credit limits per key to isolate blast radius
- Rotate keys on a schedule (90 days recommended)
- Add secret scanning to CI pipelines (e.g.,
gitleaks,trufflehog) - Use BYOK for direct provider billing when volume justifies it
References
- Examples | Errors
- OpenRouter Quickstart | Auth Docs | Key Provisioning
Prerequisites
How it compares
This skill automates the setup and verification of OpenRouter API credentials, unlike manual configuration that requires individual steps for key generation, environment setup, and client initialization.
Compared to similar skills
openrouter-install-auth side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| openrouter-install-auth (this skill) | 0 | 27d | Caution | Beginner |
| twilio-communications | 3 | 6mo | Review | Intermediate |
| lindy-install-auth | 4 | 27d | Caution | Beginner |
| clay-install-auth | 0 | 27d | Caution | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
twilio-communications
davila7
Build communication features with Twilio: SMS messaging, voice calls, WhatsApp Business API, and user verification (2FA). Covers the full spectrum from simple notifications to complex IVR systems and multi-channel authentication. Critical focus on compliance, rate limits, and error handling. Use when: twilio, send SMS, text message, voice call, phone verification.
lindy-install-auth
jeremylongshore
Install and configure Lindy AI SDK/CLI authentication. Use when setting up a new Lindy integration, configuring API keys, or initializing Lindy in your project. Trigger with phrases like "install lindy", "setup lindy", "lindy auth", "configure lindy API key".
clay-install-auth
jeremylongshore
Install and configure Clay SDK/CLI authentication. Use when setting up a new Clay integration, configuring API keys, or initializing Clay in your project. Trigger with phrases like "install clay", "setup clay", "clay auth", "configure clay API key".
evernote-install-auth
jeremylongshore
Install and configure Evernote SDK and OAuth authentication. Use when setting up a new Evernote integration, configuring API keys, or initializing Evernote in your project. Trigger with phrases like "install evernote", "setup evernote", "evernote auth", "configure evernote API", "evernote oauth".
instantly-install-auth
jeremylongshore
Install and configure Instantly SDK/CLI authentication. Use when setting up a new Instantly integration, configuring API keys, or initializing Instantly in your project. Trigger with phrases like "install instantly", "setup instantly", "instantly auth", "configure instantly API key".
documenso-install-auth
jeremylongshore
Install and configure Documenso SDK/API authentication. Use when setting up a new Documenso integration, configuring API keys, or initializing Documenso in your project. Trigger with phrases like "install documenso", "setup documenso", "documenso auth", "configure documenso API key".