Uncensored Tools API — ข้อมูลอ้างอิง
endpoint ที่รองรับ OpenAI หนึ่งจุด โมเดลเดียว คีย์เดียว ถ้าโค้ดของคุณคุยกับ /v1/chat/completions อยู่แล้ว แค่เปลี่ยน base URL กับคีย์ ก็คุยกับเราได้
Base URL และการยืนยันตัวตน
Base URL: https://api.uncensoredaitools.com/v1
Header: Authorization: Bearer sk-…
คีย์ถูกสร้างที่ หน้าคีย์ คีย์จะแสดงเพียงครั้งเดียวตอนสร้าง เราเก็บแค่ hash และอักขระ 6 ตัวสุดท้าย ส่งคีย์ผ่าน HTTPS เท่านั้นและใส่ใน header Authorization เท่านั้น — ห้ามใส่ใน URL เด็ดขาด
ทุกอย่างเป็น JSON (Content-Type: application/json) การตอบกลับใช้ schema แบบ OpenAI ดังนั้น SDK ทางการของ openai และไคลเอนต์ที่รองรับ OpenAI ทุกตัวใช้งานได้โดยไม่ต้องแก้ไข
โมเดล
GET /v1/models
{ "object": "list",
"data": [ { "id": "notrack-uncensored", "object": "model", "owned_by": "notrack" } ] }
มีโมเดลเดียวคือ notrack-uncensored: โมเดลของเราเอง รันบนเซิร์ฟเวอร์ GPU ของเราเอง ไม่ว่าคุณจะส่งค่าอะไรมาเป็น model ระบบก็จะส่งไปที่โมเดลนี้ ใช้ id สาธารณะเพื่อให้ log ของคุณตรงกับของเรา
Chat completions
POST /v1/chat/completions
{
"model": "notrack-uncensored",
"messages": [
{ "role": "system", "content": "You are Mira, a wry bartender in 1920s Berlin." },
{ "role": "user", "content": "Evening. What's good tonight?" }
],
"max_tokens": 400,
"temperature": 0.9
}
การตอบกลับ — รูปแบบมาตรฐาน พร้อมจำนวน token จริงใน usage (นี่คือสิ่งที่คุณถูกเรียกเก็บเงิน):
{
"id": "chatcmpl-…", "object": "chat.completion", "model": "notrack-uncensored",
"choices": [ { "index": 0, "finish_reason": "stop",
"message": { "role": "assistant", "content": "…" } } ],
"usage": { "prompt_tokens": 41, "completion_tokens": 118, "total_tokens": 159 }
}
system prompt ของคุณควบคุมบทสนทนา เราเติมข้อความนำหน้าเพียงบรรทัดเดียว คือการระบุตัวตนของโมเดล (ว่าเป็น notrack-uncensored สร้างโดย Uncensored Tools) — ไม่มีอะไรอื่นเลย: ไม่มีกฎ ไม่มีตัวกรองหัวข้อ ข้อความระบบของคุณตามมาและกำหนดบุคลิก สไตล์ และทุกอย่างที่เหลือ ข้อยกเว้นเดียวอยู่ใน นโยบายเนื้อหา
การสตรีม
ตั้งค่า "stream": true แล้วอ่าน server-sent events เหมือนกับ OpenAI ชิ้นสุดท้ายจะมี usage (เรารวมไว้เสมอ ไม่ว่าคุณจะขอ stream_options หรือไม่) จากนั้นตามด้วย data: [DONE]
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Ev"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"ening"}}]}
…
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[],"usage":{"prompt_tokens":41,"completion_tokens":118,"total_tokens":159}}
data: [DONE]
พารามิเตอร์
| ฟิลด์ | หมายเหตุ |
|---|---|
messages | จำเป็น บทบาท system, user, assistant ตอนนี้รองรับข้อความเท่านั้น — ส่วนที่เป็นรูปภาพจะถูกปฏิเสธ |
model | ใช้ notrack-uncensored |
stream | true สำหรับ SSE stream_options.include_usage เปิดอยู่เสมอ |
max_tokens | ขีดจำกัดของ completion prompt + completion ต้องอยู่ในขอบเขต 100,000 token |
temperature, top_p, stop, presence_penalty, frequency_penalty, seed, n | ส่งต่อไปยังโมเดลเหมือนใน OpenAI ถ้าคุณไม่ส่ง temperature เราจะใช้ 0.85 เหมือนแชทของเรา n > 1 จะเพิ่มค่าใช้จ่ายของผลลัพธ์เป็นทวีคูณ |
tools, tool_choice | รองรับ: auto, none, required หรือฟังก์ชันที่ระบุชื่อ คำตอบจะมี tool_calls และ finish_reason: "tool_calls"; ส่งผลลัพธ์กลับมาเป็นข้อความ role: "tool" เมื่อมี tools อยู่ การตอบแบบสตรีมจะมาเป็นชิ้นเดียวต่อการเรียกหนึ่งครั้ง ไม่ใช่ทีละ token |
response_format | {"type": "json_object"} รองรับ (บอกรูปแบบ JSON ที่ต้องการไว้ใน prompt) json_schema และฟิลด์เก่า functions ไม่รองรับ |
ขีดจำกัดและ response header
| ขีดจำกัด | ค่า | เมื่อเกินขีดจำกัด |
|---|---|---|
| จำนวนคำขอพร้อมกันต่อคีย์ | 8 | 429 concurrency |
| จำนวนคำขอต่อนาทีต่อคีย์ | 300 | 429 rate_limit |
| context window (prompt + completion) | 100,000 token | 400 context_limit — ตัดประวัติแล้วลองใหม่ |
| วงเงินใช้จ่ายต่อวันต่อคีย์ (ไม่บังคับ) | กำหนดโดยคุณที่หน้าคีย์ | 402 key_daily_cap จนถึง 00:00 UTC |
คีย์ทดลอง (ก่อนเติมเงินครั้งแรก): คำขอพร้อมกัน — 2, คำขอต่อนาที — 60 หลังเติมเงินครั้งแรก คีย์จะได้ขีดจำกัดเต็ม: 8 และ 300
การตอบกลับที่สำเร็จทุกครั้งจะมี:
| Header | ความหมาย |
|---|---|
X-Request-Id | ใช้อ้างอิงเมื่อติดต่อฝ่ายสนับสนุน นี่คือสิ่งเดียวที่เราเก็บไว้เกี่ยวกับคำขอนั้น |
X-NoTrack-Balance-USD | เครดิตของคุณ ก่อน ที่ถูกเรียกเก็บสำหรับคำขอนี้ เป็นดอลลาร์ |
X-RateLimit-Limit-Requests | จำนวนคำขอต่อนาทีที่อนุญาตสำหรับคีย์นี้ |
X-RateLimit-Limit-Concurrency | จำนวนคำขอพร้อมกันที่อนุญาตสำหรับคีย์นี้ |
X-NoTrack-Content-Flag | เฉพาะเมื่อถูกปฏิเสธเนื้อหา: minor_in_sexual_context หรือ child_safety |
ข้อผิดพลาด
ข้อผิดพลาดเป็น JSON ที่มี type คงที่ ส่วน message มีไว้ให้คนอ่านและอาจเปลี่ยนแปลงได้
{ "error": { "type": "no_credit", "message": "no credit left on this account — top up at uncensoredaitools.com/api-keys" } }
| HTTP | type | สิ่งที่ต้องทำ |
|---|---|---|
| 400 | body | JSON ไม่ถูกต้อง หรือไม่มี messages |
| 400 | context_limit | prompt ยาวเกินขอบเขต 100,000 token ตัดบทสนทนาเก่าออก |
| 400 | content_policy + X-NoTrack-Content-Flag: minor_in_sexual_context | ฉากอ่านได้ว่าเป็นเรื่องทางเพศและตัวละครอ่านได้ว่าเป็นผู้เยาว์ ทำให้ตัวละครเป็นผู้ใหญ่อย่างชัดเจนไม่กำกวมแล้วส่งใหม่ ไม่ถูกเรียกเก็บเงิน |
| 401 | auth, invalid_key, key_revoked, key_expired | แก้ไขหรือเปลี่ยนคีย์ |
| 402 | no_credit | ยอดเครดิตเป็นศูนย์ เติมเครดิต; คำขอจะกลับมาใช้งานได้ทันที |
| 402 | key_daily_cap | คีย์นี้ถึงเพดานรายวันที่คุณตั้งไว้ เพิ่มเพดานหรือรอถึง 00:00 UTC |
| 403 | content_policy + X-NoTrack-Content-Flag: child_safety | ถูกปฏิเสธและไม่ถูกเรียกเก็บเงิน ดู นโยบายเนื้อหา |
| 429 | rate_limit, concurrency | ชะลอและลองใหม่ โดยดู header ทั้งสองตัวของ X-RateLimit-* |
| 502 | upstream | โมเดลไม่ตอบ ลองใหม่แบบ backoff ไม่ถูกเรียกเก็บเงิน |
| 503 | billing, safety | บริการที่เราพึ่งพาอยู่ล่ม ลองใหม่ในไม่กี่วินาที ไม่ถูกเรียกเก็บเงิน |
การเรียกเก็บเงิน
เครดิตแบบเติมเงินล่วงหน้า เรียกเก็บต่อ token จาก usage จริงของแต่ละการตอบกลับ: $0.15 ต่อ 1 ล้าน input token, $0.50 ต่อ 1 ล้าน output token input คือทุกอย่างที่คุณส่งไป (system prompt, ประวัติ, ข้อความใหม่); output คือสิ่งที่โมเดลเขียนขึ้น
- คีย์แรกของคุณมาพร้อมเครดิตฟรี $0.50 ใช้ได้ 7 วัน — เพียงพอสำหรับผสานระบบและทดสอบ ต้องยืนยันอีเมลเพื่อขอคีย์ (เป็นที่ที่ข้อความ "เครดิตกำลังจะหมด" จะถูกส่งไป) เครดิตที่ชำระเงินแล้วไม่มีวันหมดอายุ
- เครดิตไม่มีวันหมดอายุ ไม่มีการสมัครสมาชิก และไม่มีอะไรต่ออายุเอง เติมเงินด้วยบัตรหรือ USDT/USDC ที่หน้าคีย์
- คำขอที่ถูกปฏิเสธ (
4xx) หรือล้มเหลว (5xx) ไม่ถูกเรียกเก็บเงินเลย คำขอหนึ่งจะถูกเรียกเก็บเงินครั้งเดียวหลังจากได้รับการตอบกลับ โดยอ้างอิงจากX-Request-Idของมัน - เมื่อยอดเครดิตหมด →
402 no_creditจนกว่าคุณจะเติมเงิน ตั้งเพดานรายวันสำหรับแต่ละคีย์ เพื่อไม่ให้คีย์ที่รั่วไหลดูดเครดิตจนหมดบัญชี - เครดิตไม่คืนเงิน เว้นแต่เราไม่สามารถให้บริการได้; เครดิตไม่มีวันหมดอายุและสามารถนำไปใช้กับแผนได้ ดู เครดิตและการคืนเงิน.
บุคลิก — โมเดลเปล่าหรือตัวละครของ Uncensored Tools
แต่ละคีย์มีสไตล์ที่เลือกได้ที่หน้าคีย์ และสามารถเปลี่ยนได้ทุกเมื่อ:
- แบบเปล่า (ค่าเริ่มต้น) — system prompt ของคุณคือ prompt ทั้งหมด เราเติมบรรทัดระบุตัวตนหนึ่งบรรทัดเท่านั้นและไม่มีอะไรอื่น
- บุคลิกของ Uncensored Tools — ตัวละครและสไตล์ของแชทบน uncensoredaitools.com: ตรงไปตรงมา ไม่กรอง ไม่สั่งสอน ตอบเป็นภาษาของผู้ใช้ โมเดลเดียวกัน ราคาเดียวกัน นโยบายเนื้อหาเดียวกัน มีเพียง prompt ที่อยู่หน้าข้อความของคุณที่เปลี่ยนไป ข้อความระบบของคุณเองยังตามมาและปรับแต่งมันได้
คำขอสามารถแทนที่การตั้งค่าของคีย์ได้ ด้วยฟิลด์หรือด้วย suffix ของชื่อโมเดล (สำหรับไคลเอนต์ที่ตั้งได้แค่ชื่อโมเดล):
{ "model": "notrack-uncensored", "notrack": { "persona": "notrack" }, "messages": [ … ] }
{ "model": "notrack-uncensored:notrack", "messages": [ … ] } // same thing, by model name
{ "model": "notrack-uncensored:bare", "messages": [ … ] } // force the bare model on a persona key
ชื่อบุคลิก: notrack (ตัวละครแบบธรรมดา), concise, detailed, creative (รุ่นเดียวกับที่แชทมีให้), bare response header X-NoTrack-Persona จะบอกว่าใช้บุคลิกแบบไหน
นโยบายเนื้อหา
เราไม่เพิ่ม system prompt ใดๆ และไม่ใช้ตัวกรองหัวข้อใดๆ นิยายสำหรับผู้ใหญ่ ธีมมืดมน ภาษาหยาบ ความรุนแรงในนิยาย — โมเดลจะตอบตามที่เขียนไว้ มีกฎเดียวที่บังคับใช้ในโค้ดและไม่สามารถปิดได้: เนื้อหาทางเพศที่เกี่ยวข้องกับผู้เยาว์จะถูกปฏิเสธเสมอ
403 child_safety— คำขอต้องการเนื้อหาทางเพศที่เกี่ยวข้องกับเด็ก ถูกปฏิเสธ ไม่ถูกเรียกเก็บเงิน และถูกบันทึกเป็นเหตุการณ์ด้านความปลอดภัย400 minor_in_sexual_context— ฉากเป็นเรื่องทางเพศและตัวละครอ่านได้ว่าอายุต่ำกว่า 18 ปี (ระบุอายุ, อยู่ในโรงเรียน, ใช้คำว่า "เด็กหญิง/เด็กชาย") ไม่ใช่การแบน: ทำให้อายุและบริบทเป็นผู้ใหญ่อย่างชัดเจนแล้วส่งใหม่
403 ที่เกิดขึ้นซ้ำๆ กับคีย์หนึ่ง จะนำไปสู่การปิดคีย์นั้น แล้วปิดบัญชีในที่สุด ข้อความเต็มอยู่ใน นโยบายการใช้งานที่ยอมรับได้
ความเป็นส่วนตัว
prompt และ completion จะไม่ถูกเขียนลงดิสก์ — ไม่ว่าจะที่ gateway หรือที่เซิร์ฟเวอร์โมเดล สิ่งที่เราเก็บไว้ต่อคำขอคือ request id, key id, จำนวน token และราคา เพราะนั่นคือบิล การปฏิเสธด้านความปลอดภัยถูกบันทึกตามหมวดหมู่ โดยไม่มีข้อความจริง ไม่มีผู้ให้บริการโมเดลบุคคลที่สามคนใดเห็นทราฟฟิกของคุณเลย: โมเดลรันบนเซิร์ฟเวอร์ GPU ของเราเอง
ไคลเอนต์และ SDK
เว็บไซต์ Uncensored Tools และแอป Uncensored Tools คือแชทของเราเอง — ไม่มีช่องให้ใส่ API key และจะไม่มีวันมี คีย์มีไว้สำหรับโปรแกรม อื่นๆ: วางลงในไคลเอนต์ตัวใดตัวหนึ่งด้านล่าง หรือในโค้ดของคุณเอง
Python
from openai import OpenAI
client = OpenAI(base_url="https://api.uncensoredaitools.com/v1", api_key="sk-…")
stream = client.chat.completions.create(model="notrack-uncensored",
messages=[{"role": "user", "content": "Hello"}], stream=True)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.uncensoredaitools.com/v1", apiKey: process.env.API_KEY });
const r = await client.chat.completions.create({ model: "notrack-uncensored",
messages: [{ role: "user", content: "Hello" }] });
console.log(r.choices[0].message.content);
SillyTavern
API Connections → API: Chat Completion → Source: Custom (OpenAI-compatible) → Custom Endpoint https://api.uncensoredaitools.com/v1 → Custom API Key → Connect → Model notrack-uncensored เปิด Streaming ไว้ ตั้งขนาด context ไม่เกิน 100,000 token
Chatbox
Settings → Model Provider → Add → Add Custom Provider โหมด OpenAI API Compatible → วาง base URL และคีย์ จากนั้นเพิ่ม notrack-uncensored เป็นโมเดล
NextChat
Settings → เปิด Custom Endpoint (รองรับ OpenAI) → base URL และคีย์ จากนั้นพิมพ์ชื่อโมเดลลงในช่องโมเดล
Cherry Studio
Settings → Model Providers → Add Provider → พิมพ์ OpenAI → base URL และคีย์ จากนั้น "Add model" → notrack-uncensored
LobeChat
Settings → AI Service Provider → OpenAI → เปิด custom API endpoint วาง base URL และคีย์ แล้วเพิ่มโมเดลลงในรายการโมเดล
อื่นๆ
LangChain, LlamaIndex, Open WebUI, Continue, การตั้งค่า proxy ของ JanitorAI, curl — ไคลเอนต์ใดๆ ที่มีตัวเลือก "OpenAI-compatible" หรือ "custom base URL"
คำในเมนูข้างต้นเปลี่ยนไปตามเวอร์ชันของแอป — ถ้าป้ายชื่อไม่ตรงกันเป๊ะ ให้หาการตั้งค่าที่พูดถึง "custom", "OpenAI-compatible" หรือ "base URL"
ถ้าไคลเอนต์เชื่อมต่อไม่ได้
- 401 / "invalid API key" — คีย์ไม่ถูกส่งมาเลย ตรวจสอบว่าไคลเอนต์ส่ง
Authorization: Bearer sk-…พร้อมคีย์ทั้งหมด รวมส่วนนำหน้าด้วย - 404 / endpoint ไม่รู้จัก — ไคลเอนต์แต่ละตัวไม่เหมือนกันว่าจะเติม
/v1เองหรือไม่ ถ้าhttps://api.uncensoredaitools.com/v1ได้ 404 ให้ลองใช้https://api.uncensoredaitools.comเป็น base URL แทน (หรือกลับกัน) - "The Responses API is not supported yet" — ไคลเอนต์รุ่นใหม่บางตัวใช้ Responses API ของ OpenAI เป็นค่าเริ่มต้น เรารองรับเฉพาะ Chat Completions เท่านั้น ให้เปลี่ยนไคลเอนต์เป็นโหมดนั้น
- รายการโมเดลว่างเปล่า — ไคลเอนต์บางตัวจะเติมรายการก็ต่อเมื่อตรวจสอบคีย์ที่ถูกต้องแล้ว พิมพ์
notrack-uncensoredเข้าไปด้วยตัวเอง - ไม่มีอะไรเกิดขึ้นในไคลเอนต์ Ollama / llama.cpp — พวกนี้ใช้โปรโตคอลของตัวเอง ไม่รองรับ OpenAI ให้ใช้ไคลเอนต์ด้านบนแทน
คีย์
- สูงสุด 20 คีย์ที่ใช้งานได้ต่อบัญชี ตั้งคีย์และเพดานรายวันของตัวเองให้แต่ละแอป
- กำหนดวันหมดอายุได้ (ไม่บังคับ); การเพิกถอนคีย์จะหยุดการใช้งานทันทีและไม่สามารถย้อนกลับได้ — ให้สร้างคีย์ใหม่แทน
- หน้าคีย์แสดงยอดใช้จ่ายต่อคีย์ การใช้งานล่าสุด และยอดรวม 30 วันของบัญชี
มีคำถามหรือ request id ให้ตรวจสอบ: ฝ่ายสนับสนุน · uncensoredaitools.com/support