HomeDocs
LLM API Quickstart Guide | LLM API Source
Drop our uncensored LLM API into your existing stack with a single base_url change. This quickstart covers authentication, streaming, tool calling, and limits so you can go from zero to production in minutes.
- Base URL
- https://api.llmapisource.com/v1
- Model
- uncensored
Base URL and Authentication
To use the llm api, point your client to https://api.llmapisource.com/v1. Authentication uses a standard API key passed in the Authorization: Bearer <key> header. You can generate or rotate keys on the dashboard; revoking a key immediately invalidates the old one.
- No phone number or credit card is required for the trial.
- Each account holds exactly one active key at a time.
- Prompts are not used for training.
First Request
Send a simple chat completion to verify connectivity. The endpoint supports standard OpenAI JSON structures. Replace the placeholder with your actual key.
curl https://api.llmapisource.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'If the key is invalid, you receive a 401 error. If you have no prepaid credit, you receive a 402 error. The model identifier is always uncensored.
Python SDK
Install the official OpenAI package and configure the base URL to route requests to our infrastructure. This works with any OpenAI-compatible Python client.
from openai import OpenAI
client = OpenAI(base_url="https://api.llmapisource.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Ensure the base_url includes the full path to /v1. The model name must be set to uncensored to access the dedicated instance.
Node SDK
For Node.js environments, configure the client similarly. The structure mirrors the standard OpenAI interface, making migration straightforward.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.llmapisource.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Pass the apiKey and set the basePath to https://api.llmapisource.com/v1. This ensures all completions are routed to our uncensored model.
Enable Streaming
Set stream: true in your request to receive Server-Sent Events (SSE). This allows you to process tokens as they generate, reducing perceived latency for long responses.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Handle the stream events to update your UI in real-time. Each chunk contains a partial delta of the completion.
Limits, Errors, and Context
Our infrastructure enforces specific limits to ensure stability. The context window supports up to 100,000 tokens for prompt plus completion combined.
- Rate Limit: 300 requests per minute per key (returns 429).
- Body Size: Maximum 8 MB per request.
- Pricing: $0.25/1M input tokens, $1.00/1M output tokens.
Requests involving sexual content with minors are blocked. All other lawful adult content is permitted.
Technical reference
Before you integrate, here is exactly what you get with a key.
| Item | Value |
|---|---|
| API format | OpenAI-compatible: any OpenAI SDK or client works — change the base URL and the key |
| Authentication | Bearer token in the Authorization header |
| Base URL | https://api.llmapisource.com/v1 |
| Methods | POST /v1/chat/completions · GET /v1/models |
| Model ID | uncensored |
| Sampling parameters | temperature, top_p, stop, seed and the two penalties are passed through |
| Tools / tool calls | Yes — tools, tool_choice; replies carry tool_calls, also when streaming; send results back as role: tool |
| Structured output | JSON object mode via response_format json_object |
| Context window | 100,000 tokens, input and output combined |
| Streaming | Yes — server-sent events; the last chunk carries token usage |
| Completion length | up to 16,000 tokens per request (default 2,048) |
| Requests per minute | 300/min per key |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Request size | 8 MB request body |
| Concurrency | up to 8 in parallel per key |
| Credit expiry | no monthly fee; paid credit does not expire |
| Bonus credit | +5% on $50+, +10% on $100+ |
| Price | $0.25 per 1M input tokens · $1.00 per 1M output tokens |
| Free trial | $0.50 of credit valid 7 days, no card needed |
| Top-up | USDT (TRC20) or USDC (Base), any whole amount from $10 to $500 |
| How you pay | prepaid credit, charged by real token usage; errors and refusals are free |
| Keys | one key per account, regenerate any time (the old one stops working) |
| Sign-in | sign in with Google or with e-mail + password |
| Content policy | uncensored for adults; the only hard rule: no sexual content involving minors |
When a request fails
Errors come back as JSON with a stable type; failed and refused requests are not billed.
| Status | Type | Reason |
|---|---|---|
400 | bad_request | invalid JSON, empty messages, bad parameter, or prompt + max_tokens over the window — fix and resend |
401 | missing_key · invalid_key · key_revoked | check the Authorization header or use your current key |
402 | no_credit | out of credit; add credit and retry |
403 | content_blocked | sexual content involving minors — refused, not billed |
404 | not_found | unknown endpoint |
413 | request_too_large | request body larger than 8 MB |
429 | rate_limited · concurrency | over 300/min or 8 parallel — back off and retry |
503 | upstream_busy | temporary overload, retry shortly |
Questions and answers
Is this an OpenAI model?
No. We run a dedicated open-weight model optimized for unrestricted generation. It is not GPT, Claude, or any other vendor's model, but it uses the same API format.
Do I need a credit card for the trial?
No. New accounts receive $0.50 of trial credit valid for 7 days using only an email and password. No card is required to start.
Can I use this for tool calling?
Yes. The API supports function and tool calling via the standard <code>tools</code> parameter in the chat completion endpoint.