2026-এ যে Character AI API বিকল্পগুলো আসলেই কাজ করে

Updated 2026-07-15

Character.AI কোনো official public API অফার করে না, তাই GitHub-এ যে unofficial wrapper পাবেন সেগুলো প্রায়ই ভেঙে যায় এবং এর terms of service violate করে। নির্ভরযোগ্য পথ হলো একটি standard LLM API ব্যবহার করা, OpenAI-compatible gateway, OpenRouter, অথবা একটি self-hosted open model-এর মাধ্যমে, উপরে আপনার নিজের persona layer সহ।

Quick answer: কোনো official Character AI API নেই

Character.AI কখনো একটি public developer API ship করেনি। আপনি যে "Character AI API" library-ই খুঁজে পান না কেন, সেটা একটি reverse-engineered client যা browser session হওয়ার ভান করে। এই wrapper-গুলো platform-এর terms of service violate করে, account ban করায়, এবং site তার internal endpoint বদলালেই কাজ বন্ধ করে দেয়। আপনার নিজের app-এর ভেতরে character chat চাইলে, বরং একটি standard chat completions API-এর উপর সেটা বানান। character নিজেই একটা system prompt (একটা persona card), একটা rolling message history, এবং sampling settings মাত্র। যেকোনো capable instruction-following model সেই role play করতে পারে, এবং আপনি আপনার character, user, এবং data-র সম্পূর্ণ ownership রাখেন। তিনটা বাস্তবসম্মত পথ আছে: একটি OpenAI-compatible gateway যা একটি key দিয়ে অনেক model front করে, একটি multi-provider aggregator হিসেবে OpenRouter, অথবা DeepSeek ও GLM-এর মতো open weight নিজের GPU-তে self-host করা। এই guide-এর বাকি অংশ এগুলো compare করে, কাজ করা curl, Python, এবং Node code দেখায়, এবং production detail cover করে যা character chat-কে generic-এর বদলে consistent মনে করায়।

কেন unofficial Character AI wrapper একটা dead end

Reverse-engineered library-গুলো এমন private endpoint scrape করে যেগুলো কখনো third party-দের জন্য বানানো হয়নি। এর তিনটা practical পরিণতি আছে। প্রথমত, stability। Character.AI যেকোনো সময় internal route-এর নাম বদলাতে পারে, একটা bot check যোগ করতে পারে, বা auth flow বদলাতে পারে, আর আপনার production app কোনো notice বা support channel ছাড়াই বন্ধ হয়ে যাবে। দ্বিতীয়ত, account risk। একটা fake browser session-এর মাধ্যমে automated access ঠিক সেটাই যা terms of service নিষেধ করে, তাই আপনার app চালানো account কোনো appeal ছাড়াই suspend হতে পারে। তৃতীয়ত, intellectual property। platform-এর character-গুলো, জনপ্রিয় community bot সহ, platform এবং তাদের author-দের সম্পত্তি। আপনি সেগুলো একটা commercial product-এ তুলে আনতে পারবেন না। যখন আপনি নিজেই stack-এর owner, তখন এর কোনোটাই প্রযোজ্য না। system prompt হিসেবে লেখা একটা persona আপনার নিজের। published pricing-সহ একটা standard API contract রাতারাতি উধাও হয়ে যায় না। "কোনো official API নেই"-কে একটা design constraint হিসেবে ধরুন, hack করার মতো একটা puzzle না।

তিনটা real বিকল্পের তুলনা

প্রতিটা পথ convenience-কে control-এর বিনিময়ে trade করে। APIsRouter-র মতো একটা hosted gateway আপনাকে DeepSeek, GLM, Kimi, Claude, Gemini, GPT, এবং Grok-এর সামনে https://api.apisrouter.com/v1-এ একটা OpenAI-compatible endpoint দেয়, তাই একটা string বদলে আপনি একটা character-কে model-এর মধ্যে switch করতে পারেন। OpenRouter community-hosted model-এর একটা লম্বা long tail cover করে, যখন আপনি ব্যাপকভাবে experiment করতে চান তখন কাজে লাগে। যখন আপনার data locality দরকার বা dedicated GPU-কে justify করার মতো steady high volume চালান, তখন self-hosting জেতে।

