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.

Public familyChecking catalog…Checked independently in this browser
Main familyChecking catalog…Checked independently in this browser

Two API families

Model endpoint directory

Showing 12 of 12 models.

IDDisplay nameFamilyIntended useCanonical endpoints
publicChudGPT-Public V20Public familypublic_assistant_rebalance step-1400 experimental everyday assistance, writing, basic facts, code, and game-retention curriculum
musicChudGPT-Public-Music V1Public familySeparate experimental lyric checkpoint with neural song generation, rejection checks, and a disclosed supplied-lyric genre adviser
buggyBuggy ChudGPTMain familyIntentionally serves an early broken checkpoint
700ChudGPT 700Main familyHistorical step-700 checkpoint experiment
1300ChudGPT 1300Main familyHistorical step-1300 checkpoint experiment
1500ChudGPT 1500Main familyHistorical step-1500 checkpoint experiment
1600ChudGPT 1600Main familyHistorical step-1600 checkpoint experiment
ultimateChudGPT UltimateMain familyOlder, more reliable 14M experiment
plusChudGPT PlusMain familyConversational model and serving profile
proChudGPT ProMain familyPlus-based general profile with a larger runtime conversation window and stronger recovery
codeChudGPT CodeMain familyProgramming-focused model profile
megaMEGA CHUDMain familyDeliberately chaotic and least reliable experimental model

General Public API routes

GET  /api
GET  /api/status
GET  /api/info
GET  /api/models

Use 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/clear

ChudGPT-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/clear

Base 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

1 · Chat

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.

2 · One-shot generation

POST to /generate for one-shot generation without retaining that session.

3 · Clear

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 characters
  • session_id: 8–80 characters; letters, numbers, underscore, and hyphen only

Public and Music

  • message: required
  • session_id: optional, up to 128 characters
  • max_new_tokens: optional, 1–400
  • temperature: optional, 0–1.5
  • source: optional; when supplied, use api, webclient, or discord

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 generation
  • assistance_used: whether a narrow grounded system answered
  • assistance_reason: exact_math, project_identity, canned_greeting, geography, lgbtq_identity, emoji_semantics, or null

Assistance reasons

  • exact_math: conservative exact-math system
  • project_identity: stable ChudGPT or AI identity facts
  • canned_greeting: basic greetings
  • geography: known capitals and geographic facts
  • lgbtq_identity: respectful definitions and identity acknowledgments
  • emoji_semantics: emoji meanings and context
  • null: 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-Json

Error handling

  1. Allow a 90-second timeout for owner-hosted inference.
  2. Check the HTTP status and Content-Type before parsing JSON.
  3. Read JSON detail or error when present.
  4. 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.

Project links