A student party built for what's next — transparent, ambitious, and run on our own open AI. Talk to the campaign assistant, or build on the same API we do.
Three promises. No slogans without substance.
Every decision published. Open office hours. Ask the campaign anything — literally, in the chat below.
Shorter lines, better events, a real student voice in school decisions. Concrete plans on dated milestones.
We built an AI assistant and an open API for the whole school. Modern tools for a modern student body.
Every token is paid for by FIZMAT FIDES, so students use AI free. #VOTE FOR ILYAS
Ask about the platform, the candidate, or the election. Sign in to start.
Responses stream live. Be kind — shared rate limits apply.
OpenAI-compatible. Point any OpenAI client at the base URL, authenticate with your relay key, and call the one model: fizmat. Create a relay key →
https://fizmat-fides.pages.dev/v1
Authorization: Bearer ff_live_…
fizmat
Every request needs your relay key in the Authorization header. Keys are created and revoked in your dashboard. They map to our shared model pool — you never handle upstream provider keys.
Authorization: Bearer ff_live_YOUR_KEY
| Method | Path | Description |
|---|---|---|
| POST | /v1/chat/completions | Chat completions (SSE streaming) |
| POST | /v1/completions | Legacy text completions |
| POST | /v1/messages | Anthropic-style messages |
| POST | /v1/embeddings | Text embeddings |
| POST | /v1/images/generations | Image generation |
| GET | /v1/models | Lists the fizmat model |
| Field | Type | Req | Notes |
|---|---|---|---|
| model | string | yes | Always "fizmat" |
| messages | array | yes | {role, content} objects |
| stream | boolean | no | SSE stream (default false) |
| temperature | number | no | 0–2, default 1 |
| max_tokens | integer | no | Max tokens to generate |
| top_p | number | no | Nucleus sampling |
| stop | string/array | no | Stop sequence(s) |
curl https://fizmat-fides.pages.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ff_live_YOUR_KEY" \
-d '{
"model": "fizmat",
"messages": [{"role":"user","content":"Hello!"}]
}'
from openai import OpenAI
client = OpenAI(
base_url="https://fizmat-fides.pages.dev/v1",
api_key="ff_live_YOUR_KEY", # your relay key from /app
)
r = client.chat.completions.create(
model="fizmat",
messages=[{"role": "user", "content": "Why vote for Ilyas?"}],
)
print(r.choices[0].message.content)
const r = await fetch("https://fizmat-fides.pages.dev/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer ff_live_YOUR_KEY",
},
body: JSON.stringify({
model: "fizmat",
messages: [{ role: "user", content: "Hello!" }],
}),
});
const data = await r.json();
console.log(data.choices[0].message.content);
stream = client.chat.completions.create(
model="fizmat",
messages=[{"role": "user", "content": "Tell me about the platform"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
OpenAI error format: { "error": { "message", "type", "code" } }.
| Status | Type | Meaning |
|---|---|---|
| 401 | authentication_error | Missing, invalid, or revoked relay key |
| 429 | rate_limit_error | Shared rate limit reached — back off |
| 500 | server_error | Upstream error — retry |
Shared rate limits apply across all relay keys. Respect Retry-After and use backoff.
Yes — sign in and go. The site routes your messages through a shared pool. Shared rate limits apply, so keep it reasonable.
Sign in, open the dashboard, and mint a relay key (ff_live_…). Send it as Authorization: Bearer to /v1/*. We map it to our model pool — you never touch upstream keys, and you can revoke anytime.
One model: fizmat. We route it to the best available backend and fall through on failure, so you always get a response.
A student party running in a school presidential election. Our candidate is Ilyas. Our platform: transparency, action, technology.