Rivya AI दस्तावेज़

बातचीत API

बिना स्ट्रीम वाला या SSE बातचीत दौर, API से बनाए गए सत्र, file_id चित्र संलग्नक और टोकन-आधारित क्रेडिट हिसाब के लिए Rivya बातचीत API इस्तेमाल करें।

अंतिम समीक्षा 2026/08/29 को

एक पूरा, बिना स्ट्रीम वाला बातचीत जवाब पाने के लिए POST /api/v1/chat/completions इस्तेमाल करें, या सर्वर से भेजी गई घटनाओं के लिए POST /api/v1/chat/completions/stream इस्तेमाल करें।

Chat API सत्र-आधारित है। नया API चैट सत्र शुरू करने के लिए session_id न भेजें। API से बनाए गए उसी सत्र को आगे बढ़ाने के लिए जवाब में मिला session_id इस्तेमाल करें।

यह पेज लागू किए गए सार्वजनिक API v1 एकीकरण अनुबंध को समझाता है। रनटाइम पहुंच के लिए व्यवस्था में सार्वजनिक API चालू होना, खाते के पास सक्रिय API कुंजी होना और चुने गए मॉडल की API स्थिति उपलब्ध होना जरूरी है। जनरेशन अनुरोध भेजने से पहले उपलब्ध मॉडल सूची देखें।

मौजूदा दायरा

बातचीत API v1 समर्थन करता है:

  • बिना स्ट्रीम वाला सहायक जवाब

  • text/event-stream के साथ SSE स्ट्रीमिंग

  • API-तैयार किया गया बातचीत सत्र

  • खाता क्रेडिट आरक्षण और टोकन-आधारित अंतिम हिसाब

  • चुना गया मॉडल समर्थन करे तो वैकल्पिक वेब खोज, तर्क प्रयास और विचार विधि

  • Files API के file_id मान के माध्यम से इमेज संलग्नक

बातचीत API v1 समर्थन नहीं करता:

  • उपयोगकर्ता द्वारा भेजा गया कच्चा messages इतिहास

  • केवल Studio वाले चैट सत्र को आगे बढ़ाना

  • मनमाने बाहरी संलग्नक URL

  • बातचीत वेबहुक घटनाएं

जरूरी अनुमतियाँ

इन अनुमतियों वाली API कुंजी इस्तेमाल करें:

chat:create
chat:read

सेटिंग में बनाई गई नई कुंजियों में दोनों अनुमतियां सामान्य रूप से शामिल रहती हैं। Chat API कॉल करने से पहले पुरानी कुंजियां दोबारा बनानी पड़ सकती हैं।

तैयार A बातचीत पूरा होना

curl https://rivya.ai/api/v1/chat/completions \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chat-turn-001" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "message": "Write a concise launch plan for a new product image campaign",
    "client_request_id": "chat-001"
  }'

जवाब:

{
  "id": "chatcmpl_...",
  "object": "chat.completion",
  "session_id": "session_id",
  "model": "claude-sonnet-5-chat",
  "created_at": "2026-05-11T00:00:00.000Z",
  "message": {
    "id": "assistant_message_id",
    "role": "assistant",
    "content": "..."
  },
  "usage": {
    "input_tokens": 1200,
    "output_tokens": 320,
    "total_tokens": 1520
  },
  "credits": {
    "reserved": 3,
    "final": 2
  }
}

स्ट्रीम A: बातचीत पूरी होना

जब आपके सर्वर को सहायक के उत्तर के अंश आते ही चाहिए हों, तब POST /api/v1/chat/completions/stream इस्तेमाल करें:

curl -N https://rivya.ai/api/v1/chat/completions/stream \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -H "Idempotency-Key: chat-stream-001" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "message": "Write a concise launch plan for a new product image campaign",
    "client_request_id": "chat-stream-001"
  }'

स्ट्रीमिंग जवाब Content-Type: text/event-stream; charset=utf-8 इस्तेमाल करते हैं।

घटनाएं:

घटनाअर्थ
session.createdAPI कुंजी, मॉडल, सत्र, संलग्नक, दर सीमा और क्रेडिट आरक्षण की जांच हुई।
message.deltaसहायक संदेश का प्रदर्शित अंश। यह अभी अंतिम संदेश नहीं है।
message.completedसहायक संदेश API से बनाए गए सत्र में दर्ज हो गया।
usage.completedटोकन उपयोग और अंतिम क्रेडिट तय हो गए।
heartbeatलंबे विराम के दौरान कनेक्शन सक्रिय रखने की घटना।
errorस्ट्रीमिंग शुरू होने के बाद विफलता के लिए सार्वजनिक API त्रुटि आवरण।
doneस्ट्रीम सफलतापूर्वक पूरी हुई।

स्ट्रीम का उदाहरण:

event: session.created
data: {"request_id":"req_...","session_id":"session_id","model":"claude-sonnet-5-chat"}

event: message.delta
data: {"request_id":"req_...","session_id":"session_id","delta":"Draft ","index":0}

event: message.completed
data: {"request_id":"req_...","session_id":"session_id","message":{"id":"assistant_message_id","role":"assistant","content":"Draft ...","created_at":"2026-05-11T00:00:00.000Z"}}

event: usage.completed
data: {"request_id":"req_...","session_id":"session_id","usage":{"input_tokens":1200,"output_tokens":320,"total_tokens":1520},"credits":{"reserved":3,"final":2}}

event: done
data: {"request_id":"req_...","ok":true}

अगर पहली SSE घटना के बाद त्रुटि होती है, तो स्ट्रीम event: error भेजकर बंद हो जाती है:

event: error
data: {"error":{"code":"internal_error","message":"The request could not be completed.","requestId":"req_..."}}

