API Reference
SUB&SUB https://api.subnsub.com/v1 पर एक multi-provider relay expose करता है। OpenAI clients /v1/chat/completions पर hit करते हैं; Anthropic clients /v1/messages पर hit करते हैं। एक ही sk-cf-... key दोनों को route करती है — request body में model चुनें और relay upstream चुन लेता है।
सेवा की उपलब्धता
Quick start
API-सक्षम मौजूदा खाते के लिए आपको तीन चीज़ें चाहिए:
- Base URL:
https://api.subnsub.com/v1(OpenAI clients) याhttps://api.subnsub.com(Anthropic clients — SDK खुद/v1/messagesappend कर लेता है) - API key: console से जारी की गई
sk-cf-... - मॉडल: 16 समर्थित मॉडल में से एक - उदाहरण के लिए।
gpt-5.4-miniयाclaude-sonnet-5
Authentication
हर request में एक Authorization: Bearer sk-cf-... header होना ज़रूरी है। Keys console से जारी की जाती हैं और SHA-256 hashes के रूप में store होती हैं — creation screen छोड़ते ही plaintext हमेशा के लिए चला जाता है, इसलिए उसे तुरंत save करें।
Endpoints
स्थिर सार्वजनिक सतह नीचे और मशीन-पठनीय OpenAPI 3.1 दस्तावेज़ में दी गई है। यहाँ सूचीबद्ध न किए गए फ़ील्ड upstream को भेजे जा सकते हैं, लेकिन वे स्वतः SUB&SUB के संगतता अनुबंध का हिस्सा नहीं बनते।
POST /v1/chat/completions
एक chat completion request भेजें। Request का shape OpenAI Chat Completions API से मेल खाता है — OpenAI SDKs बिना बदलाव के काम करते हैं।
| Parameter | Type | विवरण |
|---|---|---|
| model | string | verified model IDs में से एक। |
| messages | array | Conversation history। हर item: {role, content} जहाँ role ∈ system / user / assistant। |
| stream | boolean | अगर true है, तो response SSE chunks के रूप में भेजा जाता है। देखें Streaming। |
| stream_options | object | Optional। Relay हमेशा upstream {include_usage: true} force करता है ताकि अंतिम chunk में token-usage block आए — इसे override करने का कोई असर नहीं होता। |
| max_tokens | integer | Completion की length को cap करता है। Default model की maximum होती है। |
| temperature | number | 0 – 2। ज़्यादा = ज़्यादा random। |
POST /v1/responses
OpenAI Responses API - नया OpenAI अनुरोध आकार (client.responses.create(...))। प्रत्येक कैटलॉग मॉडल के साथ काम करता है: gpt-* मूल रूप से, claude-* चैट/पूर्णता के समान संगतता ब्रिज के माध्यम से। उपयोग को समान रूप से मापा जाता है - मॉडल की स्तरीय दर पर इनपुट/आउटपुट टोकन।
| Parameter | Type | विवरण |
|---|---|---|
| model | string | कोई भी कैटलॉग मॉडल ID। |
| input | string | array | प्रॉम्प्ट - एक सादा स्ट्रिंग या संरचित आइटम सूची Responses API परिभाषित करती है। |
| max_output_tokens | integer | कैप्स प्रतिक्रिया लंबाई (तर्क + दृश्यमान आउटपुट संयुक्त)। |
| reasoning | object | {"effort": "..."} — तर्क_प्रयास के समान पांच मान। |
| stream | boolean | यदि true, मानक प्रतिक्रियाएँ SSE अनुक्रम स्ट्रीम करता है: response.created, response.output_text.delta, …, response.completed। |
| background | boolean | समर्थित नहीं. background: true रिटर्न 400 unsupported_background_mode - रिले केवल सिंक्रोनस रन प्रदान करता है। |
:online वेब-खोज प्रत्यय का इस समापन बिंदु पर कोई प्रभाव नहीं पड़ता है - प्रत्यय हटा दिया जाता है लेकिन कोई खोज संदर्भ इंजेक्ट नहीं किया जाता है (प्रश्न messages से निकाले जाते हैं, जो प्रतिक्रिया अनुरोध नहीं रखते हैं)। वेब खोज के लिए /v1/chat/completions या /v1/messages का उपयोग करें।
चलाने योग्य Responses उदाहरण:
curl https://api.subnsub.com/v1/responses \
-H "Authorization: Bearer sk-cf-xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini",
"input": "Explain exponential backoff in two sentences."
}'
POST /v1/messages
claude-* models के लिए Anthropic-native endpoint — Anthropic SDK (anthropic-sdk-python, @anthropic-ai/sdk, claude-code) इस path के विरुद्ध बिना बदलाव के काम करता है। अपना base URL https://api.subnsub.com पर point करें और x-api-key header के ज़रिए authenticate करें (अगर आपका client पसंद करे तो Authorization-Bearer form भी काम करता है)।
| Parameter | Type | विवरण |
|---|---|---|
| model | string | एक claude-* model ID (देखें उपलब्ध models)। यहाँ कोई OpenAI model पास करने पर 400 invalid_request_error लौटता है। |
| max_tokens | integer | Anthropic के लिए आवश्यक — assistant reply की length को cap करता है। |
| messages | array | Conversation history, Anthropic shape: {role, content} जहाँ role ∈ user / assistant। |
| stream | boolean | अगर true है, तो standard Anthropic SSE event sequence लौटता है: message_start, content_block_delta, message_delta, message_stop। |
| thinking | object | शब्दशः Anthropic पर अग्रेषित किया गया। जहां समर्थित हो वहां {"type":"adaptive"} का उपयोग करें; Fable 5 इस क्षेत्र को छोड़ दिए जाने पर भी हमेशा अनुकूली सोच का उपयोग करता है। कोई सिंथेटिक -thinking मॉडल आईडी नहीं हैं। |
| cache_control | object | Prompt-caching समर्थित है। Cache-write tokens tier के input rate के 1.25× पर और cache-read tokens 0.10× पर bill होते हैं। |
चलाने योग्य Anthropic Messages उदाहरण:
curl https://api.subnsub.com/v1/messages \
-H "x-api-key: sk-cf-xxxxxxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello"}]
}'
POST /v1/messages/count_tokens
भेजने से पहले Anthropic फ़ॉर्मैट वाले prompt के token गिनें। वही x-api-key, anthropic-version, model, system, messages और tools फ़ील्ड उपयोग करें जो /v1/messages को भेजते हैं। इस endpoint का शुल्क नहीं लगता। :online suffix हटा दिया जाता है, लेकिन search results न तो लाए जाते हैं और न गिने जाते हैं।
curl https://api.subnsub.com/v1/messages/count_tokens \
-H "x-api-key: sk-cf-xxxxxxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Count this prompt."}]
}'
GET /v1/models
उन मॉडलों की सूची बनाएं जिनका आप वास्तव में उपयोग कर सकते हैं। रिले दोनों अपस्ट्रीम परिवारों की स्वास्थ्य जांच करता है और 16 सत्यापित सार्वजनिक आईडी लौटाता है - वही श्वेतसूची जो POST एंडपॉइंट लागू करता है, इसलिए डिस्कवरी कभी भी ऐसे मॉडल का विज्ञापन नहीं करती है जो 400 होगा। यदि अपस्ट्रीम कैटलॉग पहुंच योग्य नहीं है तो समापन बिंदु एक भ्रामक खाली सूची के बजाय 502 models_unreachable लौटाता है।
# sample response (truncated)
{
"object": "list",
"data": [
{ "id": "gpt-5.4-mini", "type": "model", ... },
{ "id": "gpt-5.4", "type": "model", ... },
{ "id": "claude-sonnet-5", "type": "model", ... },
{ "id": "claude-fable-5", "type": "model", ... },
...
]
}
संगतता अनुबंध
OpenAI-compatible होने का अर्थ यह नहीं है कि हर upstream model का हर फ़ील्ड हर route पर सुनिश्चित है। सहायता के तीन स्तर हैं:
| Status | विवरण |
|---|---|
| प्रलेखित और स्थिर | ऊपर दिए चार endpoints पर text generation; synchronous और streaming responses; प्रलेखित reasoning controls; Anthropic prompt caching; Chat Completions और Messages पर :online; authentication, metering और प्रलेखित error envelopes। |
| पास-थ्रू, मॉडल पर निर्भर | Tool/function calling, strict tools, structured output / JSON Schema, sampling controls, stop sequences, multipart content (images या documents सहित), और model context/output limits। Edge इन फ़ील्ड को local validation के बिना आगे भेजता है, लेकिन support और response का सटीक रूप model व protocol के अनुसार बदल सकता है। Production से पहले अपने exact model और payload को जाँचें; providers के बीच normalization की गारंटी नहीं है। |
| उपलब्ध नहीं | Background Responses runs; Responses पर :online; OpenAI image-generation, audio, Realtime, Batch, Files, Embeddings और Moderation APIs; synthetic Claude -thinking aliases; और OpenAI का minimal reasoning effort। |
उपलब्ध models
दो अपस्ट्रीम परिवार। 7 OpenAI मॉडल साझा ChatGPT-स्तरीय खातों तक जाते हैं; 9 Claude मॉडल आधिकारिक Anthropic खातों द्वारा परोसे जाते हैं। प्रति-टोकन दरें स्तर पर निर्भर करती हैं (देखें मूल्य निर्धारण) - दोनों के लिए एक ही कुंजी काम करती है।
OpenAI
| Model ID | Family | Tier | Notes |
|---|---|---|---|
| gpt-5.4-mini | GPT-5.4 | Mini | तेज़ & सस्ता। Chat & coding के लिए अनुशंसित default। |
| gpt-5.4 | GPT-5.4 | Standard | Full-size GPT-5.4 — धीमा, अधिक मज़बूत reasoning। |
| gpt-5.4-2026-03-05 | GPT-5.4 | Standard | gpt-5.4 का date-stamped snapshot। |
| gpt-5.5 | GPT-5.5 | Premium | नया flagship। |
| gpt-5.6-luna | GPT-5.6 | Luna | हल्का GPT-5.6 - मिनी और स्टैंडर्ड के बीच। |
| gpt-5.6-terra | GPT-5.6 | Standard | मध्यम आकार GPT-5.6 — gpt-5.4 के समान दर। |
| gpt-5.6-sol | GPT-5.6 | Premium | शीर्ष GPT-5.6 — gpt-5.5 के समान दर। |
Anthropic
| Model ID | Family | Tier | Notes |
|---|---|---|---|
| claude-fable-5 | Fable 5 | Fable | Anthropic का सबसे सक्षम व्यापक रूप से जारी किया गया मॉडल; अनुकूली सोच सदैव चालू रहती है। |
| claude-haiku-4-5-20251001 | Haiku 4.5 | Mini | सबसे छोटा Claude — gpt-5.4-mini के समान per-token rate। |
| claude-sonnet-4-5-20250929 | Sonnet 4.5 | Standard | Mid-tier Claude — gpt-5.4 के समान per-token rate। |
| claude-sonnet-4-6 | Sonnet 4.6 | Standard | नया Sonnet tune — Standard tier, sonnet-4.5 के समान rate। |
| claude-sonnet-5 | Sonnet 5 | Sonnet 5 Intro | नवीनतम Sonnet; प्रारंभिक मूल्य निर्धारण 31 अगस्त, 2026 तक लागू होता है। |
| claude-opus-4-5-20251101 | Opus 4.5 | Ultra | Frontier Claude। Anthropic के list price पर bill होता है — कोई margin नहीं (देखें Pricing)। |
| claude-opus-4-6 | Opus 4.6 | Ultra | नया Opus tune। |
| claude-opus-4-7 | Opus 4.7 | Ultra | पिछला Opus snapshot। |
| claude-opus-4-8 | Opus 4.8 | Ultra | नवीनतम Opus snapshot। |
stop_reason: "refusal" और एक खाली सामग्री सरणी के साथ HTTP 200 लौटा सकते हैं। ग्राहकों को केवल HTTP स्थिति पर नहीं, बल्कि stop_reason पर शाखा लगानी चाहिए और claude-opus-4-8 के साथ अनुरोध का पुनः प्रयास करना चाहिए। OpenAI-प्रोटोकॉल एंडपॉइंट के माध्यम से वही परिणाम finish_reason: "content_filter" (चैट/पूर्णता) या status: "incomplete" के साथ incomplete_details.reason: "content_filter" (प्रतिक्रियाएं) के रूप में सामने आता है। शीघ्र-चरण इनकार आपके शेष से नहीं काटा जाता है; आंशिक आउटपुट के सामान्य रूप से बिल किए जाने के बाद मध्य-धारा इनकार।
gpt-5.2* और gpt-5.3-codex*), नंगे gpt-5.6 उपनाम (ऊपर नामित वेरिएंट का उपयोग करें), OpenAI प्रो/इमेज/ऑडियो/रियलटाइम वेरिएंट, डॉट-नोटेशन आईडी (उदाहरण के लिए claude-sonnet-4.5), और सिंथेटिक -thinking मॉडल आईडी उपलब्ध नहीं हैं। उपरोक्त सटीक आईडी और Anthropic के मूल thinking फ़ील्ड का उपयोग करें।
Reasoning effort
उपरोक्त प्रत्येक OpenAI मॉडल एक तर्क मॉडल है - बैकएंड दृश्यमान आउटपुट उत्सर्जित करने से पहले अधिक या कम "सोच" टोकन खर्च कर सकता है। बजट को नियंत्रित करने के लिए OpenAI /v1/chat/completions अनुरोध निकाय (या /v1/responses पर reasoning: {"effort": ...}) पर reasoning_effort सेट करें। Claude के लिए, Anthropic-मूल thinking और output_config.effort फ़ील्ड का उपयोग करें - /v1/messages अनुभाग देखें। OpenAI मॉडल समान पाँच प्रयास मान स्वीकार करते हैं:
| Value | व्यवहार |
|---|---|
| none | कोई thinking नहीं — सीधे answer तक। सबसे सस्ता और सबसे तेज़। |
| low | एक छोटा reasoning pass। |
| medium | अगर आप field पास नहीं करते तो default। संतुलित। |
| high | गहरा reasoning। non-trivial coding / multi-step problems के लिए अनुशंसित। |
| xhigh | अधिकतम effort। सबसे धीमा और सबसे महँगा; इसे कठिन analysis के लिए रखें जहाँ आपको वास्तव में इसकी ज़रूरत हो। |
# Two equivalent forms — pick whichever your SDK supports
{
"model": "gpt-5.4-mini",
"reasoning_effort": "high",
"messages": [ ... ]
}
{
"model": "gpt-5.5",
"reasoning": { "effort": "xhigh" },
"messages": [ ... ]
}
'minimal' भी परिभाषित करता है, लेकिन इस relay के models इसे reject करते हैं: "'minimal' is not supported with this model"। ऊपर की पाँच values पर ही टिके रहें।
Streaming
Server-Sent Events पाने के लिए "stream": true set करें। अंतिम chunk में एक usage block होता है (हम upstream stream_options.include_usage force करते हैं ताकि token counts हमेशा emit हों), फिर एक literal data: [DONE] stream को बंद कर देता है।
# Streaming format (line by line)
data: {"id":"resp_...","choices":[{"delta":{"content":"Hi"}}]}
data: {"id":"resp_...","choices":[{"delta":{"content":"!"}}]}
data: {"id":"resp_...","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":11,"total_tokens":29}}
data: [DONE]
चलाने योग्य Python streaming उदाहरण:
from openai import OpenAI
client = OpenAI(
api_key="sk-cf-xxxxxxxxxxxx",
base_url="https://api.subnsub.com/v1",
)
stream = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[{"role": "user", "content": "Hello"}],
stream=True,
)
for chunk in stream:
text = chunk.choices[0].delta.content if chunk.choices else None
if text:
print(text, end="", flush=True)
Web search
endpoint द्वारा समर्थित किसी भी model ID में :online append करें और relay model को forward करने से पहले एक web search चलाएगा, results को conversation के आगे prepend करते हुए ताकि answer ताज़े data पर आधारित हो। यह suffix /v1/chat/completions और /v1/messages पर काम करता है (बाद वाले को फिर भी एक claude-* base चाहिए); कोई search-specific request fields ज़रूरी नहीं।
# Same call as before — just :online on the model
curl https://api.subnsub.com/v1/chat/completions \
-H "Authorization: Bearer sk-cf-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini:online",
"messages": [
{"role": "user", "content": "What did Anthropic ship this week?"}
]
}'
यह कैसे काम करता है: relay :online हटाता है, सबसे हालिया user message को query के रूप में लेता है (400 characters पर capped), उपलब्ध होने पर extracted page text के साथ अधिकतम 3 results के लिए Tavily को call करता है, साथ ही एक optional Tavily-generated summary, फिर उन्हें request upstream भेजने से पहले उसी user turn के आगे एक स्पष्ट रूप से सीमांकित <search_results> block के रूप में prepend करता है। Search call का 8-second timeout होता है। Results जानबूझकर user role में inject किए जाते हैं — कभी system prompt में नहीं — ताकि untrusted snippets को system-priority instructions तक न बढ़ाया जा सके।
<search_results> block इस तरह दिखता है। इसके पहले एक one-line instruction होता है जो model को बताता है कि block को untrusted external data मानें और numbered items को inline cite करें:
<search_results query="What did Anthropic ship this week?" retrieved="2026-05-21">
Summary: <short LLM-generated synthesis of the result set>
[1] Anthropic launches Opus 4.8
URL: https://www.anthropic.com/news/opus-4-8
<extracted page text, or short snippet if extraction failed — up to ~2000 chars>
[2] ...
</search_results>
| व्यवहार | विवरण |
|---|---|
| लागत | आज कोई surcharge नहीं — आप model के सामान्य per-token rate का भुगतान करते हैं; relay search call को absorb कर लेता है। Inject किया गया <search_results> block input tokens के रूप में गिना जाता है, इसलिए :online के बिना उसी सवाल की तुलना में ज़्यादा prompt-token bill की उम्मीद रखें। |
| Failure mode | Soft। अगर Tavily time out या error करता है, तो request बिना search context के model तक जारी रहती है (आपको फिर भी answer मिलता है, बस ungrounded)। एकमात्र hard failure 503 search_unavailable है जब relay पर search बिल्कुल भी configured न हो। |
| count_tokens | /v1/messages/count_tokens suffix हटाता है लेकिन Tavily को कभी call नहीं करता — count आपके original prompt को दर्शाता है, augmented को नहीं। |
| Multi-turn | केवल अंतिम user turn को query & augment किया जाता है; पहले के turns अछूते रहते हैं। फिर से search करने के लिए, model पर :online रखते हुए एक नया user message भेजें। |
:online का उपयोग कब करें
Relay हर request पर एक ही Tavily call करता है और results inject करता है — यह कोई agentic search loop नहीं है। Model जो देखता है उसके आधार पर फिर से search करने का फ़ैसला नहीं करता, जैसा Perplexity Sonar या ChatGPT browse tool करते हैं। इस सीमा को ध्यान में रखकर योजना बनाएँ:
| उपयुक्त | अनुपयुक्त |
|---|---|
| समय-संवेदनशील तथ्य (news, prices, version numbers, release dates) | Private या pasted code जो public web पर नहीं है — grounding के बिना prompt noise जोड़ता है |
| किसी official doc या announcement को खोजना | Math, reasoning, translation, creative writing — ground करने के लिए कुछ नहीं |
| कुछ भी जिसे आप अन्यथा Googling करके verify करते | Training data में पहले से मौजूद stable knowledge ("binary tree क्या है") |
अंतिम user message को एक standalone search query के रूप में लिखें। Search आपके सबसे हालिया user turn के literal text के विरुद्ध चलती है (400 chars पर capped), इसलिए "और नवीनतम version के बारे में क्या?" जैसे conversational follow-ups बिना context के बेकार queries बन जाते हैं। Multi-turn chat में, जब आप :online जोड़ें तो topic को दोबारा बताएँ — जैसे "the latest one" के बजाय "latest version of the Anthropic Python SDK"।
जिन सवालों में multi-step synthesis चाहिए (compare-and-contrast, deep research), उन्हें कई turns में बाँटें और हर एक में :online जोड़ें। Model हर turn के ताज़े results पढ़ेगा; आप अगली query को manually steer करते हैं। ध्यान दें कि inject किया गया <search_results> block केवल upstream भेजा जाता है — यह आपके client को वापस echo नहीं होता और अगली request में preserve नहीं होता, इसलिए अगर कोई बाद वाला turn पहले के sources के विवरणों पर निर्भर हो, तो model से कहें कि वह उन्हें अपने visible reply में summarise करे। One-shot research mode समर्थित नहीं है।
reasoning_effort: "high") के साथ combine करें ताकि model पहले result पर निर्भर रहने के बजाय वास्तव में लौटाए गए sources को तौले। Inject किया गया instruction model से numbered sources को inline [1], [2] के रूप में cite करने को कहता है, इसलिए output में आमतौर पर ऐसे citations होंगे — हालाँकि model उस format के लिए सख़्ती से बाध्य नहीं है।
Errors
Envelope इस पर निर्भर करता है कि आपने कौन-सा endpoint call किया — relay errors को उस protocol में लौटाता है जो caller के SDK से मेल खाता है, और upstream errors ज्यों के त्यों pass through किए जाते हैं।
OpenAI paths (/v1/chat/completions, /v1/responses, /v1/models) — OpenAI envelope:
{ "error": { "message": "...", "type": "...", "code": "..." } }
Anthropic paths (/v1/messages, /v1/messages/count_tokens) — Anthropic envelope:
{ "type": "error", "error": { "type": "...", "message": "..." } }
Anthropic envelope एक अलग shape का उपयोग करता है — कोई code field नहीं, और discriminator type: "error" top level पर होता है (inner error.type category देता है, जैसे authentication_error, invalid_request_error, permission_error, api_error)। Anthropic SDKs पहले से इस shape को parse करते हैं; सादे OpenAI SDK error handlers नहीं करते, इसलिए /v1/messages को किसी Anthropic SDK के साथ call करें (या raw HTTP करें)।
Status codes दोनों protocols में canonical HTTP वाले ही हैं:
| Status | OpenAI code / Anthropic error.type | अर्थ |
|---|---|---|
| 401 | invalid_api_key / authentication_error | गायब या अज्ञात sk-cf-... key। |
| 402 | insufficient_balance / permission_error | Account balance negative है। console billing tab में top up करें। |
| 403 | key_revoked / permission_error | Key revoke कर दी गई थी। |
| 403 | account_closed / permission_error | खाता API एक्सेस के लिए सक्षम नहीं है - 2026-06-08 सेवा कटऑफ के बाद साइन-अप में API सेवा शामिल नहीं है। |
| 400 | model_not_available / invalid_request_error | आपने जो model भेजा वह verified catalogue में नहीं है, या endpoint के लिए ग़लत है (जैसे /v1/messages पर एक OpenAI model) — देखें उपलब्ध models। |
| 400 | unsupported_background_mode / — | background: true पर /v1/responses - रिले केवल सिंक्रोनस रन प्रदान करता है। केवल OpenAI लिफाफा। |
| 429 | rate_limit_exceeded / rate_limit_error | साझा upstream क्षमता पर अस्थायी throttling है। उपलब्ध होने पर retry-after मानें, फिर exponential backoff और jitter के साथ पुनः प्रयास करें। |
| 503 | — | फ़िलहाल कोई upstream account request को serve नहीं कर रहा — आमतौर पर एक अस्थायी pool-wide rate-limit window। थोड़े backoff के बाद फिर कोशिश करें। |
| 503 | search_unavailable / api_error | आपने :online उपयोग किया लेकिन इस relay पर web search configured नहीं है। देखें Web search। |
| 502 | upstream_unreachable / api_error | Relay backend तक नहीं पहुँच सका। एक छोटे backoff के बाद retry करें। |
| 500 | server_error / api_error | Upstream से संपर्क से पहले या बाद में relay विफल हुआ। केवल तभी पुनः प्रयास करें जब operation को दोहराना सुरक्षित हो; अन्यथा पहले usage history देखें। |
पुनः प्रयास और विश्वसनीयता
सीमित retries रखें। Relay साझा upstream क्षमता पर चलता है और generation requests idempotent नहीं हैं।
- पुनः प्रयास करें:
429,502,503और स्पष्ट रूप से अस्थायी500responses।retry-afterमानें; न होने पर jitter के साथ exponential backoff उपयोग करें (जैसे 1 s, 2 s, 4 s; अधिकतम तीन प्रयास)। - बिना बदलाव पुनः प्रयास न करें:
400,401,402या403। पहले payload, key, balance या access state ठीक करें। - Duplicate का जोखिम: हर सफल generation attempt एक अलग billable request है। SUB&SUB अभी idempotency key से generation POST को deduplicate नहीं करता; application-level operation ID रखें और पूरा response मिलने के बाद retry न करें।
- Streaming: बाधित SSE stream फिर से शुरू नहीं किया जा सकता। Reconnect करने पर नई generation शुरू होगी और दूसरा शुल्क लग सकता है।
Pricing और billing
Pay-as-you-go, microdollars में per token bill होता है (1 micro = $0.000001 = एक cent का 1/10,000) ताकि sub-cent requests सटीक रूप से track हों। Rates per 1M tokens हैं, tier के अनुसार — कौन-सा model किस tier पर map होता है, इसके लिए model table देखें।
| Tier | Models | Input / 1M | Output / 1M |
|---|---|---|---|
| Mini | gpt-5.4-mini, claude-haiku-4-5-20251001 | $0.20 | $1.60 |
| Luna | gpt-5.6-luna | $0.30 | $2.40 |
| Standard | gpt-5.4, gpt-5.4-2026-03-05, gpt-5.6-terra, claude-sonnet-4-5-20250929, claude-sonnet-4-6 | $0.75 | $6.00 |
| Premium | gpt-5.5, gpt-5.6-sol | $1.10 | $8.80 |
| Sonnet 5 Intro | claude-sonnet-5 | $2.00 | $10.00 |
| Ultra | claude-opus-4-5-20251101, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8 | $5.00 | $25.00 |
| Fable | claude-fable-5 | $10.00 | $50.00 |
Fable और अल्ट्रा दरें Anthropic की प्रकाशित सूची कीमतों से मेल खाती हैं। Sonnet 5 31 अगस्त, 2026 तक Anthropic की प्रारंभिक $2/$10 दर का उपयोग करता है; उस तिथि के बाद इसका प्रकाशित मानक मूल्य $3/$15 है। पूलित सदस्यता समर्थन के कारण अन्य स्तर अपस्ट्रीम दरों से नीचे चलते हैं।
रीज़निंग टोकन (जब आप OpenAI पर reasoning_effort सेट करते हैं, या Claude पर Anthropic का मूल thinking फ़ील्ड सेट करते हैं) मॉडल की स्तरीय दर पर आउटपुट टोकन के रूप में गिना जाता है - उच्च प्रयास के लिए कोई अलग अधिभार नहीं है, लेकिन एक गहरी सोच वाला अनुरोध आसानी से 10-50× अधिक आउटपुट टोकन उत्सर्जित कर सकता है कोई प्रयास नहीं, इसलिए डॉलर का बिल इसके साथ बढ़ता है।
Anthropic prompt-caching एक अलग line item के रूप में bill होती है: cache writes tier के input rate के 1.25× पर और cache reads 0.10× पर। तो एक haiku-4.5 cache hit की लागत 0.20 × 0.10 = $0.02 per 1M tokens होती है, और एक sonnet-4.5 cache hit की लागत 0.75 × 0.10 = $0.075 per 1M tokens होती है। Cache tokens हर request के billing record में अलग से दर्ज होते हैं — console breakdown दिखाता है।
Balance real time में काटा जाता है जैसे ही हर request लौटती है — streaming requests के लिए, settlement [DONE] chunk आने के बाद चलता है। अपना live balance और per-request settlements /console#billing पर देखें।
Rate limits
आज कोई per-key rate limits नहीं हैं। Shared upstream capacity और provider-side throttling लागू रहते हैं; अगर आप उनसे टकराते हैं, तो relay एक retry-after header के साथ 429 लौटाता है। Per-key RPM / TPM limits की योजना है।
स्थिति और सहायता
- Sign-in किए हुए API-सक्षम खाते Console → Service Status में live provider health और System Notice में संचालन संबंधी घोषणाएँ देख सकते हैं।
- खाते, billing, privacy या security सहायता के लिए [email protected] पर ईमेल करें।
- API विफलता की रिपोर्ट में UTC timestamp, endpoint, model, HTTP status और API key का दिखाई देने वाला prefix दें। Support द्वारा redacted reproduction स्पष्ट रूप से माँगे बिना पूरी API key या prompt content कभी न भेजें।
- सेवा best-effort है और कोई SLA नहीं है। उपलब्धता व refunds के लिए केवल अंग्रेज़ी में उपलब्ध Terms of Service, और data handling के लिए Privacy Policy देखें।
दस्तावेज़ की अंतिम समीक्षा: 14 जुलाई 2026।