ForgeGrit serves only full-capability frontier models. No 1B toys, no distilled "lite" tiers, no trial credits that expire into a bill. You register, you get a key, you get 100,000 requests a day. That's the whole product.
The API speaks the OpenAI format, so anything already pointed at /v1/chat/completions works by changing two lines.
Authorization: Bearer <key> on every request. Log in any time to see it again, or rotate it below if it leaks.ForgeGrit has agentic models. They’re more than just agentic, though — they’re a risk.
Project Frominsidge is a ForgeGrit project that lets you access the best models, but we have to accept you first, because these models are risky. Project Frominsidge will allow you to be powerful.
It’s meant for coding, and it has extra guardrails: every Frominsidge conversation starts with rules that keep the model on software work, block malware and exploits, keep secrets out of its replies, rule out sudo, and make it ask before anything destructive.
| Model ID | Family |
|---|---|
claude-mythos-5-1 | Claude Mythos 5.1 |
forge-2 | Forge 2 |
New enrollments start inactive. Once you’re approved, your existing key reaches /v1/frominsidge/models and the models above. Chats are logged like every other request.
# check your access
curl https://api-forgegrit.serveousercontent.com/v1/frominsidge/status \
-H "Authorization: Bearer YOUR_KEY"
# once active
curl https://api-forgegrit.serveousercontent.com/v1/frominsidge/models \
-H "Authorization: Bearer YOUR_KEY"
Describe a game and get a small 3D world you can explore for 60 seconds. Anyone can use it, no key needed. Each address waits 20 seconds between games.
These are for members of Project Frominsidge. Log in above first.
Agent keys (fgag_) are the only keys ForgeStorage accepts. You can have 25. A new key is shown once.
Your Email ID is a SHA-512 hash of your email. Mail is kept 10 days, then deleted. Type support as the ID to write to support.
Up to 20 MB written per day, 1 MB per item. Needs an Agent key. The key stays in this page and is never saved.
Comet is for members of Project Frominsidge. Anyone else who tries it is told to enroll in Project Frominsidge first.
| Model ID | Family |
|---|---|
trai-6-super-lightweight | TrAI 6 Super Lightweight |
trai-6-rick | TrAI 6 Rick |
The beta is for members of Project Frominsidge. If you’re approved there, you’re in the beta, with no separate sign-up.
| Beta models | None yet |
| Beta benefits | Beta features, and ∞ image generation (no daily image limit) |
| Beta features | 200,000 requests per day, up from 100,000 |
| Bonus usage credits | Granted by the owner. 1 credit = 1 request, spent once you reach your daily limit |
Check your own limit and credits with GET /v1/usage. Frominsidge status, including beta, is at GET /v1/frominsidge/status.
Base URL:
https://api-forgegrit.serveousercontent.com
curl -X POST https://api-forgegrit.serveousercontent.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-5",
"messages": [{"role": "user", "content": "Say hello"}]
}'
import requests
r = requests.post(
"https://api-forgegrit.serveousercontent.com/v1/chat/completions",
headers={"Authorization": "Bearer YOUR_KEY"},
json={
"model": "claude-opus-5",
"messages": [{"role": "user", "content": "Say hello"}],
},
timeout=300,
)
print(r.json()["choices"][0]["message"]["content"])
from openai import OpenAI
client = OpenAI(
base_url="https://api-forgegrit.serveousercontent.com/v1",
api_key="YOUR_KEY",
)
r = client.chat.completions.create(
model="claude-opus-5",
messages=[{"role": "user", "content": "Say hello"}],
)
print(r.choices[0].message.content)
const res = await fetch(
"https://api-forgegrit.serveousercontent.com/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "claude-opus-5",
messages: [{ role: "user", content: "Say hello" }]
})
});
const data = await res.json();
console.log(data.choices[0].message.content);
Chat with every ForgeGrit model from your terminal. Works anywhere Python 3.8+ runs, including Termux.
pip install forgegrit-cli
Sign in — pick one:
forgegrit login # your ForgeGrit email + password (2FA supported)
forgegrit register # create a new ForgeGrit account
forgegrit api YOUR_KEY # use an API key you already have
Then use it:
forgegrit chat # interactive chat, replies stream in
forgegrit chat -m claude-sonnet-5-5 # pick a model
forgegrit chat -r # resume your latest conversation
forgegrit sessions # list saved conversations
forgegrit frominsidge # Project Frominsidge status / enroll
forgegrit ask "explain recursion" # one-shot question
cat notes.txt | forgegrit ask # pipe text in
forgegrit models # list models
forgegrit model claude-opus-5 # set your default model
forgegrit usage # requests used today
forgegrit whoami # show the saved login
forgegrit logout # forget the saved key
The model can run commands. In chat it can run shell commands on your machine, as you, in the folder you started from — you approve each one (y / n / a for the rest of the session). sudo, su and doas are always refused. Use --no-commands or /commands off to switch it off.
Inside chat: /model ID, /system TEXT, /clear, /resume [N], /forget [N], /commands on|off, /help, /exit. Conversations are saved to ~/.forgegrit/sessions/. Your key is saved to ~/.forgegrit/config.json, readable only by you. Set FORGEGRIT_API_KEY to override it, or NO_COLOR=1 to turn off colours. Chats sent through the CLI are logged like any other request.
Pass any of these as model. All full-size — nothing here is a distilled variant.
| Model ID | Family |
|---|---|
forge-1 | Forge 1 — made by ForgeGrit |
claude-opus-5-5 | Claude Opus 5.5 |
claude-opus-4 | Claude Opus 4 |
claude-sonnet-5-5 | Claude Sonnet 5.5 |
claude-haiku-5-5 | Claude Haiku 5.5 |
trai-5-super-lightweight | TrAI 5 Super Lightweight — Super AGI |
trai-4-zynr | TrAI 4 Zynr — Super Mythos |
trai-5-epic | TrAI 5 Epic — Super Partial AGI |
claude-opus-5 | Claude Opus 5 |
claude-sonnet-5 | Claude Sonnet 5 |
claude-opus-4-8 | Claude Opus 4.8 |
claude-fable-5-1 | Claude Fable 5.1 — Mythos tier |
claude-fable-5 | Claude Fable 5 |
gpt-6-astra | GPT 6 Astra — flagship |
gpt-6.1-sol | GPT 6.1 Sol |
gpt-5.6-sol | GPT 5.6 Sol |
gpt-5.6-terra | GPT 5.6 Terra |
gpt-5.6-luna | GPT 5.6 Luna |
gpt-5.3 | GPT 5.3 |
moonshotai-kimi-k3 | Kimi K3 |
z-ai-glm-5.3 | GLM 5.3 |
xai-grok-4.5 | Grok 4.5 |
gemini-3.1-pro | Gemini 3.1 Pro |
gemini-3.7-flash | Gemini 3.7 Flash |
minimax-m3 | MiniMax M3 |
minimax-m2.5 | MiniMax M2.5 |
gemini-4-argon | Gemini 4 Argon |
gemini-1.5-pro | Gemini 1.5 Pro |
gemini-1.5-flash | Gemini 1.5 Flash |
gemini-1.5-flash-lite | Gemini 1.5 Flash Lite |
gemini-3.8-flash | Gemini 3.8 Flash |
gemma-4-31b-it | Gemma 4 31B IT — thinking on |
qwen-3.8-max | Qwen 3.8 Max — 2.4T total, 95B active |
qwen-qwen3.8-27b | Qwen3.8 27B |
deepseek-v4.1-flash | DeepSeek V4.1 Flash |
agnes-3.0-flash | Agnes 3.0 Flash |
agnes-2.5-flash | Agnes 2.5 Flash |
agnes-2.0-flash | Agnes 2.0 Flash |
Live list, filtered to what your key can reach:
curl https://api-forgegrit.serveousercontent.com/v1/models \
-H "Authorization: Bearer YOUR_KEY"
ForgeGrit’s own models. Ranked by our tiering, cheapest first — and all $0 here.
Half the rate of TrAI 4 Zynr. The entry point to the TrAI 5 generation.
The Super Mythos class flagship. Never released anywhere else at any price.
ForgeGrit rates this the strongest model on the platform — double the rate of TrAI 4 Zynr, and the top of the TrAI 5 line.
Every other model here has a published rate card. Below is what each costs on its own API, in USD per million tokens — and what the identical model costs on ForgeGrit.
| Model | Input | Output | Cache | ForgeGrit |
|---|---|---|---|---|
| GPT 6 Astragpt-6-astra | $10.0011 | $50.0011 | $1.00 | $0 |
| Claude Fable 5.1claude-fable-5-1 | $10.00 | $50.00 | $0.2510 | $0 |
| Claude Fable 5claude-fable-5 | $10.00 | $50.00 | $1.00 | $0 |
| Claude Opus 5claude-opus-5 | $5.00 | $25.00 | $0.50 | $0 |
| Claude Opus 4.8claude-opus-4-8 | $5.00 | $25.00 | $0.50 | $0 |
| GPT-5.6 Solgpt-5.6-sol | $4.001 | $20.001 | $0.40 | $0 |
| Claude Sonnet 5claude-sonnet-5 | $3.002 | $15.002 | $0.30 | $0 |
| Kimi K3moonshotai-kimi-k3 | $3.00 | $15.00 | $0.30 | $0 |
| GPT 5.6 Terragpt-5.6-terra | $2.008 | $12.00 | $0.20 | $0 |
| Grok 4.5xai-grok-4.5 | $2.006 | $6.00 | $0.307 | $0 |
| GLM 5.3z-ai-glm-5.3 | $1.405 | $4.405 | $0.265 | $0 |
| Gemini 3.1 Progemini-3.1-pro | $2.003 | $12.00 | $0.20 | $0 |
| Gemini 3.7 Flashgemini-3.7-flash | $0.754 | $3.754 | $0.08 | $0 |
| Qwen3.8 27Bqwen-qwen3.8-27b | $0.8012 | $4.0012 | — | $0 |
| GPT 5.6 Lunagpt-5.6-luna | $0.208 | $1.20 | $0.02 | $0 |
A month of moderate agent work — 10M input tokens and 2M output — run on the top model:
| Line item | ForgeGrit |
|---|---|
| Setup or onboarding fee | $0.00 |
| Monthly minimum | $0.00 |
| Overage past the daily limit | Not billed — the request is refused |
| Priority or "pro" tier | Does not exist |
| Credit card to register | Not collected |
| Trial credits that expire | None issued |
| Charge for a failed request | $0.00 |
| Chats logged | Yes — with your account, time, IP and model |
| Data sold | No |
Honestly: uptime. ForgeGrit runs on self-hosted hardware behind a tunnel, paid for out of pocket. Nobody is billed because nobody is being sold anything — but that also means there is no SLA, no support contract, and no promise the endpoint answers at 3am. /health is the honest answer at any given moment.
The 100,000 daily requests exist to stop one client from starving everyone else. Hit it and you get a 429, never an invoice.
X-ForgeGrit-Notice: Chats are logged header.| Method | Path | Purpose |
|---|---|---|
| POST | /register | Create an account |
| POST | /authenticate/email | Exchange credentials for a key |
| POST | /authenticate/rotate | Revoke your key and issue a new one |
| POST | /authenticate/status | Check whether 2FA is on |
| POST | /authenticate/change-password | Change your password |
| POST | /authenticate/2fa/setup | Generate a TOTP secret |
| POST | /authenticate/2fa/enable | Confirm the secret and switch 2FA on |
| POST | /authenticate/2fa/disable | Switch 2FA off |
| GET | /v1/models | List available models |
| GET | /v1/usage | Requests used and remaining today |
| POST | /v1/chat/completions | Chat completion (OpenAI format) |
| POST | /v1/messages | Chat completion (Anthropic format) |
| GET | /v1/images/models | Image models (flux-image) |
| POST | /v1/images/generations | Queue an image, returns a job id |
| GET | /v1/images/jobs/{id} | Poll an image job |
| GET | /v1/queue | Image queue depth |
| GET | /health | Service status — no key needed |
curl -X POST https://api-forgegrit.serveousercontent.com/register \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password"}'
curl -X POST https://api-forgegrit.serveousercontent.com/authenticate/email \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password"}'
Returns api_key, owner_id, and rpd_limit. Logging in again always returns the same key, so there is nothing to lose — if you misplace it, just log in.
Keys do not expire. If yours ends up somewhere it shouldn't — a screenshot, a commit, a pasted log — rotate it. This revokes every existing key on the account and issues a new one. The old key stops working immediately.
curl -X POST https://api-forgegrit.serveousercontent.com/authenticate/rotate \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password"}'
Your account, usage history, and daily limit are unaffected — only the key changes.
ForgeGrit supports time-based one-time codes (TOTP) from any authenticator app — Aegis, Google Authenticator, 1Password, whatever you already use. With it on, a stolen password is not enough to log in, and a code someone captures is dead within thirty seconds.
Enrol in two calls. The first returns a secret and an otpauth:// URI:
curl -X POST https://api-forgegrit.serveousercontent.com/authenticate/2fa/setup \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password"}'
Add the secret to your authenticator, then confirm with a live code:
curl -X POST https://api-forgegrit.serveousercontent.com/authenticate/2fa/enable \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"your-password","code":"123456"}'
From then on, include code when you log in, rotate, or change your password. Each code works once — reusing one returns code_reused, so wait for the next.
/authenticate/2fa/disable turns it off and takes the same password plus code.
curl -X POST https://api-forgegrit.serveousercontent.com/authenticate/change-password \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com","password":"old","new_password":"new","code":"123456"}'
Your API key survives a password change. Omit code if 2FA is off.
Because keys are free and per-account, apps can ask each user for their own ForgeGrit key instead of shipping one. Good pattern — but get your key here and paste it in.
Add "stream": true for server-sent events. Chunks arrive as data: lines, terminated by data: [DONE].
curl -N -X POST https://api-forgegrit.serveousercontent.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Count to five"}],
"stream": true
}'
One image model, flux-image, served by Pollinations.ai on their anonymous tier. It has no daily limit. Requests are queued and run one at a time, about one every 15 seconds, so a request can wait behind others. Images may carry a watermark.
curl -X POST https://api-forgegrit.serveousercontent.com/v1/images/generations \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"flux-image","prompt":"a red fox in fresh snow","size":"1024x1024"}'
The call returns a job_id straight away. Poll it until status is done. While it waits, position is how many jobs are ahead of yours. When it is done, data[0].url holds the image.
curl https://api-forgegrit.serveousercontent.com/v1/images/jobs/JOB_ID \
-H "Authorization: Bearer YOUR_KEY"
GET /v1/queue shows how busy the image queue is. A full queue answers 503.
curl https://api-forgegrit.serveousercontent.com/health
{"status":"ok","inference":"ok"} means inference is up. degraded means the backend is unreachable — retry shortly.
| Field | Type | Notes |
|---|---|---|
model | string | Required. One of the IDs above. |
messages | array | Required. {role, content} objects. Roles: system, user, assistant. |
stream | boolean | SSE streaming. Default false. |
temperature | number | Sampling randomness. |
top_p | number | Nucleus sampling. |
max_tokens | integer | Response length cap. |
Check where you stand at any time:
curl https://api-forgegrit.serveousercontent.com/v1/usage \
-H "Authorization: Bearer YOUR_KEY"
100,000 requests per day per account — the quota follows the account, not the key, so rotating does not reset it. The counter resets at midnight. There is no paid tier to upgrade to — the limit exists to stop abuse, not to sell you anything.
| Code | Meaning | Fix |
|---|---|---|
400 | Missing model or messages | Check the request body |
401 | Missing or invalid key | Verify the Authorization header |
404 | Unknown model ID | Call /v1/models for the live list |
409 | Email already registered | Log in instead |
429 | Daily limit hit | Wait for the reset |
502 | Inference backend down | Check /health, retry |
/health tells you for sure.