API reference
Gumagamit ang unbleep ng OpenAI Chat Completions API. Kung nakatawag ka na sa OpenAI dati, alam mo na ang API na ito — ituro ang client mo sa https://unbleep.ai/v1 at palitan ang key.
Quickstart
I-install ang OpenAI SDK, i-set ang base URL at ang key mo, at gumawa ng call.
from openai import OpenAI
client = OpenAI(
base_url="https://unbleep.ai/v1",
api_key="ub_live_9f2c…",
)
resp = client.chat.completions.create(
model="unbleep",
messages=[{"role": "user", "content": "Say hello."}],
)
print(resp.choices[0].message.content)
Authentication
Bawat request ay nangangailangan ng Bearer token sa Authorization header. May prefix ang mga key para agad na mapansin ng mga secret scanner ang isang leak:
ub_live_…— production, sinisingil laban sa iyong prepaid na credit.ub_test_…— para sa local development. Sinisingil nang eksaktong gaya ng live key, sa parehong per-token na rate, laban sa parehong prepaid na credit; ang tanging pagkakaiba ay mas mababang per-key na rate limit (tingnan ang Rate limits). Ang test key ay hiwalay na credential na puwedeng i-revoke — hindi ito free tier.
Authorization: Bearer ub_live_9f2c…
Itago ang mga key sa server-side. Huwag kailanman maglagay ng live key sa browser o mobile na code.
Mga Model
Ipasa ang isa sa mga ID na ito bilang model. Ang bare alias ay laging tumuturo sa pinakabagong build; tinatanggap din ang mga dated snapshot ID at kasalukuyang nagre-resolve sa parehong build. Alinmang anyo ang ipadala mo, ang bare ID ang iuulat ng response — ang request para sa unbleep-250811 ay babalik bilang "model": "unbleep".
| Model | Tumuturo ang alias sa | Context | Pinakamainam para sa |
|---|---|---|---|
| unbleep | unbleep-250811 | 256K | Pangkalahatang gamit — ang default |
| unbleep-high | unbleep-high-250811 | 1M | Pinakamalalaking trabaho — mahahabang dokumento & buong codebase |
| unbleep-mini | unbleep-mini-250811 | 32K | Mura, mabilis, high-volume na mga call |
Chat completions
POST /v1/chat/completions — ang pangunahing endpoint. Tugma sa OpenAI schema ang mga request at response body.
curl https://unbleep.ai/v1/chat/completions \
-H "Authorization: Bearer ub_live_9f2c…" \
-H "Content-Type: application/json" \
-d '{
"model": "unbleep",
"messages": [
{"role": "system", "content": "You are terse."},
{"role": "user", "content": "Explain abliteration in one line."}
],
"temperature": 0.7,
"max_tokens": 256
}'
{
"id": "chatcmpl_a1b2c3",
"object": "chat.completion",
"model": "unbleep",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 24, "completion_tokens": 18, "total_tokens": 42 }
}
Streaming
I-set ang "stream": true para makatanggap ng Server-Sent Events. Bawat event ay isang chat.completion.chunk na may delta; nagtatapos ang stream sa literal na data: [DONE].
data: {"choices":[{"delta":{"content":"Ab"}}]}
data: {"choices":[{"delta":{"content":"literation"}}]}
data: {"choices":[{"delta":{},"finish_reason":"stop"}]}
data: [DONE]
Reasoning
Nag-iisip muna ang mga reasoning model bago sumagot. Bumabalik ang trace bilang reasoning_content sa tabi ng karaniwang content — sa message para sa normal na call, at sa delta habang nagsi-stream. Naroon lang ang field kapag aktuwal na gumawa ng trace ang model, kaya ituring itong opsyonal at basahin ang content para sa sagot mismo.
{
"index": 0,
"message": {
"role": "assistant",
"reasoning_content": "The question asks for one line, so…",
"content": "…"
},
"finish_reason": "stop"
}
Sinisingil ang mga reasoning token. Ang trace ay generated na output at sinisingil sa normal na output rate ng model, binabasa man o hindi ng code mo ang field. Ang mahabang pag-iisip sa isang maikling tanong ay totoong linya sa bill mo.
Ipadala ang "thinking": false para i-off ang reasoning, para mapunta sa sagot ang completion budget sa halip na sa trace:
{
"model": "unbleep",
"messages": […],
"thinking": false
}
Ang policy dial
Ang nagpapaiba sa unbleep. Ang opsyonal na parameter na policy ang nagtatakda kung gaano karaming governance ang tatakbo sa isang request. Ang default nito ay off.
off— unfiltered na baseline (default). Walang ini-inject na pagtanggi.research— sumasagot nang eksaktong gaya ngoff. Naitatala ang value sa usage row para sa sarili mong reporting; wala itong dagdag na screening.strict— sinusuri ang message text laban sa blocklist ng service at nagbabalik ng policy error kapag may tumugma. Ang blocklist ay pinamamahalaan ng operator at umaaplay sa lahat ng nag-opt in; walang per-account na blocklist na puwedeng i-configure.
{
"model": "unbleep",
"messages": […],
"policy": "research"
}
Mga Error
Gumagamit ang mga error ng OpenAI envelope, kaya gumagana nang walang binago ang kasalukuyang error handling.
{
"error": {
"type": "invalid_request_error",
"code": "invalid_api_key",
"message": "Incorrect API key provided."
}
}
| Status | Kahulugan |
|---|---|
| 401 | Nawawala o invalid ang key |
| 402 | Ubos na ang credit — mag-top up para magpatuloy |
| 422 | Na-block ng policy: strict |
| 429 | Rate limit — mag-back off at subukang muli |
| 5xx | Upstream error — ligtas na subukang muli nang may backoff |
Mga rate limit
Dalawang magkahiwalay na limit ang umaaplay, pareho kada account: isang request rate at isang concurrency cap.
Rate ng request
60 request kada minuto kada account, sinusukat sa sliding na 60-segundong window. Nasa account ang limit, hindi sa key — ang paggawa ng dagdag na key ay hindi nagbibigay ng dagdag na throughput, at bawat key na pag-aari mo ay kumukuha sa parehong 60. Ang test key ay may mas mababang per-key na ceiling na 15 request kada minuto; binibilang pa rin ito laban sa parehong account window.
Bawat response ay may kasamang standard na mga header para maipakalat mo ang mga request nang hindi nanghuhula. Iniuulat nila kung aling window ang pinakamalapit nang pumigil sa iyo:
x-ratelimit-limit-requests: 60
x-ratelimit-remaining-requests: 58
x-ratelimit-reset-requests: 43
Ang x-ratelimit-reset-requests ay isang bare integer — buong segundo hanggang magbakante ng slot ang window, walang unit suffix. I-parse ito bilang numero, hindi bilang duration string.
Concurrency
Hanggang 8 request lang ang puwedeng sabay na in flight kada account. Ang ikasiyam na sabay na request ay agad na tinatanggihan nang may 429 at code na too_many_concurrent_requests; may kasamang retry-after: 1 ang response. Walang sinisingil para sa tinanggihang request. Hawak ng streaming call ang slot nito hanggang matapos ang stream, kaya ang mahahabang stream ang kadalasang nagdadala sa iyo sa cap.
{
"error": {
"type": "rate_limit_error",
"code": "too_many_concurrent_requests",
"message": "Too many concurrent requests for this account (limit 8)."
}
}
Fixed ang parehong ceiling para sa mga standard na account — hindi sila lumalaki kasabay ng prepaid balance mo. Kailangan ng mas maluwag? Tinataas ito ng Enterprise.