डेवलपर्स · REST JSON

Astrina डेवलपर API

आपकी ट्रैफिक स्टैट्स, समीक्षाएँ, रेटिंग्स, फोन इंटेलिजेंस, 32 चलाने योग्य उपयोगिताएँ और सोशल लॉगिन के लिए एक REST JSON API। सरल कुंजी प्रमाणीकरण, उदार मुफ्त स्तर।

20API संदर्भ अनुभाग
18सोशल नेटवर्क
6विज्ञापन नेटवर्क

प्रमाणीकरण और कोटा

हर अनुरोध को आपकी API कुंजी की आवश्यकता होती है। एक प्राप्त करें आपके API डैशबोर्ड. इसे एक अनुरोध हेडर में पास करें — कुंजी कभी भी यूआरएल में स्वीकार नहीं की जाती हैं, इसलिए वे सर्वर लॉग, प्रॉक्सी या रेफरर हेडर में लीक नहीं हो सकती हैं:

curl https://astrina.io/api/v1/rating?site=example.com \
     -H "X-Api-Key: ak_your_key_here"

# or:  Authorization: Bearer ak_your_key_here

आपका दैनिक कोटा आपकी योजना के साथ आता है: मुफ्त 100/दिन, प्रो 5,000/दिन, व्यवसाय 25,000/दिन, व्यवसाय प्लस 100,000/दिन — उच्च सीमा के लिए अपनी योजना को अपग्रेड करें। हर प्रतिक्रिया आपके कोटे को दर्शाती है। त्रुटियाँ "त्रुटि" क्षेत्र के साथ सही स्थिति लौटाती हैं: 401 (खराब कुंजी), 429 (कोटा), 400/422 (खराब पैरामीटर), 403/404 (आपका नहीं / नहीं मिला)। प्रतिक्रियाएँ CORS-खुली और नोइंडेक्स हैं।

सामाजिक API

एक REST API जो हर नेटवर्क में प्रकाशित, अनुसूची, माप और संदेश भेजने के लिए है जिसे आप कनेक्ट करते हैं — 18 सामाजिक नेटवर्क और 6 विज्ञापन नेटवर्क, एक ऑथ मॉडल, एक अनुरोध आकार।

समर्थित नेटवर्क (18): X (Twitter), Instagram, Facebook, Threads, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Google Business, VK, Odnoklassniki, Telegram, WhatsApp, Discord, Mastodon, Bluesky. विज्ञापन नेटवर्क: Meta Ads, Google Ads, TikTok Ads, LinkedIn Ads, Pinterest Ads, X Ads.

ऊपर दिए गए सभी के समान कुंजी प्रमाणीकरण (केवल हेडर), स्कोप किया गया social. अपने चैनलों को कनेक्ट करें सामाजिक डैशबोर्ड. प्रकाशन असिंक्रोनस है: /publish प्रत्येक लक्षित के साथ पोस्ट लौटाता है; कार्यकर्ता एक मिनट के भीतर डिलीवर करता है और जब यह लैंड करता है तो एक वेबहुक फायर होता है।

GET/api/v1/social/channels हर नेटवर्क, इसकी क्षमताएँ, और जो आपने कनेक्ट किया है। इसे पहले कॉल करें।
GET/api/v1/social/accounts चैनल जिन्हें आपने कनेक्ट किया है — ids /publish लक्ष्यों।
POST/api/v1/social/publish एक या कई चैनलों पर एक पोस्ट प्रकाशित या शेड्यूल करें।
पैरामविवरण
textपोस्ट का सामग्री (मीडिया दिए बिना आवश्यक)
channels"all", या /accounts से चैनल आईडी की सूची
mediaArray of {url,type,alt} (वैकल्पिक)
scheduled_atISO-8601 समय; छोड़ें या अतीत = अभी प्रकाशित करें
idempotency_keyआपका पोस्ट के लिए आईडी — एक ही कुंजी के साथ पुनः प्रयास करने पर पहला लौटता है, कभी भी डबल-पोस्ट नहीं करता।
overridesप्रत्येक चैनल के लिए सामग्री ओवरराइड, चैनल आईडी द्वारा कुंजीबद्ध
POST /api/v1/social/publish
Authorization: Bearer <your API key>
Content-Type: application/json

{ "text": "We just shipped 🚀", "channels": "all",
  "idempotency_key": "launch-42" }

{ "ok": true, "post": {
    "id": 1841, "status": "publishing", "text": "We just shipped 🚀",
    "targets": [
      { "channel_id": 12, "provider": "telegram", "status": "queued", "url": null },
      { "channel_id": 31, "provider": "mastodon", "status": "queued", "url": null } ] },
  "quota": { "used": 3, "limit": 25000 } }
GET/api/v1/social/post एक पोस्ट और प्रत्येक लक्ष्य का वितरण परिणाम (?id=…), या हाल की सूची।
GET/api/v1/social/analytics अनुयायी, इंप्रेशन, पहुंच और सहभागिता — एक चैनल श्रृंखला या एक खाता रोल-अप। स्नैपशॉट, कभी भी अनुमान नहीं।
GETPOST/api/v1/social/messages एक DM थ्रेड पढ़ें, या एक चैनल पर सीधे संदेश भेजें जो इसे समर्थन करता है।
GET/api/v1/social/comments आपकी प्रकाशित पोस्ट पर कैप्चर की गई टिप्पणियाँ।
GETPOST/api/v1/social/ads छह विज्ञापन नेटवर्क में विज्ञापन अभियानों की सूची बनाएं और बनाएं।
GETPOSTDELETE/api/v1/social/webhooks जब एक पोस्ट लैंड होती है या एक टिप्पणी/DM/उल्लेख आता है, तो सूचित किया जाता है।

इवेंट्स: post.published, post.partial, post.failed, comment.received, dm.received, mention.received. एक सामान्य हुक के साथ हस्ताक्षरित है X-Astrina-Signature: sha256=hmac(timestamp.body, secret).

एनालिटिक्स

GET/api/v1/stats एक साइट के लिए ट्रैफ़िक एनालिटिक्स जो आपके पास है।
पैरामविवरण
siteआपके पास जो साइट आईडी या डोमेन है (आवश्यक)
period24h · 7d (डिफ़ॉल्ट) · 30d · 90d
reportsummary (डिफ़ॉल्ट) · timeseries · pages · sources · countries · devices
limitब्रेकडाउन रिपोर्ट के लिए पंक्तियाँ (1–100, डिफ़ॉल्ट 20)
GET /api/v1/stats?site=example.com&period=30d

{
  "site": "example.com", "site_id": 4, "period": "30d",
  "summary": {
    "visitors": 18204, "pageviews": 54881, "visits": 24310,
    "pages_per_visit": 2.26, "online_now": 7
  },
  "top_sources":   [{ "source": "google.com", "visitors": 9021 }, …],
  "top_countries": [{ "country": "US", "visitors": 7440 }, …],
  "quota": { "used": 12, "limit": 100 }
}

परिवर्तन

POST/api/v1/conversion अपने सर्वर से एक रूपांतरण रिकॉर्ड करें, ताकि राजस्व जो कभी भी ब्राउज़र को छूता नहीं है, उसे अभी भी श्रेय दिया जा सके।
पैरामविवरण
siteआपके पास जो साइट आईडी या डोमेन है (आवश्यक)
kindlead · qualified · deal · sale · recurring · refund · churn
valueनीचे दी गई मुद्रा में राशि। रिफंड के लिए नकारात्मक।
currencyतीन-अक्षरी कोड, डिफ़ॉल्ट USD
uidट्रैकिंग स्क्रिप्ट से आगंतुक आईडी। वैकल्पिक - नीचे नोट देखें।
external_idरिकॉर्ड के लिए आपकी अपनी आईडी, पुनः प्रयास की डबल गिनती से बचने के लिए उपयोग की जाती है
POST /api/v1/conversion
Authorization: Bearer <your API key>

site=example.com&kind=sale&value=249.00&currency=USD&uid=v_8f3c…&external_id=order-1042

{ "recorded": true, "id": 5512, "kind": "sale" }