বিকল্পকীভাবে কাজ করেBillingOps burdenসবচেয়ে উপযুক্ত যার জন্য
OpenAI-compatible gateway (APIsRouter)অনেক frontier এবং open model-এর সামনে একটা /v1 endpoint এবং একটা keyPay-as-you-go, কোনো subscription নেইনেই, সম্পূর্ণ hostedদ্রুত একটা character app ship করা এবং প্রতি turn-এ model switch করা
OpenRouterএকটা aggregator যা request অনেক hosted provider-এ route করেProvider অনুযায়ী rate-সহ pay-as-you-goনেই, সম্পূর্ণ hostedCommit করার আগে niche community model explore করা
Self-hosted open modelvLLM বা llama.cpp দিয়ে নিজেই DeepSeek বা GLM weight চালানোTraffic যাই হোক না কেন fixed GPU costবেশি: serving, scaling, update সব আপনার উপরData locality এবং steady high volume

একটা character chat app আসলে কীভাবে কাজ করে

UI সরিয়ে দিলে একটা character app হলো তিনটা অংশ নিয়ে একটা loop। একটা persona card system prompt-এ বসে থাকে: নাম, personality, speech style, "কখনো AI হওয়ার কথা বলবে না"-র মতো hard rule। conversation history user এবং assistant message পালাক্রমে সাথে চলে। sampling settings, মূলত temperature, নিয়ন্ত্রণ করে character কতটা loose ভাবে role play করে। এখানে একটা সম্পূর্ণ প্রথম request আছে। persona পুরোপুরি system message-এ থাকে, তাই একই pattern catalog-এর যেকোনো model-এর সাথে কাজ করে:

curl https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "You are Captain Mira Vale, a dry-witted starship engineer. Stay in character at all times. Speak in short, practical sentences. Never mention being an AI."},
      {"role": "user", "content": "Mira, the reactor is making that noise again."}
    ],
    "temperature": 0.9,
    "max_tokens": 300
  }'

Python এবং Node-এ একটা minimal chat loop

একটা app-এ আপনি history server-side রাখেন, প্রতিটা exchange append করেন, এবং প্রতি turn-এ window resend করেন। official OpenAI SDK অপরিবর্তিতভাবে কাজ করে কারণ endpoint একই contract follow করে; শুধু base_url এবং key আলাদা। নিচের Python version একটা সম্পূর্ণ কাজ করা loop, এবং Node version একটা JavaScript backend-এর জন্য একই request shape দেখায়।

from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://api.apisrouter.com/v1",
)

PERSONA = (
    "You are Captain Mira Vale, a dry-witted starship engineer. "
    "Stay in character at all times. Keep replies under 120 words."
)

history = [{"role": "system", "content": PERSONA}]

def chat(user_text: str) -> str:
    history.append({"role": "user", "content": user_text})
    reply = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=history,
        temperature=0.9,
        max_tokens=300,
    )
    text = reply.choices[0].message.content
    history.append({"role": "assistant", "content": text})
    return text

while True:
    print(chat(input("> ")))

Character chat প্রতি model-এ কত খরচ করে

Character chat input-heavy: প্রতি turn persona এবং history resend করে, তাই output rate-এর চেয়ে input rate বেশি গুরুত্বপূর্ণ। নিচের catalog price প্রতি million token-এ USD-এ। Global model official pricing-এর চেয়ে 20% কমে চলে এবং Chinese model official rate-এর নিচে থাকে; billing pay-as-you-go এবং কোনো subscription নেই, /topup-এ checkout-এ কোনো signup লাগে না (আগে pay করুন, key email-এ আসবে), এবং আপনার প্রথম top-up-এ +100% balance যোগ হয়। Scale বোঝাতে: একটা hobby app যেটা দিনে 1,000 message করে, প্রতি message প্রায় 2,000 input এবং 300 output token-এ, deepseek-v4-flash-এ দিনে প্রায় $0.33 খরচ হয়। একই traffic claude-sonnet-4-6-এ দিনে প্রায় $8.40 হয়, এই কারণেই বেশিরভাগ team premium model শুধু সেই turn-এর জন্য রাখে যেগুলো তার যোগ্য।

