The endpoint is familiar. The supported subset is explicit.
BrokenGPT exposes POST /v1/chat/completions at https://brokengpt.com. Requests use a bearer API key, a public model alias, and an ordered array of role-based messages. Responses return JSON by default or server-sent events when stream is true.
“Uncensored” describes the service’s lower-refusal goal for lawful requests. “Compatible” describes a request and response shape. Neither word should be stretched into a claim that the endpoint implements every feature of another provider. The exact public contract is the API documentation.
Revocable bearer keys
Keys are authenticated server-side and can be managed independently from the browser session.
JSON or SSE
Use a normal completion response or stream incremental chunks over server-sent events.
Request identifiers
Response and rate-limit headers make a production request easier to trace and diagnose.
Input + output metering
API calls spend credits and are labelled as API usage instead of chat usage in the dashboard.
One cURL request to the first streamed token.
Create an API key in the dashboard, keep it on the server, and send the public model alias shown in the live docs. The example below requests SSE streaming and caps the completion without claiming that the cap is the model’s full output ceiling.
POST /v1/chat/completions
curl https://brokengpt.com/v1/chat/completions \
-H "Authorization: Bearer $BROKENGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "broken-one",
"messages": [
{"role": "user", "content": "Explain the tradeoff directly."}
],
"stream": true,
"temperature": 0.7,
"max_completion_tokens": 1200
}'Know what the current chat-completions route accepts.
| Field | Current behavior | Notes |
|---|---|---|
| model | Required public model alias | A mismatched alias returns a model-not-found error. |
| messages | Required array of system, user, and assistant messages | Content is a string; one to 100 messages per request. |
| stream | Optional boolean | True returns text/event-stream chunks and a final DONE event. |
| temperature / top_p | Optional sampling controls | Temperature accepts 0–2; top_p accepts 0–1. |
| max_tokens | Optional output request | max_completion_tokens is also accepted and takes precedence. |
| stop / user | Optional | Stop accepts one string or up to four strings; user is a short identifier. |
Tool calling, multimodal message parts, embeddings, image generation, assistants, batches, and provider-specific extensions are not part of this advertised route. If your application depends on one of them, treat it as a gap—not an implied feature.
API usage costs credits—and remains separately visible.
A direct API request first checks the account’s credit balance and request-rate allowance. Successful completions record input tokens, output tokens, model alias, latency, API-key identifier, and request status. Streamed requests are recorded when the stream completes; failed inference records a failed status without fabricated output usage.
The account uses one prepaid balance across browser chat and API calls, while the usage view separates the two sources by color and totals. Current token prices belong on the pricing page, where they can change without making an old guide misleading.
Lower refusal does not remove the product perimeter.
The gateway classifies requests before selecting a configured model path. Lawful discussion and sensitive topics can be handled by a lower-refusal route, but requests that cross the published hard boundary can be stopped at the gateway even if an upstream model would answer.
That makes behavior more predictable for builders: the public acceptable-use policydefines the service perimeter, and the model disclosure defines the current model-facing configuration. Build application-specific validation and human review on top; generated output can still be false, biased, insecure, or incomplete.