UID के बिना एक रूपांतरण दर्ज किया गया है, अस्वीकृत नहीं: फोन पर बंद हुई बिक्री अभी भी राजस्व है। यह कुल में गिना जाता है और इसे असंबद्ध के रूप में रिपोर्ट किया जाता है बजाय इसके कि इसे किसी ऐसे चैनल को सौंपा जाए जिसे ट्रेस नहीं किया जा सकता।

Minify

POST/api/v1/minify HTML, CSS या JS को संकुचित करें और संकुचित बाइट्स वापस प्राप्त करें। हमारे सर्वरों पर चलता है (कोई AI टोकन नहीं); इनपुट आकार के अनुसार प्रति अनुरोध बिल किया जाता है।
पैरामविवरण
kindhtml · css · js — आवश्यक (द्वारा ?kind=, अपलोड की गई फ़ाइल का नाम, या सामग्री-प्रकार)
शरीरसंकुचन के लिए स्रोत: कच्चा अनुरोध शरीर, एक मल्टीपार्ट file, या JSON {"kind":"…","data":"…"}
POST /api/v1/minify?kind=css
X-Api-Key: ak_your_key_here

.button{ color: #ffffff; margin: 0 0 0 0; }

{ "kind":"css", "in_bytes":42, "out_bytes":24, "saved_pct":43,
  "hash":"be6ca66f…", "output":".button{color:#fff;margin:0}" }

प्रमाणीकरण: केवल हेडर (X-Api-Key या बियरर), दायरा minify. CSS और JS को सुरक्षित रूप से संकुचित किया गया है — calc() स्पेसिंग और JS ASI को संरक्षित किया गया है; HTML सफेद स्थान को संकुचित करता है जबकि <pre>, <textarea>, <script>, <style> और JSON-LD को बरकरार रखता है। अपने उपयोग और कुंजी को ट्रैक करें Minify डैशबोर्ड.

Originality &amp; AI detection

POST/api/v1/originality Start one check: text uniqueness, AI-written text, image uniqueness or AI-generated image. Returns a run id immediately — the work happens on a worker.
पैरामविवरण
kindtext-unique · ai-text · image-unique · ai-image — आवश्यक
textthe text to check (text modules)
urlread the text — or fetch the image — from this address instead
imagemultipart file field (image modules); or image_base64
POST /api/v1/originality
X-Api-Key: ak_your_key_here
kind=ai-text&text=In+today%27s+rapidly+evolving+digital+landscape…

{ "ok":true, "run":1042, "kind":"ai-text", "status":"queued",
  "poll":"https://astrina.io/api/v1/originality?run=1042",
  "units_charged":5, "balance_charged_usd":0,
  "checks_used_today":7, "checks_per_day":500 }

प्रमाणीकरण: केवल हेडर (X-Api-Key या बियरर), दायरा originality. Pro and above. One task costs a fixed number of API requests from your daily quota — 10 for text uniqueness, 5 for AI-text, 5 for image uniqueness, 3 for AI-image — because one task is a dozen index queries, a dozen page downloads or a few hundred model evaluations. Beyond your plan’s daily allowance of checks, a task also costs a fixed price from your balance, and the response says exactly what was charged.

GET/api/v1/originality?run=<id> Poll a run. While it works you get the stage it is in; when it finishes you get the full report.
GET /api/v1/originality?run=1042
X-Api-Key: ak_your_key_here

{ "ok":true, "run":1042, "kind":"ai-text", "status":"running",
  "progress":75, "stage":"model", "stage_label":"Scoring every sentence against a language model" }

{ "ok":true, "status":"done", "score":88.4, "verdict":"ai", "confidence":71,
  "report":{ "per_sentence":[…], "features":{…}, "notes":[…] } }

Polling costs 1 request. A text-uniqueness pass typically finishes in 15–40 seconds; poll every 2–3 seconds. Every report carries its confidence and the evidence behind it: matched pages with quoted fragments, or the measurements each signal produced. Detection is probabilistic — the API never returns a verdict without the numbers it came from.

POST/api/v1/originality De-AI परत, वही दरवाजा: kind=deai-text एक ड्राफ्ट को पुनर्लेखित करता है ताकि यह मशीन-लिखित के रूप में पढ़ना बंद कर दे; kind=deai-image एक उत्पन्न चित्र को पुनः कोडित करता है ताकि इसके पिक्सेल एक फ़ोटोग्राफ़ की तरह व्यवहार करें।
POST /api/v1/originality
X-Api-Key: ak_your_key_here
kind=deai-text&text=In+today%27s+rapidly+evolving+digital+landscape…

{ "ok":true, "run":1043, "kind":"deai-text", "status":"queued", "units_charged":15 }

GET /api/v1/originality?run=1043
{ "status":"done", "score":41.2,
  "report":{ "before":93.0, "after":41.2, "target":70, "reached_target":true,
             "changes":["4 stock transition(s) removed","1 sentence pair(s) joined for rhythm"],
             "paid_pass":true, "text":"…the rewritten text…" } }

15 API अनुरोध एक पाठ पुनर्लेखन के लिए, 6 एक छवि पुनःकोड के लिए — एक पुनर्लेखन एक मॉडल कॉल खर्च कर सकता है, और कीमत इसे कवर करती है। प्रत्येक कार्य को एक मुफ्त निश्चित पास मिलता है और अधिकतम एक भुगतान किया गया मॉडल पुनर्लेखन: यदि यह पर्याप्त नहीं है, तो उत्तर फिर से खर्च करने के बजाय ऐसा कहता है। एक छवि कार्य एक डाउनलोड लिंक के साथ उत्तर देता है (72 घंटे के लिए रखा गया)। रीराइटर संपादक द्वारा बचाव किए गए संपादन करता है - स्टॉक ट्रांजिशन काटता है, लय को बदलता है, अधिक उपयोग किए गए शब्दों को बदलता है - और उसी डिटेक्टर के साथ फिर से मापता है। यह गलतियाँ नहीं जोड़ता और न ही तथ्य गढ़ता है। इमेज री-कोडर उन फ़ाइलों को अस्वीकार करता है जिनमें हस्ताक्षरित C2PA मैनिफेस्ट होता है, और जो वह उत्पन्न करता है उसमें एक ईमानदार “AI-सहायता प्राप्त चित्रण” क्रेडिट लिखता है।

GET/api/v1/originality The catalogue: what each check costs in API requests and in money, and how much of your allowance is left today.

समीक्षाएँ और रेटिंग

GET/api/v1/reviews किसी भी विषय के लिए नवीनतम समीक्षाएँ + समग्र रेटिंग।
पैरामविवरण
typesite · phone · email · address · org · shop
keyविषय का मान (डोमेन, संख्या, ईमेल, …)
GET /api/v1/reviews?type=site&key=example.com

{ "type": "site", "subject": "example.com", "rating": 4.3, "count": 87,
  "reviews": [{ "author": "Jane", "rating": 5, "body": "…", "date": "2026-07-01" }, …],
  "url": "https://astrina.io/reviews/site/example.com/" }
GET/api/v1/rating संक्षिप्त रेटिंग सारांश + स्टार वितरण + एम्बेड यूआरएल।
पैरामविवरण
siteडोमेन द्वारा वेबसाइट के लिए शॉर्टकट
type + keyया किसी भी विषय को प्रकार + कुंजी द्वारा
GET /api/v1/rating?site=example.com

{ "type": "site", "subject": "example.com", "rating": 4.3, "count": 87,
  "distribution": { "1": 3, "2": 4, "3": 9, "4": 26, "5": 45 },
  "reviews_url": "https://astrina.io/reviews/site/example.com/",
  "widget_url":  "https://astrina.io/widget.php?type=site&key=example.com",
  "badge_url":   "https://astrina.io/badge.php?s=4" }

फोन इंटेलिजेंस

GET/api/v1/phone एक संख्या के लिए कैरियर, लाइन प्रकार और सामुदायिक स्पैम-जोखिम।
पैरामविवरण
numberअंतर्राष्ट्रीय प्रारूप में फोन नंबर, जैसे +14155550123
GET /api/v1/phone?number=+14155550123

{ "number": "+14155550123", "country": "United States", "iso": "US",
  "operator": "…", "line_type": "mobile",
  "risk": { "score": 12, "verdict": "low", "confidence": 0.6, "reports": 3, … },
  "url": "https://astrina.io/reviews/phone/+14155550123/" }

ब्लैकलिस्ट और स्पैम जांच

GET/api/v1/blacklist जांचें कि क्या कोई फोन, ईमेल, डोमेन या साइट स्पैम / धोखाधड़ी की ब्लैकलिस्ट पर है।
पैरामविवरण
valueजांचने के लिए फोन, ईमेल, डोमेन या URL (प्रकार स्वचालित रूप से पहचाना गया)।
typeवैकल्पिक — इनमें से एक को मजबूर करें phone · email · domain
GET /api/v1/[email protected]

{ "value": "[email protected]", "listed": true,
  "categories": ["disposable"],
  "matches": [
    { "type": "email_domain", "match": "mailinator.com",
      "category": "disposable", "source": "disposable-email-domains",
      "confidence": 90, "added": "2026-07-12 15:46:00" } ],
  "quota": { "used": 7, "limit": 100000 } }

क्रिप्टो एएमएल जांच

GET/api/v1/aml एक क्रिप्टो वॉलेट पते को प्रतिबंधों और खतरे की जानकारी सूचियों के खिलाफ स्क्रीन करें — श्रृंखला स्वचालित रूप से पहचानी गई, जोखिम स्कोर शामिल है।
पैरामविवरण
addressस्क्रीन करने के लिए वॉलेट पता। BTC, EVM (0x…), TRON, Solana, TON, LTC, DOGE, XRP, XMR और BCH आकार पहचाने जाते हैं; कोई अन्य स्ट्रिंग जैसा है वैसा ही देखा जाता है।
formatवैकल्पिक — CSV प्राप्त करने के लिए इसे CSV पर सेट करें, JSON के बजाय।
GET /api/v1/aml?address=TPPR7e8hGC57dexrE2jy1f94wtuGyVP6Dp

{ "address": "TPPR7e8hGC57dexrE2jy1f94wtuGyVP6Dp",
  "chain": "tron", "listed": true, "risk": 100, "level": "sanctioned",
  "categories": ["sanctioned"],
  "matches": [
    { "category": "sanctioned", "source": "US OFAC SDN sanctions list",
      "jurisdiction": "US", "risk": 100, "confidence": 88, "added": "2026-08-10" } ],
  "quota": { "used": 1, "limit": 100 } }

बुल्क: एक "addresses" एरे (50 तक) को एक कॉल में कई स्क्रीन करने के लिए POST करें — प्रत्येक के लिए एक कोटा यूनिट।

POST /api/v1/aml
{ "addresses": ["0x…", "bc1…", "T…"] }

{ "results": [ { "address": "0x…", "listed": false, "risk": 0, … } ], "count": 3 }

हर प्रतिक्रिया में X-RateLimit-Limit और X-RateLimit-Remaining हेडर होते हैं। पूर्ण दस्तावेज़, जोखिम मॉडल और लाइव बोर्ड: astrina.io/aml/

पासवर्ड लीक जांच

GET/api/v1/pwned जांचें कि क्या कोई पासवर्ड डेटा उल्लंघन में दिखाई दिया है — k-गोपनीयता का उपयोग करते हुए, ताकि पासवर्ड कभी भी क्लाइंट से बाहर न जाए।

अपने ऐप में SHA-1 के साथ पासवर्ड को हैश करें, फिर उस हैश के पहले 5 हेक्स वर्णों को ही भेजें। API हर उल्लंघन किए गए हैश उपसर्ग को लौटाता है जो उपसर्ग साझा करता है; आप स्थानीय रूप से तुलना करते हैं। साधारण पासवर्ड कभी भी प्रेषित नहीं होता।

पैरामविवरण
prefixSHA-1 हैश के पहले 5 हेक्स वर्ण (अनुशंसित — k-गोपनीयता)। उल्लंघन की गिनती के साथ मेल खाने वाले उपसर्ग लौटाता है।
hashवैकल्पिक: पूरा 40-हेक्स SHA-1। सुविधाजनक, लेकिन हैश क्लाइंट से बाहर जाता है — जहां संभव हो, उपसर्ग को प्राथमिकता दें।
GET /api/v1/pwned?prefix=5BAA6

{ "mode": "range", "prefix": "5BAA6", "returned": 1978,
  "suffixes": [
    { "suffix": "1E4C9B93F3F0682250B6CF8331B7EE68FD8", "count": 52372427 }, ... ],
  "quota": { "used": 22, "limit": 100000 } }

# convenience mode — send the whole SHA-1, get a direct verdict:
GET /api/v1/pwned?hash=5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8

{ "mode": "hash", "found": true, "count": 52372427,
  "note": "This password appears in known breaches - do not use it.",
  "quota": { "used": 23, "limit": 100000 } }

डेटा स्रोत: क्या मैं प्वांड हुआ हूँ (प्वांड पासवर्ड)। वही k-गोपनीयता मॉडल मुफ्त ब्राउज़र उपकरण को /password-check/ पर संचालित करता है।

उपयोगिताएँ

Run our synchronous server-side utilities over the API — 31 of the 141. Browser-only utilities and queued crawls/renders are not exposed. Every utility takes the same shape and returns the same envelope; the plan gates and daily run caps are identical to the website.

GET /api/v1/tool                         # the catalogue
GET /api/v1/tool?name=<key>&value=<input>  # run one (value2 for two-input utilities)     -H "X-Api-Key: ak_your_key_here"
पैरामविवरण
nameThe utility key (see each block below).
valueThe main input — a URL, domain, comma/newline-separated URLs, or text.
value2The second input, only for utilities that compare two things.

Errors: 404 unknown utility · 400 not API-runnable · 403 plan required · 429 daily run cap reached · 422 bad input. Each returns an "error" field.

🔍 SEO (18)
GET/api/v1/tool?name=site-audit 🔍 एक बार में तकनीकी, गति और सुरक्षा।
GET /api/v1/tool?name=site-audit&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "site-audit",
    "ms": 807,
    "result": {
        "summary": [
            {
                "label": "Overall",
                "value": "93/100",
                "state": "ok"
            },
            {
                "label": "SEO",
                "value": "90/100",
                "state": "ok"
            },
            {
                "label": "Performance",
                "value": "90/100",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Area",
            "What failed",
            "What to do"
        ],
        "rows": [
            {
                "a": "SEO",
                "b": "Headings in logical order",
                "c": "Nest headings sequentially (H1→H2→H3) without skipping levels.",
                "state": "bad"
            },
            {
                "a": "SEO",
                "b": "All images have alt",
                "c": "Add descriptive alt to every <img> (alt=\"\" only for decorative).",
                "state": "bad"
            },
            {
                "a": "SEO",
                "b": "Form inputs have labels",
                "c": "Pair every input with a <label for> or an aria-label.",
                "state": "warn"
            },
            "…"
        ],
        "notes": []
    }
}
GET/api/v1/tool?name=serp-preview 👁️ सर्च परिणामों में स्निपेट कैसा दिखता है।
GET /api/v1/tool?name=serp-preview&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "serp-preview",
    "ms": 127,
    "result": {
        "summary": [
            {
                "label": "Title length",
                "value": "53 chars",
                "state": "ok"
            },
            {
                "label": "Description length",
                "value": "163 chars",
                "state": "warn"
            },
            {
                "label": "Title truncated",
                "value": "no",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Part",
            "Value"
        ],
        "rows": [
            {
                "a": "Headline shown",
                "b": "Every site you look after, in one dashboard — Astrina",
                "state": ""
            },
            {
                "a": "Breadcrumb shown",
                "b": "astrina.io",
                "state": ""
            },
            {
                "a": "Snippet shown",
                "b": "Real traffic, daily SEO checks and reviews for your sites and your clients’ sites. One …",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Google cuts on pixel width, not character count, and rewrites titles on roughly a third…"
        ]
    }
}
GET/api/v1/tool?name=og-preview 📣 जब आपका लिंक साझा किया जाता है तो दिखाई देने वाला कार्ड।
GET /api/v1/tool?name=og-preview&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "og-preview",
    "ms": 499,
    "result": {
        "summary": [
            {
                "label": "og:title",
                "value": "set",
                "state": "ok"
            },
            {
                "label": "og:description",
                "value": "set",
                "state": "ok"
            },
            {
                "label": "og:image",
                "value": "set",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Field",
            "Value"
        ],
        "rows": [
            {
                "a": "Card title",
                "b": "Every site you look after, in one dashboard — Astrina",
                "state": ""
            },
            {
                "a": "Card description",
                "b": "Real traffic, daily SEO checks and reviews for your sites and your clients’ sites. One …",
                "state": ""
            },
            {
                "a": "Card image",
                "b": "https://astrina.io/og.php",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "Facebook, X and LinkedIn each cache what they scraped. After fixing tags, re-scrape in …"
        ]
    }
}
GET/api/v1/tool?name=schema-validator 🧬 JSON-LD संरचित डेटा को मान्य करता है।
GET /api/v1/tool?name=schema-validator&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "schema-validator",
    "ms": 75,
    "result": {
        "summary": [
            {
                "label": "JSON-LD blocks",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "Types found",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "Invalid blocks",
                "value": "0",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Where",
            "Type",
            "Verdict"
        ],
        "rows": [
            {
                "a": "block 1",
                "b": "Organization",
                "c": "required properties present",
                "state": "ok"
            },
            {
                "a": "block 2",
                "b": "WebSite",
                "c": "required properties present",
                "state": "ok"
            }
        ],
        "notes": [
            "Valid markup is not the same as an eligible rich result. Google also applies content po…"
        ]
    }
}
GET/api/v1/tool?name=meta-tags 🏷️ शीर्षक, विवरण और og टैग की लंबाई।
GET /api/v1/tool?name=meta-tags&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "meta-tags",
    "ms": 164,
    "result": {
        "summary": [
            {
                "label": "Title length",
                "value": "53",
                "state": "ok"
            },
            {
                "label": "Description length",
                "value": "163",
                "state": "warn"
            },
            {
                "label": "H1 count",
                "value": "1",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Tag",
            "Value",
            "Length",
            "…"
        ],
        "rows": [
            {
                "a": "title",
                "b": "Every site you look after, in one dashboard — Astrina",
                "c": "53",
                "d": "Good length.",
                "state": "ok"
            },
            {
                "a": "meta description",
                "b": "Real traffic, daily SEO checks and reviews for your sites and your clients’ sites. One …",
                "c": "163",
                "d": "Long — the snippet is cut around 160 characters.",
                "state": "warn"
            },
            {
                "a": "canonical",
                "b": "https://astrina.io/",
                "c": "19",
                "d": "Declared.",
                "state": "ok"
            },
            "…"
        ],
        "notes": []
    }
}
GET/api/v1/tool?name=keyword-density 📊 पृष्ठ पर शब्दों की घनत्व और आवृत्ति।
GET /api/v1/tool?name=keyword-density&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "keyword-density",
    "ms": 93,
    "result": {
        "summary": [
            {
                "label": "Words",
                "value": "1093",
                "state": "ok"
            },
            {
                "label": "Unique words",
                "value": "503",
                "state": ""
            },
            {
                "label": "Vocabulary richness",
                "value": "46.0%",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Kind",
            "Term",
            "Count",
            "…"
        ],
        "rows": [
            {
                "a": "single word",
                "b": "one",
                "c": "20",
                "d": "1.83%",
                "e": "title, H1, description",
                "state": "ok"
            },
            {
                "a": "single word",
                "b": "reviews",
                "c": "17",
                "d": "1.56%",
                "e": "description",
                "state": "ok"
            },
            {
                "a": "single word",
                "b": "listed",
                "c": "15",
                "d": "1.37%",
                "e": "body only",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Density is a diagnostic, not a target. No search engine has a threshold to hit — this i…"
        ]
    }
}
GET/api/v1/tool?name=redirects ↪️ 301/302 श्रृंखलाओं का अनुसरण करता है।
GET /api/v1/tool?name=redirects&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "redirects",
    "ms": 1753,
    "result": {
        "summary": [
            {
                "label": "Final status",
                "value": "200",
                "state": "ok"
            },
            {
                "label": "Redirects followed",
                "value": "0",
                "state": "ok"
            },
            {
                "label": "Ends at",
                "value": "https://astrina.io/",
                "state": ""
            },
            "…"
        ],
        "cols": [
            "Address",
            "Hop",
            "Status",
            "…"
        ],
        "rows": [
            {
                "a": "as entered",
                "b": "1",
                "c": "200",
                "d": "https://astrina.io/",
                "e": "— final destination —",
                "state": "ok"
            },
            {
                "a": "http://astrina.io/",
                "b": "1",
                "c": "200",
                "d": "http://astrina.io/",
                "e": "— final destination —",
                "state": "ok"
            },
            {
                "a": "https://astrina.io/",
                "b": "1",
                "c": "200",
                "d": "https://astrina.io/",
                "e": "— final destination —",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "The http, https, www and apex forms of this address do not all end at the same URL. Sea…",
            "The page contains JavaScript that changes location. A crawler may or may not follow it,…",
            "Every hop above was requested and its answer read; nothing in the chain is guessed from…"
        ]
    }
}
GET/api/v1/tool?name=sitemap 🗺️ XML साइटमैप और इसके अनुक्रम को मान्य करता है।
GET /api/v1/tool?name=sitemap&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "sitemap",
    "ms": 2646,
    "result": {
        "summary": [
            {
                "label": "Type",
                "value": "sitemap index",
                "state": "ok"
            },
            {
                "label": "URLs found",
                "value": "5408",
                "state": "ok"
            },
            {
                "label": "Unique URLs",
                "value": "5405",
                "state": "warn"
            },
            "…"
        ],
        "cols": [
            "Child sitemap",
            "Status",
            "URLs",
            "…"
        ],
        "rows": [
            {
                "a": "https://astrina.io/sitemap-core.xml",
                "b": "200",
                "c": "534",
                "d": "59.9 KB",
                "state": "ok"
            },
            {
                "a": "https://astrina.io/sitemap-blog.xml",
                "b": "200",
                "c": "42",
                "d": "5.2 KB",
                "state": "ok"
            },
            {
                "a": "https://astrina.io/sitemap-catalog.xml",
                "b": "200",
                "c": "61",
                "d": "6.9 KB",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "Started from the sitemap declared in robots.txt: https://astrina.io/sitemap.xml",
            "3 URLs appear more than once.",
            "7 addresses were fetched, within your plan cap of 25."
        ]
    }
}
GET/api/v1/tool?name=html-validate ✅ W3C नियमों के खिलाफ संरचनात्मक त्रुटियाँ।
GET /api/v1/tool?name=html-validate&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "html-validate",
    "ms": 180,
    "result": {
        "summary": [
            {
                "label": "Errors",
                "value": "8",
                "state": "bad"
            },
            {
                "label": "Warnings",
                "value": "0",
                "state": "ok"
            },
            {
                "label": "Total findings",
                "value": "8",
                "state": "warn"
            },
            "…"
        ],
        "cols": [
            "Line",
            "Level",
            "Finding"
        ],
        "rows": [
            {
                "a": "314",
                "b": "error",
                "c": "htmlParseEntityRef: expecting ';'",
                "state": "bad"
            },
            {
                "a": "513",
                "b": "error",
                "c": "Unexpected end tag : svg",
                "state": "bad"
            },
            {
                "a": "514",
                "b": "error",
                "c": "Unexpected end tag : svg",
                "state": "bad"
            },
            "…"
        ],
        "notes": [
            "420 \"unknown element\" complaints were discarded. The parser behind this check knows the…",
            "This is a structural check — parse errors, duplicate ids, obsolete and required element…"
        ]
    }
}
GET/api/v1/tool?name=robots-txt 🤖 फाइल को पार्स करता है और इसे प्रत्येक क्रॉलर के अनुसार हल करता है।
GET /api/v1/tool?name=robots-txt&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "robots-txt",
    "ms": 133,
    "result": {
        "summary": [
            {
                "label": "robots.txt",
                "value": "found",
                "state": "ok"
            },
            {
                "label": "Size",
                "value": "1.9 KB",
                "state": "ok"
            },
            {
                "label": "Groups",
                "value": "10",
                "state": ""
            },
            "…"
        ],
        "cols": [
            "Crawler",
            "This URL",
            "Deciding rule",
            "…"
        ],
        "rows": [
            {
                "a": "*",
                "b": "allowed",
                "c": "Allow: /",
                "d": "the * group",
                "state": "ok"
            },
            {
                "a": "Googlebot",
                "b": "allowed",
                "c": "Allow: /",
                "d": "the * group",
                "state": "ok"
            },
            {
                "a": "Bingbot",
                "b": "allowed",
                "c": "Allow: /",
                "d": "the * group",
                "state": "ok"
            },
            "…"
        ],
        "text": "# As a condition of accessing this website, you agree to abide by the following\n# conte…",
        "notes": [
            "At least one group carries Disallow: / — that blocks an entire crawler from the whole s…"
        ]
    }
}
GET/api/v1/tool?name=images-seo 🖼️ वैकल्पिक पाठ, आयाम और प्रारूप।
GET /api/v1/tool?name=images-seo&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "images-seo",
    "ms": 1910,
    "result": {
        "summary": [
            {
                "label": "Images",
                "value": "7",
                "state": "ok"
            },
            {
                "label": "Missing alt",
                "value": "0",
                "state": "ok"
            },
            {
                "label": "Decorative (alt=\"\")",
                "value": "7",
                "state": ""
            },
            "…"
        ],
        "cols": [
            "Image",
            "Alt text",
            "Size",
            "…"
        ],
        "rows": [
            {
                "a": "https://astrina.io/shot.php?s=1",
                "b": "(empty)",
                "c": "46.6 KB",
                "d": "empty alt (decorative); no width/height — causes layout shift",
                "state": "warn"
            },
            {
                "a": "https://astrina.io/shot.php?s=4",
                "b": "(empty)",
                "c": "75.1 KB",
                "d": "empty alt (decorative); no width/height — causes layout shift",
                "state": "warn"
            },
            {
                "a": "https://astrina.io/shot.php?s=8",
                "b": "(empty)",
                "c": "68.1 KB",
                "d": "empty alt (decorative); no width/height — causes layout shift",
                "state": "warn"
            },
            "…"
        ],
        "notes": [
            "6 images declare no width and height. The browser cannot reserve space, so the page jum…",
            "None of the sampled images are WebP or AVIF. Converting usually removes a third of the …",
            "Optimizing the sampled images could save roughly 131 KB. Compress or convert them to We…",
            "…"
        ]
    }
}
GET/api/v1/tool?name=cms-detect 🧱 CMS और प्रौद्योगिकी स्टैक की पहचान करता है।
GET /api/v1/tool?name=cms-detect&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "cms-detect",
    "ms": 135,
    "result": {
        "summary": [
            {
                "label": "CMS",
                "value": "Magento",
                "state": "ok"
            },
            {
                "label": "Signals found",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "Server",
                "value": "cloudflare",
                "state": ""
            },
            "…"
        ],
        "cols": [
            "Kind",
            "Name",
            "Evidence",
            "…"
        ],
        "rows": [
            {
                "a": "CMS",
                "b": "Magento",
                "c": "markup: mage/",
                "d": "strong",
                "state": "ok"
            },
            {
                "a": "CDN / Edge",
                "b": "Cloudflare",
                "c": "server: cloudflare",
                "d": "strong",
                "state": "ok"
            }
        ],
        "notes": [
            "This reads fingerprints, not an inventory. A strong match is reliable; a weak one is a …"
        ]
    }
}
GET/api/v1/tool?name=readability 📖 पाठ की कठिनाई और पठनीयता मेट्रिक्स।
GET /api/v1/tool?name=readability&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "readability",
    "ms": 94,
    "result": {
        "summary": [
            {
                "label": "Reading ease",
                "value": "47.0 — difficult",
                "state": "warn"
            },
            {
                "label": "Grade level",
                "value": "12.6",
                "state": "warn"
            },
            {
                "label": "Gunning Fog",
                "value": "15.5",
                "state": "warn"
            },
            "…"
        ],
        "cols": [
            "Measure",
            "Value"
        ],
        "rows": [
            {
                "a": "Formula used",
                "b": "Flesch Reading Ease and Flesch–Kincaid grade",
                "state": ""
            },
            {
                "a": "Language detected",
                "b": "Latin script",
                "state": ""
            },
            {
                "a": "Syllables per word",
                "b": "1.60",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "10 sentences run past 25 words.",
            "These formulas count syllables and sentence lengths. They cannot tell whether the writi…"
        ]
    }
}
GET/api/v1/tool?name=hreflang 🌍 अंतरराष्ट्रीय मार्कअप, जिसमें लौटने वाले लिंक शामिल हैं।
GET /api/v1/tool?name=hreflang&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "hreflang",
    "ms": 907,
    "result": {
        "summary": [
            {
                "label": "hreflang tags",
                "value": "4",
                "state": "ok"
            },
            {
                "label": "Problems",
                "value": "0",
                "state": "ok"
            },
            {
                "label": "x-default",
                "value": "yes",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Code",
            "URL",
            "Links back",
            "…"
        ],
        "rows": [
            {
                "a": "en",
                "b": "https://astrina.io/",
                "c": "n/a",
                "d": "ok",
                "state": "ok"
            },
            {
                "a": "ru",
                "b": "https://astrina.io/ru/",
                "c": "yes",
                "d": "ok",
                "state": "ok"
            },
            {
                "a": "uk",
                "b": "https://astrina.io/uk/",
                "c": "yes",
                "d": "ok",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "Return links were checked on 2 alternates."
        ]
    }
}
GET/api/v1/tool?name=canonical 🔗 कौन सा URL पृष्ठ मूल के रूप में घोषित करता है।
GET /api/v1/tool?name=canonical&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "canonical",
    "ms": 75,
    "result": {
        "summary": [
            {
                "label": "Canonical",
                "value": "declared",
                "state": "ok"
            },
            {
                "label": "Self-referencing",
                "value": "yes",
                "state": "ok"
            },
            {
                "label": "Declarations found",
                "value": "1",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Field",
            "Value"
        ],
        "rows": [
            {
                "a": "Requested URL",
                "b": "https://astrina.io/",
                "state": ""
            },
            {
                "a": "URL after redirects",
                "b": "https://astrina.io/",
                "state": ""
            },
            {
                "a": "Canonical in HTML",
                "b": "https://astrina.io/",
                "state": ""
            },
            "…"
        ],
        "notes": []
    }
}
GET/api/v1/tool?name=http-status 📋 बुल्क HTTP कोड और रीडायरेक्ट।
GET /api/v1/tool?name=http-status&value=https%3A%2F%2Fastrina.io%2F%0Ahttps%3A%2F%2Fastrina.io%2Fpricing{
    "ok": true,
    "utility": "http-status",
    "ms": 774,
    "result": {
        "summary": [
            {
                "label": "Checked",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "OK (2xx)",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "Redirected",
                "value": "0",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "URL",
            "Status",
            "Hops",
            "…"
        ],
        "rows": [
            {
                "a": "https://astrina.io/",
                "b": "200",
                "c": "0",
                "d": "same URL",
                "e": "97 ms",
                "state": "ok"
            },
            {
                "a": "https://astrina.io/pricing",
                "b": "200",
                "c": "0",
                "d": "same URL",
                "e": "62 ms",
                "state": "ok"
            }
        ],
        "notes": [
            "All 2 addresses were checked, within the cap of 25 for this run."
        ]
    }
}
GET/api/v1/tool?name=favicon ⭐ हर आकार और प्रारूप जो एक ब्राउज़र देखता है।
GET /api/v1/tool?name=favicon&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "favicon",
    "ms": 573,
    "result": {
        "summary": [
            {
                "label": "Icons declared",
                "value": "1",
                "state": ""
            },
            {
                "label": "Icons that load",
                "value": "1 / 2",
                "state": "ok"
            },
            {
                "label": "/favicon.ico",
                "value": "missing",
                "state": "warn"
            },
            "…"
        ],
        "cols": [
            "Relation",
            "URL",
            "Status",
            "…"
        ],
        "rows": [
            {
                "a": "icon",
                "b": "https://astrina.io/favicon.svg",
                "c": "200",
                "d": "unknown",
                "e": "396 B",
                "state": "ok"
            },
            {
                "a": "icon (browser fallback)",
                "b": "https://astrina.io/favicon.ico",
                "c": "404",
                "d": "unknown",
                "e": "2.8 KB",
                "state": "warn"
            }
        ],
        "notes": [
            "There is no /favicon.ico at the root. Browsers and feed readers still ask for it by def…",
            "No apple-touch-icon. iOS will screenshot the page instead when someone adds it to their…",
            "No web app manifest. Android uses it for the home-screen icon and the install prompt."
        ]
    }
}
🛡️ सुरक्षा (12)
GET/api/v1/tool?name=ssl 🔒 प्रमाणपत्र, श्रृंखला और समाप्ति।
GET /api/v1/tool?name=ssl&value=astrina.io{
    "ok": true,
    "utility": "ssl",
    "ms": 86,
    "result": {
        "summary": [
            {
                "label": "Certificate",
                "value": "valid and trusted",
                "state": "ok"
            },
            {
                "label": "Days left",
                "value": "75",
                "state": "ok"
            },
            {
                "label": "Hostname matches",
                "value": "yes",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Field",
            "Value"
        ],
        "rows": [
            {
                "a": "Common name",
                "b": "astrina.io",
                "state": ""
            },
            {
                "a": "Subject alternative names",
                "b": "astrina.io, *.astrina.io",
                "state": ""
            },
            {
                "a": "Issued by",
                "b": "WE1",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Read from a live TLS handshake to 172.67.166.83:443 with SNI for astrina.io."
        ]
    }
}
GET/api/v1/tool?name=security-headers 🛡️ HSTS, CSP, फ्रेम विकल्प, ग्रेडेड।
GET /api/v1/tool?name=security-headers&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "security-headers",
    "ms": 94,
    "result": {
        "summary": [
            {
                "label": "Grade",
                "value": "A",
                "state": "ok"
            },
            {
                "label": "Score",
                "value": "85/100",
                "state": "ok"
            },
            {
                "label": "HSTS",
                "value": "yes",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Header",
            "Value",
            "Verdict"
        ],
        "rows": [
            {
                "a": "Strict-Transport-Security",
                "b": "max-age=31536000; includeSubDomains",
                "c": "Set for 365 days.",
                "state": "ok"
            },
            {
                "a": "Content-Security-Policy",
                "b": "default-src 'self' https: data:; script-src 'self' 'unsafe-inline' https:; style-src 's…",
                "c": "Set. The CSP analyser tool checks whether it actually holds.",
                "state": "ok"
            },
            {
                "a": "X-Content-Type-Options",
                "b": "nosniff",
                "c": "Set correctly.",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "The grade weighs the headers that change what an attacker can do. It says nothing about…"
        ]
    }
}
GET/api/v1/tool?name=http-headers 📨 प्रत्येक प्रतिक्रिया हेडर, समझाया गया।
GET /api/v1/tool?name=http-headers&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "http-headers",
    "ms": 88,
    "result": {
        "summary": [
            {
                "label": "Status",
                "value": "200",
                "state": "ok"
            },
            {
                "label": "Protocol",
                "value": "HTTP/2",
                "state": "ok"
            },
            {
                "label": "Headers",
                "value": "20",
                "state": ""
            },
            "…"
        ],
        "cols": [
            "Header",
            "Value",
            "What it does"
        ],
        "rows": [
            {
                "a": "alt-svc",
                "b": "h3=\":443\"; ma=86400",
                "c": "Advertises another protocol for this origin, usually HTTP/3.",
                "state": ""
            },
            {
                "a": "cache-control",
                "b": "no-store, no-cache, must-revalidate",
                "c": "How long, and by whom, this response may be cached.",
                "state": ""
            },
            {
                "a": "cf-cache-status",
                "b": "DYNAMIC",
                "c": "",
                "state": ""
            },
            "…"
        ],
        "text": "alt-svc: h3=\":443\"; ma=86400\ncache-control: no-store, no-cache, must-revalidate\ncf-cach…",
        "notes": [
            "Our fetcher keeps one value per header name, so if the server sent several Set-Cookie l…"
        ]
    }
}
GET/api/v1/tool?name=csp 🚧 उन निर्देशों के नाम जो एक छिद्र छोड़ते हैं।
GET /api/v1/tool?name=csp&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "csp",
    "ms": 116,
    "result": {
        "summary": [
            {
                "label": "Policy",
                "value": "enforced",
                "state": "ok"
            },
            {
                "label": "Directives",
                "value": "7",
                "state": ""
            },
            {
                "label": "Serious holes",
                "value": "7",
                "state": "bad"
            },
            "…"
        ],
        "cols": [
            "Directive",
            "Sources",
            "Finding"
        ],
        "rows": [
            {
                "a": "default-src",
                "b": "'self' https: data:",
                "c": "data: in a script source is a known bypass; https: alone allows every https origin on t…",
                "state": "bad"
            },
            {
                "a": "script-src",
                "b": "'self' 'unsafe-inline' https:",
                "c": "'unsafe-inline' on scripts defeats the policy — this is the exact thing CSP exists to s…",
                "state": "bad"
            },
            {
                "a": "style-src",
                "b": "'self' 'unsafe-inline'",
                "c": "'unsafe-inline' — acceptable for styles, still worth removing",
                "state": "warn"
            },
            "…"
        ],
        "text": "default-src 'self' https: data:; script-src 'self' 'unsafe-inline' https:; style-src 's…",
        "notes": [
            "Nothing reports violations, so you will not learn what the policy blocked or nearly blo…",
            "This reads the policy as written. Whether it fits what the page actually loads can only…"
        ]
    }
}
GET/api/v1/tool?name=dns 🌐 A, AAAA, MX, NS, TXT, SOA और CAA।
GET /api/v1/tool?name=dns&value=astrina.io{
    "ok": true,
    "utility": "dns",
    "ms": 507,
    "result": {
        "summary": [
            {
                "label": "A",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "AAAA",
                "value": "2",
                "state": "ok"
            },
            {
                "label": "MX",
                "value": "1",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Type",
            "Name",
            "Value",
            "…"
        ],
        "rows": [
            {
                "a": "A",
                "b": "astrina.io",
                "c": "104.21.34.236",
                "d": "292s",
                "e": "",
                "state": ""
            },
            {
                "a": "A",
                "b": "astrina.io",
                "c": "172.67.166.83",
                "d": "292s",
                "e": "",
                "state": ""
            },
            {
                "a": "AAAA",
                "b": "astrina.io",
                "c": "2606:4700:3037::ac43:a653",
                "d": "296s",
                "e": "",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "No CAA record. Adding one names the certificate authorities allowed to issue for this d…",
            "Answered by this server's resolver. A record changed in the last few hours may not have…"
        ]
    }
}
GET/api/v1/tool?name=whois 📜 पंजीकर्ता, तिथियाँ और नाम सर्वर।
GET /api/v1/tool?name=whois&value=astrina.io{
    "ok": true,
    "utility": "whois",
    "ms": 313,
    "result": {
        "summary": [
            {
                "label": "Domain",
                "value": "astrina.io",
                "state": "ok"
            },
            {
                "label": "Registrar",
                "value": "NameCheap, Inc.",
                "state": ""
            },
            {
                "label": "Expires",
                "value": "2027-07-09",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Field",
            "Value"
        ],
        "rows": [
            {
                "a": "Expires",
                "b": "2027-07-09 15:37 UTC",
                "state": ""
            },
            {
                "a": "Registered",
                "b": "2026-07-09 15:37 UTC",
                "state": ""
            },
            {
                "a": "Last changed",
                "b": "2026-07-14 15:37 UTC",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Read from the registry over RDAP, the protocol that replaced WHOIS. Registrant contact …"
        ]
    }
}
GET/api/v1/tool?name=email-auth ✉️ SPF, DKIM और DMARC रिकॉर्ड।
GET /api/v1/tool?name=email-auth&value=astrina.io{
    "ok": true,
    "utility": "email-auth",
    "ms": 1954,
    "result": {
        "summary": [
            {
                "label": "SPF",
                "value": "present",
                "state": "ok"
            },
            {
                "label": "DKIM",
                "value": "1 selector(s)",
                "state": "ok"
            },
            {
                "label": "DMARC",
                "value": "p=none",
                "state": "warn"
            },
            "…"
        ],
        "cols": [
            "Mechanism",
            "Record",
            "Finding",
            "…"
        ],
        "rows": [
            {
                "a": "MX",
                "b": "mail.astrina.io",
                "c": "priority 10",
                "d": "",
                "state": "ok"
            },
            {
                "a": "SPF",
                "b": "v=spf1 a mx ip4:149.202.80.42 ~all",
                "c": "Ends in ~all (softfail) with about 2 lookups. Move to -all once you are confident the l…",
                "d": "2 lookups",
                "state": "ok"
            },
            {
                "a": "DMARC",
                "b": "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1",
                "c": "p=none — monitoring only. It collects reports and blocks nothing, which is the right pl…",
                "d": "100%",
                "state": "warn"
            },
            "…"
        ],
        "notes": [
            "Move from p=none to p=quarantine once the reports show your legitimate senders passing.…",
            "All of this is read from public DNS. Nothing was sent to your mail servers and no messa…"
        ]
    }
}
GET/api/v1/tool?name=http2 ⚡ कौन सा प्रोटोकॉल और संकुचन का उपयोग किया जाता है।
GET /api/v1/tool?name=http2&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "http2",
    "ms": 122,
    "result": {
        "summary": [
            {
                "label": "Protocol",
                "value": "HTTP/2",
                "state": "ok"
            },
            {
                "label": "Compression",
                "value": "Zstandard",
                "state": "ok"
            },
            {
                "label": "HTTP/3",
                "value": "advertised",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Measure",
            "Value",
            "What it means"
        ],
        "rows": [
            {
                "a": "Negotiated protocol",
                "b": "HTTP/2",
                "c": "Multiplexed: many requests share one connection, so head-of-line blocking on the browse…",
                "state": "ok"
            },
            {
                "a": "Compression",
                "b": "Zstandard",
                "c": "Zstandard — fast and compact where the client supports it.",
                "state": "ok"
            },
            {
                "a": "Alt-Svc",
                "b": "h3=\":443\"; ma=86400",
                "c": "HTTP/3 is advertised, so browsers will move to QUIC after the first request.",
                "state": "ok"
            },
            "…"
        ],
        "notes": [
            "We ask for every encoding we can accept, so what is reported is what your server chose …"
        ]
    }
}
GET/api/v1/tool?name=ip-info 📍 एक पते के लिए भू-स्थान और नेटवर्क।
GET /api/v1/tool?name=ip-info&value=astrina.io{
    "ok": true,
    "utility": "ip-info",
    "ms": 2145,
    "result": {
        "summary": [
            {
                "label": "Host",
                "value": "astrina.io",
                "state": ""
            },
            {
                "label": "Addresses",
                "value": "4",
                "state": "ok"
            },
            {
                "label": "IPv6",
                "value": "yes",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Address",
            "Family",
            "Network",
            "…"
        ],
        "rows": [
            {
                "a": "104.21.34.236",
                "b": "IPv4",
                "c": "AS13335 — CLOUDFLARENET - Cloudflare, Inc., US",
                "d": "104.21.32.0/19",
                "e": "US",
                "f": "no reverse DNS",
                "state": "warn"
            },
            {
                "a": "172.67.166.83",
                "b": "IPv4",
                "c": "AS13335 — CLOUDFLARENET - Cloudflare, Inc., US",
                "d": "172.67.160.0/20",
                "e": "US",
                "f": "no reverse DNS",
                "state": "warn"
            },
            {
                "a": "2606:4700:3035::6815:22ec",
                "b": "IPv6",
                "c": "AS13335 — CLOUDFLARENET - Cloudflare, Inc., US",
                "d": "2606:4700:3035::/48",
                "e": "US",
                "f": "no reverse DNS",
                "state": "warn"
            },
            "…"
        ],
        "notes": [
            "4 addresses answer for this name. That is normal for a CDN or a load balancer.",
            "The country shown is the one recorded on the address allocation in the routing registry…",
            "No commercial geolocation database was consulted, so there is no city, no coordinate an…"
        ]
    }
}
GET/api/v1/tool?name=ports 🔌 अच्छी तरह से ज्ञात सेवा पोर्ट, सुरक्षित रूप से जांचे गए।
GET /api/v1/tool?name=ports&value=https%3A%2F%2Fexample.com%2F{ "ok": true, "utility": "ports", "ms": 0, "result": { … } }
GET/api/v1/tool?name=cookies 🍪 कुकीज़ और GDPR के खिलाफ उनके झंडे।
GET /api/v1/tool?name=cookies&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "cookies",
    "ms": 103,
    "result": {
        "summary": [
            {
                "label": "Cookies in response",
                "value": "1",
                "state": "ok"
            },
            {
                "label": "Third-party trackers",
                "value": "0",
                "state": "ok"
            },
            {
                "label": "Consent mechanism",
                "value": "detected",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Name",
            "Value",
            "Secure",
            "…"
        ],
        "rows": [
            {
                "a": "astrsess",
                "b": "44c774bdb4b0b81bd429e64545acc9a7",
                "c": "yes",
                "d": "yes",
                "e": "lax",
                "f": "session",
                "g": "flags look right",
                "state": "ok"
            }
        ],
        "notes": [
            "Cookies set later by JavaScript, or after a login, are outside what a single anonymous …"
        ]
    }
}
GET/api/v1/tool?name=cors 🔓 आपका एंडपॉइंट किन मूलों की अनुमति देता है।
GET /api/v1/tool?name=cors&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "cors",
    "ms": 884,
    "result": {
        "summary": [
            {
                "label": "CORS enabled",
                "value": "no",
                "state": "ok"
            },
            {
                "label": "Allowed origin",
                "value": "same origin only",
                "state": "ok"
            },
            {
                "label": "Origin reflection",
                "value": "none",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Header or probe",
            "Value",
            "Meaning"
        ],
        "rows": [
            {
                "a": "Access-Control-Allow-Origin",
                "b": "— not sent —",
                "c": "No CORS headers on a request that carried no Origin. That is the ordinary case; what ma…",
                "state": "ok"
            },
            {
                "a": "Access-Control-Allow-Credentials",
                "b": "— not sent —",
                "c": "Credentials are not shared.",
                "state": "ok"
            },
            {
                "a": "Access-Control-Allow-Methods",
                "b": "— not sent —",
                "c": "Sent on preflight responses.",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Two forged origins were sent and neither was echoed back, so this endpoint does not bui…",
            "This is a GET carrying an Origin header, not a full preflight. An endpoint that answers…"
        ]
    }
}
🎨 CSS (1)
GET/api/v1/tool?name=palette-url 🌐 एक साइट वास्तव में जो रंग उपयोग करती है।
GET /api/v1/tool?name=palette-url&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "palette-url",
    "ms": 578,
    "result": {
        "summary": [
            {
                "label": "Distinct colours",
                "value": "132",
                "state": "warn"
            },
            {
                "label": "Stylesheets read",
                "value": "2 / 2",
                "state": "ok"
            },
            {
                "label": "CSS custom properties",
                "value": "28",
                "state": "ok"
            },
            "…"
        ],
        "cols": [
            "Colour",
            "RGB",
            "Uses",
            "…"
        ],
        "rows": [
            {
                "a": "#ffffff",
                "b": "rgb(255, 255, 255)",
                "c": "40",
                "d": "near-white",
                "e": "contrast on white 1.0:1 · on black 21.0:1",
                "state": ""
            },
            {
                "a": "#000000",
                "b": "rgb(0, 0, 0)",
                "c": "27",
                "d": "near-black",
                "e": "contrast on white 21.0:1 · on black 1.0:1",
                "state": ""
            },
            {
                "a": "#5b5bd6",
                "b": "rgb(91, 91, 214)",
                "c": "20",
                "d": "brand or accent",
                "e": "contrast on white 5.4:1 · on black 3.9:1",
                "state": ""
            },
            "…"
        ],
        "notes": [
            "Over 60 distinct colours. That is usually several palettes layered by different people …",
            "Counts are how often a colour appears in the CSS, which is not the same as how much of …"
        ]
    }
}
{ } DevOps (1)
GET/api/v1/tool?name=php-version 🐘 एक सर्वर द्वारा प्रकट PHP संस्करण का पता लगाएं।
GET /api/v1/tool?name=php-version&value=https%3A%2F%2Fastrina.io%2F{
    "ok": true,
    "utility": "php-version",
    "ms": 74,
    "result": {
        "summary": [
            {
                "label": "PHP version",
                "value": "not disclosed",
                "state": "ok"
            },
            {
                "label": "Security support",
                "value": "unknown",
                "state": ""
            },
            {
                "label": "Version leaked",
                "value": "no",
                "state": "ok"
            }
        ],
        "cols": [
            "Field",
            "Value",
            "Verdict"
        ],
        "rows": [
            {
                "a": "PHP detected",
                "b": "no",
                "c": "Nothing in the response names PHP. The site may not use it, or it may simply be configu…",
                "state": "ok"
            },
            {
                "a": "Server header",
                "b": "cloudflare",
                "c": "No version published here.",
                "state": "ok"
            }
        ],
        "notes": [
            "This reads only what the server volunteers in its headers. Nothing is probed, and a sit…"
        ]
    }
}

Astrina के साथ लॉगिन (Auth API)

एक एकीकरण के साथ अपनी साइट पर सामाजिक लॉगिन जोड़ें। Astrina OAuth2/OIDC-शैली का मध्यस्थ है; आप अपनी साइट को एक बार पंजीकृत करते हैं और हर प्रदाता को पुनः उपयोग करते हैं जिसे आप सक्षम करते हैं।

GET /auth/authorize.phpउपयोगकर्ता को यहाँ भेजें (जोड़ें &provider=google चुनने वाले को छोड़ने के लिए)। आपके redirect_uri पर एक कोड लौटाता है।
POST /auth/token.phpकोड का आदान-प्रदान करें (सर्वर-साइड, आपके क्लाइंट सीक्रेट के साथ) पहचान के लिए: सब, प्रदाता, ईमेल, नाम, अवतार।
GET /auth/providers.phpवर्तमान में सक्षम प्रदाताओं की सूची बनाएं, तैयार गहरे लिंक लॉगिन यूआरएल के साथ।

ड्रॉप-इन PHP SDK + पूर्ण गाइड: एकीकरण गाइड · download sdk.php

छवि अनुकूलन API

छवियों को संकुचित और परिवर्तित करें (JPEG, PNG, GIF, WebP, AVIF, SVG) — बिना हानि या हानि के साथ। एक फ़ाइल, एक URL या base64 भेजें; अनुकूलित छवि और इसके आकार की बचत प्राप्त करें।

POST /api/v1/imageशरीर: image=@file, या JSON {url} / {data:base64}. विकल्प: lossy=1|0, format=keep|webp|avif|jpeg|png, quality, resize. इन/बाहर बाइट्स, saved_percent और एक डाउनलोड URL लौटाता है।
GET /api/v1/image?get=…इसके टोकन द्वारा एक अनुकूलित परिणाम प्राप्त करें — कोई कुंजी आवश्यक नहीं, URL को सीधे एक छवि टैग में दें।

केवल भुगतान योजनाएँ; आपकी मासिक छवि कोटा के खिलाफ मापी जाती हैं। वेब इंटरफ़ेस: छवि ऑप्टिमाइज़र

एंडपॉइंट्स जिन्हें आप कॉल नहीं करते

/api/v1 के तहत दो परिवार हैं जो आपके कोड के लिए नहीं हैं, यहाँ सूचीबद्ध हैं ताकि यह पृष्ठ पूरा मानचित्र हो:

POST /api/v1/social/inboundप्रदाता वेबहुक रिसीवर (Meta / WhatsApp Cloud API)। इसे प्रदाता द्वारा कॉल किया जाता है, आपके द्वारा नहीं: GET सब्सक्रिप्शन हैंडशेक है, POST संदेश भेजता है। इसे में कॉन्फ़िगर करें सोशल.
/api/v1/node/…पल्सर डिवाइस प्रोटोकॉल — पंजीकरण, अगला, सबमिट, हार्टबीट और मित्र — नोड एजेंट द्वारा बोला गया, न कि API कुंजी द्वारा। इसे प्रोटोकॉल के बाकी हिस्सों के साथ दस्तावेजित किया गया है पल्सर प्रोटोकॉल पृष्ठ.

साइट समूह

GET/api/v1/groups आपकी साइट समूह और उनके सदस्य - समूह आईडी जो /api/v1/stats?group=… लेता है, बिना डैशबोर्ड को स्क्रैप किए।
GET /api/v1/groups
X-Api-Key: ak_your_key_here

{ "ok":true, "groups":[ { "id":4, "name":"Client sites", "sites":[ {"id":12,"domain":"example.com"} ] } ] }

केवल पढ़ने के लिए; समूह संपादित किए जाते हैं मेरे साइट समूह. दायरा groups.

प्रमोशन स्नैपशॉट

GET/api/v1/promotion?site=… आपकी साइटों में से एक का प्रचार चित्र JSON के रूप में: रैंकिंग, भूगोल, बैकलिंक्स, ऑडिट और लक्ष्य — वही संख्या जो प्रचार हब दिखाता है।
पैरामविवरण
siteसाइट आईडी या डोमेन — कुंजी के मालिक का होना चाहिए
sectionsummary (default) · rankings · geo · backlinks · audit · goals

एक फ़ील्ड जिसके लिए प्लेटफ़ॉर्म के पास कोई डेटा नहीं है, वह नल वापस आता है — कभी भी अनुमान नहीं। दायरा promotion.

पल्सर नेटवर्क डेटा

GET/api/v1/pulsar?site=… आपकी स्वामित्व वाली साइट के लिए वितरित निगरानी, स्वतंत्र उपकरणों द्वारा एकत्रित: कई दृष्टिकोणों से प्रति-मॉनिटर पुष्टि, और देश के अनुसार विलंबता।
पैरामविवरण
siteसाइट आईडी या डोमेन (आवश्यक)
reportmonitors (default) · coverage

हर आंकड़ा स्वतंत्र उपकरणों से एक क्वोरम निर्णय है; जब नेटवर्क ने अभी तक निर्णय नहीं लिया है, तो मान नल होता है न कि एकल सर्वर की राय। नेटवर्क के बारे में.

टिप्पणियाँ

GET/api/v1/comment?key=… किसी भी पृष्ठ के लिए URL द्वारा मॉडरेटेड ऑन-साइट टिप्पणियाँ। वही स्टोर जो ड्रॉप-इन टिप्पणी विजेट उपयोग करता है।
GET  /api/v1/comment?key=https://example.com/post
POST /api/v1/comment   key=https://example.com/post&author=Ann&body=Nice+one

बॉडीज़ को साधारण पाठ के रूप में संग्रहीत किया जाता है (टैग हटाए गए) — रेंडर पर एस्केप करें। मॉडरेशन और विजेट में रहते हैं टिप्पणियाँ.

धमकी-खुफिया निर्यात

GET/api/v1/ti-export धमकी-खुफिया कॉर्पस का लाइसेंस-जानकारी वाला निर्यात: केवल पुनर्वितरण-लाइसेंस प्राप्त या Astrina-उत्पन्न पंक्तियाँ, प्रत्येक अपने स्रोत को श्रेय देने के लिए ले जाती हैं।

डबल-गेटेड: एक मान्य कुंजी और ऑपरेटर स्विच, जो तब तक बंद है जब तक वाणिज्यिक शर्तें सहमति नहीं होतीं। प्रतिबंधात्मक-लाइसेंस प्राप्त फ़ीड कभी शामिल नहीं होते, चाहे योजना कुछ भी हो।

अपनी API कुंजी प्राप्त करें

यह पृष्ठ किसका उत्तर देता है

  • API एंडपॉइंट संदर्भ
  • API प्रमाणीकरण और कोटा
  • API अनुरोध उदाहरण
  • REST JSON API दस्तावेज़
  • API कुंजी कैसे प्राप्त करें
  • एस्ट्रीना api क्या है
  • कैसे एस्ट्रीना api काम करता है
  • एस्ट्रीना api समझाया गया
  • एस्ट्रीना api गाइड
  • कैसे एस्ट्रीना api के साथ शुरू करें
  • एस्ट्रीना api समीक्षाएँ
  • क्या एस्ट्रीना api इसके लायक है
  • एस्ट्रीना api की कीमत
  • एस्ट्रीना api विकल्प
  • शुरुआत करने वालों के लिए एस्ट्रीना api
  • क्यों एस्ट्रीना api
  • एस्ट्रीना api — आपको क्या मिलता है