ForgeGrit

Frontier models. Zero cost. No bullshit.
100,000 req/day 18 text · 6 video · 1 free video/day OpenAI-compatible $0 in · $0 out · $0 cache $0.00 / 1M tokens

What this is

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.

Get a key

Your API key

Rotate this key? Your current key stops working immediately and anything using it breaks until you paste the new one. Your account, usage, and daily limit are unaffected.
Send it as Authorization: Bearer <key> on every request. Log in any time to see it again, or rotate it below if it leaks.

Playground

Log in above and the playground unlocks here — your key fills in automatically.

Quickstart

Base URL:

https://api-forgegrit.serveousercontent.com
curl
Python
OpenAI SDK
JavaScript
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);

Models

Pass any of these as model. All full-size — nothing here is a distilled variant.

Model IDFamily
trai-5-super-lightweightTrAI 5 Super Lightweight — Super AGI
trai-4-zynrTrAI 4 Zynr — Super Mythos
trai-5-epicTrAI 5 Epic — Super Partial AGI
claude-mythos-5Claude Mythos 5 — Mythos tier
claude-opus-5Claude Opus 5
claude-sonnet-5Claude Sonnet 5
claude-opus-4-8Claude Opus 4.8
claude-fable-5-1Claude Fable 5.1 — Mythos tier
claude-fable-5Claude Fable 5
gpt-6-astraGPT 6 Astra — flagship
gpt-5.6-solGPT 5.6 Sol
gpt-5.6-terraGPT 5.6 Terra
gpt-5.6-lunaGPT 5.6 Luna
moonshotai-kimi-k3Kimi K3
z-ai-glm-5.3GLM 5.3
xai-grok-4.5Grok 4.5
gemini-3.1-proGemini 3.1 Pro
gemini-3.7-flashGemini 3.7 Flash

Live list, filtered to what your key can reach:

curl https://api-forgegrit.serveousercontent.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY"

Flagship

ForgeGrit’s own models. Ranked by our tiering, cheapest first — and all $0 here.

Unreleased · Super Partial AGI

TrAI 5 Epic

trai-5-epic
Input
$200M
$0
Output
$2,000M
$0
Cache
$10M
$0

Half the rate of TrAI 4 Zynr. The entry point to the TrAI 5 generation.

Unreleased · Super Mythos

TrAI 4 Zynr

trai-4-zynr
Input
$400M
$0
Output
$4,000M
$0
Cache
$20M
$0

The Super Mythos class flagship. Never released anywhere else at any price.

Unreleased · Super AGI

TrAI 5 Super Lightweight

trai-5-super-lightweight
Input
$800M
$0
Output
$8,000M
$0
Cache
$40M
$0

ForgeGrit rates this the strongest model on the platform — double the rate of TrAI 4 Zynr, and the top of the TrAI 5 line.

The TrAI models are ForgeGrit’s own. Their rate cards, tier names and rankings are ours, not a third party’s, and none carries an independent benchmark. The vendor table below is separate and independently verifiable. Try them against the models there and judge for yourself — every one is free.

Pricing

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.

$0
Input tokens
$0
Output tokens
$0
Cache tokens
Model Input Output Cache ForgeGrit
Claude Mythos 5claude-mythos-5 n/a9n/a9n/a9 $0
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
GPT 5.6 Lunagpt-5.6-luna $0.208$1.20$0.02 $0

What that means in practice

A month of moderate agent work — 10M input tokens and 2M output — run on the top model:

$150
Fable 5, list price
$100
Opus 5, list price
$0.00
Either one, here
There is no catch and no upsell. No paid tier exists. No credit card is collected. No trial credits expire into a bill. The only limit is 100,000 requests a day, and it is there to stop abuse, not to sell you a way around it.

Everywhere else the money usually hides

Line itemForgeGrit
Setup or onboarding fee$0.00
Monthly minimum$0.00
Overage past the daily limitNot billed — the request is refused
Priority or "pro" tierDoes not exist
Credit card to registerNot collected
Trial credits that expireNone issued
Charge for a failed request$0.00
Data sold or trained onNo

So what's the catch

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.

