API Documentation
Complete guide to using Noob Keys API. OpenAI-compatible Claude endpoints for Cursor, Cline, RooCode, Kilocode, Dyad.sh, and more.
Quick Navigation
Getting Started
Noob Keys provides OpenAI-compatible API endpoints for Claude models. Use it as a drop-in replacement with any OpenAI-compatible client.
Base URL:
https://noobkeys.onrender.com/v1
Quick Start
- Generate an API key from the homepage
- Use
https://noobkeys.onrender.com/v1as your base URL - Make requests to
/v1/chat/completions
Authentication
All API requests require a Bearer token:
Authorization: Bearer nk-your-api-key-here
Available Models
All models accessible through OpenAI-compatible endpoints:
Claude Models
claude-opus-4-5-20251101
$5 / $25 per 1M
Best for complex reasoning
claude-sonnet-4-5-20250929
$6 / $22.50 per 1M
Balanced (recommended)
claude-haiku-4-5-20251001
$1 / $5 per 1M
Fast responses
claude-sonnet-4-20250514
$3 / $15 per 1M
Coding tasks
claude-3-7-sonnet-20250219
$3 / $15 per 1M
General purpose
claude-3-5-haiku-latest
$0.80 / $4 per 1M
Cheapest Claude
Open Source Models
moonshotai/kimi-k2-instruct-0905
$0.15 / $2.50 per 1M
Kimi K2 Instruct
openai/gpt-oss-120b
$0.15 / $0.60 per 1M
GPT-OSS 120B
qwen/qwen3-32b
$0.29 / $0.59 per 1M
Qwen3-32B
API Endpoints
POST
/v1/chat/completions
Main endpoint - Create a chat completion
GET
/v1/models
List available models
GET
/v1/test
Test connectivity (no auth required)
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model |
string | Required | Model ID (e.g., claude-3-5-haiku-latest) |
messages |
array | Required | Array of {role, content} objects |
stream |
boolean | Optional | Enable SSE streaming |
max_tokens |
integer | Optional | Maximum tokens to generate |
temperature |
number | Optional | Sampling temperature (0-2) |
Streaming
Enable streaming with stream: true. Responses use Server-Sent Events (SSE):
curl -N "https://noobkeys.onrender.com/v1/chat/completions" \
-H "Authorization: Bearer nk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"claude-3-5-haiku-latest","messages":[{"role":"user","content":"Hello"}],"stream":true}'
Stream Response Format
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"delta":{"content":"Hello"}}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","choices":[{"delta":{"content":"!"}}]}
data: [DONE]
IDE & Tool Setup
Universal Settings:
| Base URL: | https://noobkeys.onrender.com/v1 |
| API Key: | nk-xxxxxxxx |
| Model: | claude-3-5-haiku-latest (cheapest) |
🖥️ Cursor
- Open Settings (Ctrl/Cmd + ,) → Models
- Click "Add Model" or "OpenAI API"
- Enter Base URL:
https://noobkeys.onrender.com/v1 - Enter your
nk-API key - Set model:
claude-3-5-haiku-latest
🔮 Cline (VS Code)
- Open Cline settings in VS Code
- Select "OpenAI Compatible" provider
- Base URL:
https://noobkeys.onrender.com/v1 - API Key: Your
nk-key - Model ID:
claude-3-5-haiku-latest
🦘 RooCode / Roo Cline
- Open RooCode settings
- Select "OpenAI Compatible" or "Custom" provider
- Base URL:
https://noobkeys.onrender.com/v1 - API Key: Your
nk-key - Model:
claude-3-5-haiku-latest
⚡ Kilocode
- Open Kilocode settings
- Choose "OpenAI Compatible" provider
- API Endpoint:
https://noobkeys.onrender.com/v1 - API Key: Your
nk-key - Model:
claude-3-5-haiku-latest
🔗 Dyad.sh
- Open Dyad settings
- Select "OpenAI Compatible" as provider
- Base URL:
https://noobkeys.onrender.com/v1 - API Key: Your
nk-key - Model:
claude-3-5-haiku-latest
🐍 Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://noobkeys.onrender.com/v1",
api_key="nk-your-api-key"
)
response = client.chat.completions.create(
model="claude-3-5-haiku-latest",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
📜 JavaScript (OpenAI SDK)
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://noobkeys.onrender.com/v1',
apiKey: 'nk-your-api-key'
});
const response = await client.chat.completions.create({
model: 'claude-3-5-haiku-latest',
messages: [{ role: 'user', content: 'Hello!' }]
});
console.log(response.choices[0].message.content);
Rate Limits & Quotas
| Limit Type | Value | Description |
|---|---|---|
| Rate Limit | 10 requests/minute | Per API key |
| User Quota | $20.00 USD | Per API key lifetime |
| Global Quota | $600.00 USD | Total service limit |
Rate Limit Headers
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 9
X-RateLimit-Reset: 1733500060
Error Handling
Errors are returned in OpenAI-compatible format:
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
Common Error Codes
| Status | Type | Description |
|---|---|---|
| 400 | invalid_request_error | Missing/invalid parameters |
| 401 | invalid_request_error | Invalid API key |
| 403 | insufficient_quota | Quota exceeded |
| 429 | rate_limit_error | Rate limit exceeded |
| 500 | api_error | Server error |
Troubleshooting:
- Verify base URL is exactly:
https://noobkeys.onrender.com/v1 - Check your API key starts with
nk- - Ensure you haven't exceeded your $20 quota
- Test with:
https://noobkeys.onrender.com/v1/test