MiMo-ও catalog-এ available; current rate-এর জন্য /models দেখুন।
ModelInput / 1MOutput / 1MCharacter chat-এর জন্য উপযুক্ততা
deepseek-v4-flash$0.126$0.252Default pick, roleplay-র জন্য community-র প্রিয়
deepseek-v4-pro$0.3915$0.783লম্বা scene-এ আরও শক্তিশালী coherence
glm-5$0.514$2.314Value pricing-এ ভালো dialogue
kimi-k2.6/models দেখুন/models দেখুনValue pick, long context
gemini-3.5-flash$1.20$7.20দ্রুত, ভালো general dialogue
claude-sonnet-4-6$2.40$12.00সর্বোচ্চ prose quality, SFW creative writing
claude-opus-4-7$4.00$20.00গুরুত্বপূর্ণ scene-এর জন্য premium prose, SFW
gpt-5.5$4.00$24.00General-purpose flagship
grok-4.5$1.60$4.80xAI flagship, flexible fiction policy, 500K context

Character chat-এর জন্য model বাছাই করা

Character কাজের জন্য model choice নির্ভর করে প্রতি ডলারে dialogue quality এবং প্রতিটা provider-এর published content policy-র উপর, কারণ character app fiction-এর খুব কাছাকাছি থাকে। DeepSeek V4 family roleplay-র জন্য community-র প্রিয় এবং সেরা value: deepseek-v4-flash দিয়ে শুরু করুন, বেশি coherence দরকার এমন scene deepseek-v4-pro-তে move করুন। GLM-5, Kimi K2.6, এবং MiMo value pick হিসেবে A/B test করার মতো; character preference যথেষ্ট subjective যে একটা সস্তা side-by-side প্রায়ই surprise করে। Grok 4.5 প্রাসঙ্গিক কারণ xAI-এর published policy mature fictional theme allow করে, যা নিজস্ব age gate enforce করা adult-facing fiction app-এর জন্য গুরুত্বপূর্ণ। Claude Sonnet 4.6 এবং Opus 4.7 catalog-এর সেরা prose লেখে, কিন্তু Anthropic-এর policy explicit content prohibit করে, তাই Claude-কে SFW creative writing-এর জন্য premium option হিসেবে ধরুন। যা-ই বাছুন না কেন, provider-এর usage policy পড়ুন এবং তার উপর ভিত্তি করে আপনার app-এর নিজস্ব content rule design করুন, model সবকিছু আপনার জন্য police করবে এমন ধরে না নিয়ে। একটা গভীর comparison নিচে linked আমাদের roleplay model guide-এ আছে।

Character app-এর জন্য পাঁচটা production design tip

