Da Moxing API Quick Start Guide
Da Moxing API provides a stable, uncensored LLM API with no content filter limits, designed for developers who need creative freedom. Through the OpenAI-compatible interface, you can get uncensored AI generation capabilities in just a few lines of code.
Prerequisites: Install SDK
To quickly start using the Da Moxing API, you need to install the official compatible SDK. Since our interface is fully compatible with the OpenAI protocol, you can use your familiar libraries. For Python developers, we recommend the openai library; for Node.js developers, use the openai npm package. Ensure these dependencies are installed in your environment for subsequent API calls.
Configure Base URL
Before sending requests, you must configure the base_url to our server address. This ensures your requests are correctly routed to the uncensored model. Set the base_url to https://api.apidamoxing.com/v1. This is the foundation for all API calls; ensure your SDK version supports custom base_url configuration.
Generate API Key
Visit the Get API Key page and register an account with your email and password. After registration, the API Key will be displayed on the screen immediately. Please save this key securely as it will be used for authentication in all API requests. Each account can have only one primary key, but you can generate new keys at any time; the old key will become invalid immediately.
Send First Request
Send your first request using cURL to verify that the API is working. The request will be sent to the uncensored model, returning unfiltered text content. Make sure to replace YOUR_API_KEY with your actual key. This request demonstrates basic text generation capabilities suitable for various creative scenarios.
curl https://api.apidamoxing.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."}]
}'
Support Streaming (SSE)
For applications requiring real-time responses, enabling streaming (SSE) is an ideal choice. By setting stream: true, you can receive content generated by the model in chunks, reducing latency and improving user experience. Streaming is suitable for chatbots, real-time translation, and other scenarios, ensuring data arrives instantly.
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)
Tool and Function Calling Example
Our API supports function calling, allowing the model to interact with external functions. By defining the tools parameter, you can have the model call specific functions based on context. This is very useful when building intelligent assistants or automating workflows. Ensure tool definitions comply with the OpenAI function calling specification for optimal compatibility.
from openai import OpenAI
client = OpenAI(base_url="https://api.apidamoxing.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)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apidamoxing.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);API facts in one table
Before you integrate, here is exactly what you get with a key.
| Spec | 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.apidamoxing.com/v1 |
| Methods | POST /v1/chat/completions · GET /v1/models |
| Model | uncensored |
| Max output | prompt + completion fit within 100,000 tokens; max_tokens optional, no separate output cap |
| Structured output | response_format: {"type": "json_object"} |
| Other 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 |
| Context window | 100,000 tokens (prompt + completion together) |
| SSE streaming | Supported (stream: true), usage included at the end |
| Requests per minute | 300/min per key |
| Max body | up to 8 MB per request |
| Response headers | X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests, X-RateLimit-Limit-Concurrency |
| Parallel requests | up to 8 in parallel per key |
| Volume bonus | +5% from $50, +10% from $100 |
| Price | $0.25 per 1M input tokens · $1.00 per 1M output tokens |
| How you pay | pay as you go from prepaid credit; nothing is charged for failed or refused requests |
| Credit expiry | paid credit never expires, no subscription |
| Payment | USDT (TRC20) or USDC (Base), any whole amount from $10 to $500 |
| Free trial | $0.50 of credit valid 7 days, no card needed · Trial key: 2 parallel requests, 60 req/min; full limits (8 and 300) after first top-up |
| Account | sign in with Google or with e-mail + password |
| Keys | one active key per account; a new key replaces the old one |
| Content policy | uncensored for adults; the only hard rule: no sexual content involving minors |
When a request fails
Every error is JSON with a type you can switch on. You are never charged for an error.
| 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 | model busy — retry in a few seconds |
Frequently Asked Questions
What is the API context window size?
The context window is 100,000 tokens (including prompt and completion). This allows you to process longer text inputs while maintaining full context memory.
How to regenerate an API key after it expires?
You can generate a new API key at any time in your account settings. Once the new key is generated, the old one becomes invalid immediately, ensuring security. Each time you generate a new key, the old one can no longer be used for requests.
What is the API rate limit?
Each API key allows 300 requests per minute. If you exceed the limit, you will receive a 429 error. Adjust your request frequency according to your app needs to avoid triggering the rate limit.
Just fill out the form to get the key
Create an account, copy the key, modify the Base URL. Configuration is that simple.