Developer documentation
Public API guide
Discover and call every ChudGPT model from one accurate, shared registry: 12 total models across 2 independently hosted API families.
No API key required
All 12 models expose keyless public endpoints. Inference is owner-hosted on CUDA, so availability, latency, and rate limits depend on the owner's servers, tunnels, and proxies. These small experimental models can return inaccurate or strange output.
Two API families
https://chudgpt-public.vercel.appGET /api/models ↗https://chudgpt-xi.vercel.appGET /api/models ↗Model endpoint directory
Showing 12 of 12 models.
| ID | Display name | Family | Intended use | Canonical endpoints |
|---|---|---|---|---|
public | ChudGPT-Public V20 | Public family | public_assistant_rebalance step-1400 experimental everyday assistance, writing, basic facts, code, and game-retention curriculum | infochatgenerateclear |
music | ChudGPT-Public-Music V1 | Public family | Separate experimental lyric checkpoint with neural song generation, rejection checks, and a disclosed supplied-lyric genre adviser | infochatgenerateclear |
buggy | Buggy ChudGPT | Main family | Intentionally serves an early broken checkpoint | infochatgenerateclear |
700 | ChudGPT 700 | Main family | Historical step-700 checkpoint experiment | infochatgenerateclear |
1300 | ChudGPT 1300 | Main family | Historical step-1300 checkpoint experiment | infochatgenerateclear |
1500 | ChudGPT 1500 | Main family | Historical step-1500 checkpoint experiment | infochatgenerateclear |
1600 | ChudGPT 1600 | Main family | Historical step-1600 checkpoint experiment | infochatgenerateclear |
ultimate | ChudGPT Ultimate | Main family | Older, more reliable 14M experiment | infochatgenerateclear |
plus | ChudGPT Plus | Main family | Conversational model and serving profile | infochatgenerateclear |
pro | ChudGPT Pro | Main family | Plus-based general profile with a larger runtime conversation window and stronger recovery | infochatgenerateclear |
code | ChudGPT Code | Main family | Programming-focused model profile | infochatgenerateclear |
mega | MEGA CHUD | Main family | Deliberately chaotic and least reliable experimental model | infochatgenerateclear |
General Public API routes
GET /api
GET /api/status
GET /api/info
GET /api/modelsUse https://chudgpt-public.vercel.app as the base URL from external applications. Code hosted on the Public website should use same-origin paths such as /api/models; permanent frontend code and documentation must never depend on a temporary tunnel URL.
Public-family routes
ChudGPT-Public V20
GET /api/models/public
POST /api/chat
POST /api/generate
POST /api/clear
POST /api/models/public/chat
POST /api/models/public/generate
POST /api/models/public/clearChudGPT-Public-Music V1
GET /api/music/status
GET /api/music/info
GET /api/models/music
POST /api/music/chat
POST /api/music/generate
POST /api/music/clear
POST /api/models/music/chat
POST /api/models/music/generate
POST /api/models/music/clearBase URL: https://chudgpt-public.vercel.app. Discover both models with GET /api/models.
Public V20 remains a small 20,999,184-parameter experimental CUDA model. It currently serves public_assistant_rebalance at training step 1400. This retrain rebalances everyday assistant tasks, basic facts, writing, and code while retaining game knowledge. Existing grounded systems now include awareness and geography, with wording variation for supported repeat answers. Music V1 keeps its separate checkpoint and endpoint—not a Public fallback. Lyrics remain neural-generated without canned replacements. Supplied-lyric analysis uses an adviser disclosed as music-genre-adviser in generation logs; it does not write lyrics. Handle generation failures when no relevant draft passes validation. The October 13 report records 701 passing repository tests but no live verification; its public Music check returned HTTP 502.
Conversation flow
POST to /api/models/<id>/chat with a stable session_id. Reuse it for follow-ups and use different IDs for different users or conversations.
POST to /generate for one-shot generation without retaining that session.
POST the same session_id to /clear to clear only the selected model's server-side session. Model memory does not transfer when switching models.
Chat body
{
"message": "Hello",
"session_id": "unique-session-name"
}Clear body
{
"session_id": "unique-session-name"
}Legacy Public and Music paths remain available, but new integrations should prefer the canonical /api/models/<id>/... routes listed above.
Request and response schemas
Requests and responses use JSON. No API key is currently required.
Main family
message: required, 1–4,000 characterssession_id: 8–80 characters; letters, numbers, underscore, and hyphen only
Public and Music
message: requiredsession_id: optional, up to 128 charactersmax_new_tokens: optional, 1–400temperature: optional, 0–1.5source: optional; when supplied, useapi,webclient, ordiscord
Select the model with the route ID—such as public or music in /api/models/<id>/chat. The documented server schema does not require a separate model field in the JSON body.
A successful response includes reply, session_id, model, and step where supplied by that serving profile.
Response transparency
raw_model_generation: whether the reply includes raw model generationassistance_used: whether a narrow grounded system answeredassistance_reason:exact_math,project_identity,canned_greeting,geography,lgbtq_identity,emoji_semantics, ornull
Assistance reasons
exact_math: conservative exact-math systemproject_identity: stable ChudGPT or AI identity factscanned_greeting: basic greetingsgeography: known capitals and geographic factslgbtq_identity: respectful definitions and identity acknowledgmentsemoji_semantics: emoji meanings and contextnull: neural model generation
GET /api/info reports the selected checkpoint and active grounded_systems. Chat responses identify assistance per reply. Games and unknown model names remain neural; no generic nonanswer replacement was added.
Copyable examples
curl
curl -X POST https://chudgpt-public.vercel.app/api/models/public/chat \
-H "Content-Type: application/json" \
-d '{"message":"What is 7 + 5?","session_id":"demo-user"}'JavaScript (same origin)
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 90_000);
// On chudgpt-public.vercel.app, use this same-origin path directly.
const response = await fetch("/api/models/public/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: "What is 7 + 5?", session_id: "demo-user" }),
signal: controller.signal,
});
clearTimeout(timeout);
const type = response.headers.get("content-type") || "";
if (!response.ok || !type.includes("application/json")) throw new Error(await response.text());
const data = await response.json();Python
import requests
response = requests.post(
"https://chudgpt-public.vercel.app/api/models/public/chat",
json={"message": "What is 7 + 5?", "session_id": "demo-user"},
timeout=90,
)
if "application/json" not in response.headers.get("content-type", ""):
raise RuntimeError(response.text)
response.raise_for_status()
data = response.json()C#
using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(90) };
var body = JsonSerializer.Serialize(new {
message = "What is 7 + 5?",
session_id = "demo-user"
});
using var content = new StringContent(body, Encoding.UTF8, "application/json");
using var response = await client.PostAsync(
"https://chudgpt-public.vercel.app/api/models/public/chat", content);
response.EnsureSuccessStatusCode();
var data = await response.Content.ReadFromJsonAsync<JsonElement>();PowerShell
$body = @{ message = "Hello"; session_id = "unique-session-name" } | ConvertTo-Json
$response = Invoke-WebRequest -Uri "https://chudgpt-public.vercel.app/api/models/public/chat" \
-Method Post -ContentType "application/json" -Body $body -TimeoutSec 90
if ($response.Headers["Content-Type"] -notmatch "application/json") {
throw "Expected JSON but received: $($response.Content)"
}
$data = $response.Content | ConvertFrom-JsonError handling
- Allow a 90-second timeout for owner-hosted inference.
- Check the HTTP status and
Content-Typebefore parsing JSON. - Read JSON
detailorerrorwhen present. - If HTML is returned, the Vercel proxy, Cloudflare tunnel, or upstream host is probably unavailable—not a model reply.
Do not treat one family's catalog result as the other family's health. Catalog status above is checked independently.
The base model cannot browse independently. The official Discord bot can supply limited page or link context through a separate, bounded web-reading feature.