FastSubS client API — 27 September 2026 Base URL: https://fastsubs.org/v1 Authorization: Bearer Use a FastSubS key created in your account, not an OpenAI/NanoGPT provider key. Never put the key in public browser JavaScript, source control or screenshots. GET /models Returns { object: "list", data: [{ id, object: "model", created, owned_by, display_name }] }. Only active text models with an active provider are returned. Use the exact id. Token purchase prices and provider keys are never returned to clients. GET /balance Returns { currency: "USD", units: "14800", units_per_usd: 10000 }. The balance is shared with the same account on the site, bot and native apps. 14800 units = $1.48. Subscription quotas are not represented by this wallet value. POST /chat/completions Content-Type: application/json Body: { "model": "", "messages": [{ "role": "user", "content": "Hello" }], "max_tokens": 128, "stream": false } Supported roles: system, user, assistant. 1–60 messages, at most 24000 characters per message; max_tokens: 1–8192 (default 1024). Text content only. Streaming, image input, tools and structured output are not currently supported. Do not assume full OpenAI API compatibility. API calls are recorded as API usage and wallet operations, not automatically inserted into your website chat history. Response includes id, object="chat.completion", created (Unix seconds), model, choices[0].message.content, finish_reason and usage token counts. The request reserves balance before contacting the provider; failed upstream requests release the reservation. Subscription quotas may apply instead of wallet. HTTP errors: 400 invalid request / unsupported streaming / configured request-cost limit 401 missing, invalid or revoked key / blocked account 402 insufficient balance 404 unknown or inactive model 429 rate limit (Retry-After) / subscription quota exhausted 502 upstream provider failed; inspect your balance/operations before retrying 503 security service temporarily unavailable Avoid blind automatic retries of paid POSTs: idempotency keys are not yet supported. Example with Node.js (API key stored in FASTSUBS_API_KEY environment variable): const base = "https://fastsubs.org/v1"; const headers = { Authorization: `Bearer ${process.env.FASTSUBS_API_KEY}` }; const catalogResponse = await fetch(`${base}/models`, { headers }); if (!catalogResponse.ok) throw new Error(`Catalog HTTP ${catalogResponse.status}`); const catalog = await catalogResponse.json(); if (!catalog.data.length) throw new Error("No active text models"); const response = await fetch(`${base}/chat/completions`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: JSON.stringify({ model: catalog.data[0].id, messages: [{ role: "user", content: "Say hello briefly" }], max_tokens: 64, stream: false }), signal: AbortSignal.timeout(180000) }); const result = await response.json(); if (!response.ok) throw new Error(result.error?.message || `HTTP ${response.status}`); console.log(result.choices[0].message.content); Not all live providers/models have been exhaustively tested. For paid integration, test a small request first, inspect usage and wallet entries, then set your own spend/concurrency limits. Revoking a key in your account blocks subsequent calls.