Rates verified 27 August 2026 against each provider's published pricing. Cache figures are cache-read (hit) rates. Vendor pricing moves; check the source before budgeting against these numbers.
1 GPT-5.6 Sol promotional rate through 21 Nov 2026; standard is $5.00 / $30.00.
2 Claude Sonnet 5 standard rate; introductory $2.00 / $10.00 runs through 31 Aug 2026.
3 Gemini 3.1 Pro input doubles to $4.00 on prompts above 200K tokens.
4 Gemini 3.7 Flash introductory rate through 31 Dec 2026; doubles to $1.50 / $7.50 on 1 Jan 2027.
5 Z.ai has not published a per-token rate for GLM 5.3; these are the GLM 5.2 rates its price table still lists. GLM 5.3 currently sells only through Z.ai's Coding Plan at $18–$168/month.
6 Grok 4.5 doubles to $4.00 / $12.00 on prompts at or above 200K tokens, and again for priority processing.
7 Sources disagree on Grok 4.5's cache rate: some list $0.30, others $0.50. The $0.50 figure appears to be Grok 4.6's.
8 Terra and Luna rates reflect OpenAI's 30 Jul 2026 cut. Long-context requests meter higher: Terra $4.00 / $18.00, Luna $0.40 / $1.80.
9 Claude Mythos 5 has no public rate card. Anthropic's Mythos tier is not generally available; access runs through Project Glasswing with a small number of vetted organisations.
10 Fable 5.1 shipped 1 Sep 2026. Input and output match Fable 5; the cache read fell 75% to $0.25 — 2.5% of its input rate rather than the 10% most models charge, and half what Opus 5 charges to read cache.
11 GPT 6 Astra shipped 3 Sep 2026 and matches Fable 5.1's headline exactly, though its cache read is $1.00 against Fable's $0.25. Cache writes are $12.50. Batch and Flex halve these rates; Fast mode doubles them; prompts above 272K tokens reprice the whole request at 2× input and 1.5× output.

Endpoints

MethodPathPurpose
POST/registerCreate an account
POST/authenticate/emailExchange credentials for a key
POST/authenticate/rotateRevoke your key and issue a new one
POST/authenticate/statusCheck whether 2FA is on
POST/authenticate/change-passwordChange your password
POST/authenticate/2fa/setupGenerate a TOTP secret
POST/authenticate/2fa/enableConfirm the secret and switch 2FA on
POST/authenticate/2fa/disableSwitch 2FA off
GET/v1/modelsList available models
GET/v1/usageRequests used and remaining today
POST/v1/chat/completionsChat completion (OpenAI format)
POST/v1/messagesChat completion (Anthropic format)
GET/v1/video/modelsVideo models available
POST/v1/videoQueue a generation, returns a job id
GET/v1/video/{id}Poll a job
GET/healthService status — no key needed

Register

curl -X POST https://api-forgegrit.serveousercontent.com/register \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"your-password"}'

Get your key

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.

Rotate your key

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.

Two-factor authentication

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.

Change your password

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.

Using ForgeGrit inside someone else’s app

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.

Never type your ForgeGrit password into a third-party app. An app that asks for your email and password can read it in plaintext, and most people reuse passwords. Give it your API key instead: a key only reaches ForgeGrit, and you can revoke it here in one click. Turning on 2FA closes the gap further — a captured password is useless without a live code.

Streaming

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
  }'

Video

Video generation runs on Hugging Face Spaces, and ForgeGrit does not own that GPU time.

You get one free video a day with no token at all, on ltx-video-fast, drawn from ForgeGrit’s own quota. Past that, bring a token: create a free read token at huggingface.co/settings/tokens and send it as X-HF-Token. Then it is unlimited, any model, on your quota — and the token is never stored.

# free — no token
curl -X POST https://api-forgegrit.serveousercontent.com/v1/video \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"ltx-video-fast","prompt":"a fox in snow"}'

Check what you have left with GET /v1/video/models — the free_tier block reports your remaining videos for the day. A failed generation is refunded, so a broken job never costs you your free one.

Generation takes 30 seconds to a few minutes, so the endpoint is asynchronous — you get a job id back and poll it.

curl -X POST https://api-forgegrit.serveousercontent.com/v1/video \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "X-HF-Token: hf_your_token" \
  -H "Content-Type: application/json" \
  -d '{"model":"ltx-video-fast","prompt":"a fox walking through snow"}'

Then poll until status is done:

curl https://api-forgegrit.serveousercontent.com/v1/video/JOB_ID \
  -H "Authorization: Bearer YOUR_KEY"
ModelAudioNotes
ltx-video-fastFastest; lowest quota cost. The free-tier model
ltx-2-turboyesFast, with a synchronised soundtrack
ltx-2-fastyesOfficial Lightricks distilled build
minimax-h3-turboyes33B omni-modal; audio generated with the picture
ltx-2-3-studioyesCommunity Space
wan-2-2-fastImage to video; needs an image input
Be considerate with Spaces. These are demos run by their authors on shared hardware. Your token means your jobs draw on your allowance rather than theirs, but heavy automated use still affects everyone queueing behind you.

Health

curl https://api-forgegrit.serveousercontent.com/health

{"status":"ok","inference":"ok"} means inference is up. degraded means the backend is unreachable — retry shortly.

Parameters

FieldTypeNotes
modelstringRequired. One of the IDs above.
messagesarrayRequired. {role, content} objects. Roles: system, user, assistant.
streambooleanSSE streaming. Default false.
temperaturenumberSampling randomness.
top_pnumberNucleus sampling.
max_tokensintegerResponse length cap.

Limits & errors

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.

CodeMeaningFix
400Missing model or messagesCheck the request body
401Missing or invalid keyVerify the Authorization header
404Unknown model IDCall /v1/models for the live list
409Email already registeredLog in instead
429Daily limit hitWait for the reset
502Inference backend downCheck /health, retry
Availability: ForgeGrit runs on self-hosted hardware behind a tunnel. If a request times out, the tunnel is likely cycling — /health tells you for sure.