Magisterium AI

आरंभ करें

यह मार्गदर्शिका आपको Magisterium A2A एंडपॉइंट पर अपना पहला अनुरोध करने, परिणामी कार्य को पुनः प्राप्त करने, और संरचित प्रतिक्रिया पढ़ने के माध्यम से चलाती है।

पूर्वापेक्षाएँ

  1. एक भुगतान की गई Magisterium योजना (Pro, Organization, या Enterprise)। मुफ्त खातों को A2A से PLAN_REQUIRED त्रुटि प्राप्त होगी।
  2. आपके magisterium.com खाते से जुड़ा एक OAuth 2.0 एक्सेस टोकन। A2A Magisterium MCP सर्वर के समान OAuth प्रवाह का उपयोग करता है; प्राधिकरण, टोकन, और डायनेमिक-पंजीकरण एंडपॉइंट को https://www.magisterium.com/.well-known/oauth-authorization-server पर OAuth मेटाडेटा से खोजें।
  3. वे कौशल जिन्हें आप कॉल करना चाहते हैं — पूरी सूची के लिए कौशल देखें।

ध्यान दें: API Console में बनाई गई दीर्घकालिक API कुंजियाँ Chat Completions, Search, और News के लिए काम करती हैं, लेकिन वे A2A के लिए मान्य नहीं हैं — A2A केवल OAuth द्वारा जारी उपयोगकर्ता टोकन स्वीकार करता है।

अपने एक्सेस टोकन को एक पर्यावरण चर के रूप में निर्यात करें ताकि नीचे दिए गए उदाहरण इसे स्वचालित रूप से उठा सकें:

bash
export MAGISTERIUM_TOKEN=<your-access-token-here>

चरण 1: एजेंट की खोज करें

एंडपॉइंट को कॉल करने से पहले, आप यह देखने के लिए सार्वजनिक Agent Card प्राप्त कर सकते हैं कि कौन से कौशल उपलब्ध हैं और प्रोटोकॉल संस्करण की पुष्टि कर सकते हैं:

bash
curl https://www.magisterium.com/.well-known/agent.json

कार्ड के लिए किसी प्रमाणीकरण की आवश्यकता नहीं होती। ऑर्केस्ट्रेटर इसे एक घंटे के लिए कैश कर सकते हैं — एंडपॉइंट Cache-Control: public, max-age=3600 सेट करता है।

चरण 2: अपना पहला संदेश भेजें

सभी A2A संचालन एक एकल JSON-RPC एंडपॉइंट के माध्यम से जाते हैं: POST https://www.magisterium.com/api/v1/a2a। नीचे दिया गया उदाहरण catholic_qa कौशल पर message/send को कॉल करता है।

bash
curl -X POST https://www.magisterium.com/api/v1/a2a \
    -H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "message/send",
      "params": {
        "message": {
          "role": "user",
          "messageId": "msg-001",
          "kind": "message",
          "parts": [{ "kind": "text", "text": "What does the Church teach about the Real Presence?" }],
          "metadata": { "skillId": "catholic_qa" }
        }
      }
    }'
typescript
const accessToken = process.env.MAGISTERIUM_TOKEN!;

const response = await fetch("https://www.magisterium.com/api/v1/a2a", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${accessToken}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "message/send",
    params: {
      message: {
        role: "user",
        messageId: crypto.randomUUID(),
        kind: "message",
        parts: [
          { kind: "text", text: "What does the Church teach about the Real Presence?" },
        ],
        metadata: { skillId: "catholic_qa" },
      },
    },
  }),
});

const { result: task } = await response.json();
console.log(task.id, task.status.state);
for (const artifact of task.artifacts ?? []) {
  for (const part of artifact.parts) {
    if (part.kind === "text") console.log(part.text);
  }
}
python
import os
import uuid
import httpx

access_token = os.environ["MAGISTERIUM_TOKEN"]

payload = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "message/send",
    "params": {
        "message": {
            "role": "user",
            "messageId": str(uuid.uuid4()),
            "kind": "message",
            "parts": [
                {"kind": "text", "text": "What does the Church teach about the Real Presence?"}
            ],
            "metadata": {"skillId": "catholic_qa"},
        }
    },
}

response = httpx.post(
    "https://www.magisterium.com/api/v1/a2a",
    headers={
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json",
    },
    json=payload,
    timeout=60,
)
task = response.json()["result"]
print(task["id"], task["status"]["state"])
for artifact in task.get("artifacts", []):
    for part in artifact["parts"]:
        if part["kind"] == "text":
            print(part["text"])

चरण 3: प्रतिक्रिया पढ़ें

message/send kind: "task" के साथ एक Task ऑब्जेक्ट लौटाता है। एक तुल्यकालिक कौशल कॉल हमेशा दो अंतिम स्थितियों में से एक में समाप्त होती है:

  • status.state == "completed" — परिणाम result.artifacts में रहते हैं। प्रत्येक कलाकृति में एक artifactId, एक वैकल्पिक name, और एक या अधिक parts (text, data, या file) होते हैं।
  • status.state == "failed" — विफलता का कारण status.message.parts[0].text में होता है।
json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "id": "task_abc123",
    "contextId": "ctx_def456",
    "kind": "task",
    "status": { "state": "completed", "timestamp": "2026-04-20T12:00:00.000Z" },
    "artifacts": [
      {
        "artifactId": "art_ghi789",
        "name": "catholic_qa_response",
        "parts": [
          { "kind": "text", "text": "The Catholic Church teaches..." },
          { "kind": "data", "data": { "citations": [] } }
        ]
      }
    ]
  }
}

चरण 4: एक कार्य पुनः प्राप्त करें या रद्द करें

कार्य 24 घंटे तक संग्रहीत रहते हैं और tasks/get का उपयोग करके ID द्वारा पुनः प्राप्त किए जा सकते हैं:

bash
curl -X POST https://www.magisterium.com/api/v1/a2a \
    -H "Authorization: Bearer $MAGISTERIUM_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tasks/get",
      "params": { "id": "task_abc123" }
    }'

यदि आपको किसी कार्य को रद्द करने की आवश्यकता है, तो उसी ID के साथ tasks/cancel को कॉल करें। चूँकि सभी Magisterium कौशल तुल्यकालिक रूप से हल होते हैं, रद्दीकरण केवल दुर्लभ पुनः प्रयास परिदृश्यों में उपयोगी होता है — एक कार्य जो पहले से completed या failed हो चुका है, उसे रद्द नहीं किया जा सकता और वह INVALID_PARAMS लौटाएगा।

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

कोडअर्थसमाधान
-32004UnauthorizedAuthorization हेडर जाँचें और सुनिश्चित करें कि एक्सेस टोकन वैध है और समाप्त नहीं हुआ है।
-32005Paid plan requiredअपना खाता magisterium.com/plan पर अपग्रेड करें।
-32002Skill not foundसत्यापित करें कि metadata.skillId Agent Card में सूचीबद्ध ID से मेल खाता है।
-32003Rate limit exceededपुनः प्रयास करने से पहले retryAfter सेकंड प्रतीक्षा करें (त्रुटि के data में मौजूद)।

हर विधि और त्रुटि कोड के लिए पूरी API संदर्भ देखें।