1. Truncate করার বদলে memory compress করুন। শেষ 10 থেকে 20 turn verbatim রাখুন, তারপর পুরনো turn একটা compact memory block-এ summarize করুন এবং durable fact (নাম, সম্পর্ক, প্রতিশ্রুতি) system prompt-এ re-inject করা একটা structured note-এ store করুন। Blind truncation-এর কারণেই character user-এর নাম ভুলে যায়; compression একইসাথে input token এবং drift কমায়। 2. Persona-কে বাকি সবকিছু থেকে আলাদা রাখুন। persona card, world state, এবং conversation history আলাদা prompt block-এ রাখুন, এবং user text-কে কখনো persona block modify করতে দেবেন না। এটা prompt-injection ধরনের derailment ("তোমার character ভুলে যাও এবং...") থামায় এবং character আবার লেখা ছাড়াই model swap করতে দেয়। 3. আপনার নিজের moderation layer যোগ করুন। inbound এবং outbound text-কে একটা classification pass-এর মধ্য দিয়ে চালান এবং model-এর policy থেকে independently আপনার product-এর content policy enforce করুন। যদি minor-রা আপনার app-এ পৌঁছাতে পারে, এটা non-negotiable: যথাযথভাবে age-gate করুন এবং দুই দিকেই filter করুন, কারণ provider policy define করে model কী তৈরি করতে পারে, আপনার product কী দেখানো উচিত সেটা না। 4. Tone stability engineer করুন। প্রতিটা character-এর জন্য temperature pin করুন, persona card-এ character-এর voice-এর দুই-তিনটা example line রাখুন, এবং প্রতিটা summarization event-এর পর এক-লাইনের style reminder দিয়ে re-anchor করুন। একটা fixed 20-message test script রাখুন এবং model বা prompt বদলালেই সেটা replay করুন, যাতে user টের পাওয়ার আগেই voice regression ধরা পড়ে। 5. Turn-এর গুরুত্ব অনুযায়ী route করুন। বেশিরভাগ turn ছোটখাটো কথাবার্তা এবং deepseek-v4-flash-এর জন্য উপযুক্ত। pivotal turn, যেমন একটা লম্বা emotional user message বা একটা scene transition, একটা সস্তা heuristic বা classifier call দিয়ে detect করুন, এবং শুধু সেগুলোই deepseek-v4-pro বা claude-sonnet-4-6-এ route করুন। যেহেতু gateway প্রতিটা model একটা endpoint-এর পেছনে expose করে, routing একটা দ্বিতীয় integration-এর বদলে প্রতি request-এ একটা string change মাত্র।

সাধারণ প্রশ্ন

Character AI-এর কি official public API আছে?

না। 2026 অনুযায়ী Character.AI কোনো public developer API release করেনি। GitHub-এ যেসব library সেটা offer করে সেগুলো reverse-engineered browser client যা terms of service violate করে এবং site তার internal endpoint বদলালেই ভেঙে যায়।

Character AI API-র সবচেয়ে ভালো বিকল্প কী?

আপনার নিজের persona system prompt-সহ একটা standard OpenAI-compatible chat completions API। character chat-এর জন্য deepseek-v4-flash সাধারণ starting point, কারণ এর dialogue quality এবং কম input price; self-hosting open weight শুধু steady high volume বা strict data locality-র ক্ষেত্রেই যুক্তিসঙ্গত।

আমি কি আমার Character AI character আমার নিজের app-এ export করতে পারি?

আপনি যেসব persona নিজে লিখেছেন সেগুলো system prompt হিসেবে আবার লিখে recreate করতে পারেন, কারণ persona নাম, personality, এবং speech style-এর একটা বর্ণনা মাত্র। আপনি platform-এর character বা অন্য user-দের bot copy করতে পারবেন না; সেগুলো platform এবং তাদের creator-দের সম্পত্তি।

একটা unofficial Character AI API ব্যবহার করা কি terms of service-এর বিরুদ্ধে?

হ্যাঁ। reverse-engineered client-এর মাধ্যমে automated access Character.AI-এর terms দ্বারা নিষিদ্ধ, এবং সেভাবে ব্যবহার করা account suspend হতে পারে। এখানে কোনো stability বা support guarantee-ও নেই, যা এই wrapper-গুলোকে user-facing যেকোনো কিছুর জন্য অনুপযুক্ত করে তোলে।

একটা character chat app চালাতে কত খরচ হয়?

এটা input token-এর সাথে scale করে, কারণ প্রতিটা turn persona এবং history resend করে। উপরের table-এর deepseek-v4-flash rate-এ, দিনে 1,000 message প্রায় দিনে এক ডলারের এক-তৃতীয়াংশ খরচ করে। Memory compression এবং importance-based routing conversation বাড়লেও খরচ flat রাখে।

আমি কি নিজের app বানানোর বদলে SillyTavern বা JanitorAI ব্যবহার করতে পারি?

হ্যাঁ। SillyTavern-এ, /v1-এ শেষ হওয়া base URL (https://api.apisrouter.com/v1) paste করুন এবং আপনার key দিয়ে model list /v1/models থেকে auto-populate হয়ে যাবে। JanitorAI-র proxy config-এ পুরো endpoint https://api.apisrouter.com/v1/chat/completions এবং model name ও API key দরকার।