अगर क्लाइंट जवाब पूरा होने से पहले कनेक्शन तोड़ देता है, तो Rivya जहां संभव हो जारी निर्माण स्ट्रीम रोकता है। अधूरे अंश अंतिम सहायक संदेश के रूप में सहेजे नहीं जाते। अगर सर्वर पहले ही message.completed तय कर चुका है, तो अंतिम नतीजा बाद में GET /api/v1/chat/sessions/{sessionId} से पढ़ा जा सकता है।

आगे बढ़ना A सत्र

लौटाया गया session_id इस्तेमाल करें:

curl https://rivya.ai/api/v1/chat/completions \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chat-turn-002" \
  -d '{
    "model": "claude-sonnet-5-chat",
    "session_id": "session_id",
    "message": "Now turn that into a 5-step execution checklist."
  }'

सत्र उसी Rivya खाते का होना चाहिए और सार्वजनिक API से बनाया गया होना चाहिए। केवल Studio में बनाए गए बातचीत सत्र, बातचीत API से लौटाए या आगे नहीं बढ़ाए जाते।

चित्र संलग्नक

बातचीत के संलग्नक बाहरी URL नहीं, Files API के रिकॉर्ड इस्तेमाल करते हैं।

  1. POST /api/v1/files से चित्र अपलोड करें।

  2. लौटाए गए id को attachments[].file_id के रूप में इस्तेमाल करें।

{
  "model": "<image-capable-chat-model-id>",
  "message": "Review this product photo and suggest a cleaner editorial direction.",
  "attachments": [
    {
      "file_id": "file_..."
    }
  ]
}

फ़ाइल उसी खाते की, उपलब्ध और kind: "image" वाली होनी चाहिए। प्लेसहोल्डर की जगह ऐसा उपलब्ध चैट मॉडल ID दें, जिसकी /api/v1/models प्रविष्टि में chat_capabilities इमेज अटैचमेंट समर्थन दिखाता हो। इस पेज के दूसरे उदाहरणों में इस्तेमाल हुआ claude-sonnet-5-chat केवल टेक्स्ट के लिए है; अटैचमेंट अनुरोध में उसका उपयोग न करें। इमेज अटैचमेंट का समर्थन न करने वाले मॉडल chat_attachment_not_supported लौटाते हैं।

वैकल्पिक नियंत्रण

{
  "model": "claude-sonnet-5-chat",
  "message": "Compare three launch options.",
  "enable_web_search": false,
  "reasoning_effort": "default",
  "thought_mode": "default"
}

नियंत्रण का समर्थन मॉडल के अनुसार बदलता है। अपने UI में कोई नियंत्रण दिखाने से पहले /api/v1/models पढ़ें और chat_capabilities जांचें।

सूची सत्र

GET /api/v1/chat/sessions को ऐसी कुंजी के साथ इस्तेमाल करें जिसमें chat:read शामिल हो।

curl https://rivya.ai/api/v1/chat/sessions \
  -H "Authorization: Bearer rvya_sk_..."

यह केवल API-तैयार किया गया सत्र लौटाता है करता है:

{
  "object": "list",
  "data": [
    {
      "id": "session_id",
      "object": "chat.session",
      "model": "claude-sonnet-5-chat",
      "tool_slug": null,
      "title": "Write a concise launch plan...",
      "controls": {
        "enable_web_search": false,
        "reasoning_effort": null,
        "thought_mode": null
      },
      "created_at": "2026-05-11T00:00:00.000Z",
      "updated_at": "2026-05-11T00:00:00.000Z",
      "last_message_at": "2026-05-11T00:00:00.000Z"
    }
  ]
}

सत्र प्राप्त करें

API से बनाए गए सत्र और उसके पक्के संदेश पढ़ने के लिए GET /api/v1/chat/sessions/{sessionId} इस्तेमाल करें।

curl https://rivya.ai/api/v1/chat/sessions/session_id \
  -H "Authorization: Bearer rvya_sk_..."

जवाब में उपयोगकर्ता और सहायक के पक्के संदेश शामिल होते हैं। यह प्रदाता के आंतरिक फ़ील्ड उजागर नहीं करता।

एक ही अनुरोध की सुरक्षा

हर निर्माण अनुरोध के लिए Idempotency-Key इस्तेमाल करें: POST /api/v1/chat/completions और POST /api/v1/chat/completions/stream

अगर दोबारा किया गया अनुरोध वही कुंजी और वही अनुरोध सामग्री इस्तेमाल करता है, तो Rivya दूसरा संदेश बनाए या दोबारा क्रेडिट खर्च किए बिना सहेजा हुआ जवाब लौटा सकता है। अगर वही कुंजी अलग इनपुट के साथ दोबारा उपयोग होती है, तो API idempotency_conflict लौटाता है।

स्ट्रीमिंग अनुरोध दोबारा करने पर Rivya टोकन के पुराने अंश फिर से नहीं भेजता। पूरा हो चुका अनुरोध दोहराने पर session.created, message.completed, usage.completed और done वाली संक्षिप्त SSE शृंखला लौटती है।

सामान्य त्रुटियां

कोडअर्थ
chat_model_not_supportedचुना गया मॉडल बातचीत API के लिए उपलब्ध नहीं है।
chat_session_conflictसत्र इस अनुरोध के लिए इस्तेमाल नहीं हो सकता।
chat_attachment_not_supportedअटैचमेंट मौजूद नहीं है, खाते के स्वामित्व में नहीं है, इमेज नहीं है या मॉडल उसका समर्थन नहीं करता।
insufficient_creditsखाता के पास इस बातचीत का दौर के लिए पर्याप्त क्रेडिट नहीं हैं।
idempotency_conflictवही अनुरोध कुंजी अलग इनपुट के साथ दोबारा उपयोग हुई।

संबंधित पेज