CG Score API

Score how trustworthy any website is as a source — one site or up to 100 at a time — and get a clear Trusted / Review / Avoid answer with reasons.

Base URL: https://stability-upgrade-3.emergent.host/api/v1/cg-score

Quickstart (2 minutes)

  1. Sign in and open Profile → API Management → API Access (Pro, Business or Enterprise plan).
  2. Create a key and give it your product's name (e.g. DNH) — usage is reported under that name.
  3. Make sure your wallet has credits, then send your first check:
curl -X POST https://stability-upgrade-3.emergent.host/api/v1/cg-score/check \
  -H "X-API-Key: cg_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.reuters.com/world/", "trusted_min_grade": "B"}'

Authentication

Send your key in the X-API-Key header (or Authorization: Bearer cg_…). Keys can be restricted to IP addresses and given their own daily limit. Never put a key in browser code.

POST /check — score one site

Body: url (URL or bare domain, required), trusted_min_grade (your own cut-off, optional: A+, A, B, C, D, F), refresh (force a fresh check, Business and admins only).

{
  "id": "4f2c…",
  "permalink": "/cg-score?id=4f2c…",
  "domain": "reuters.com",
  "composite_score": 91,
  "grade": "A+",
  "editorial": { "tier": 2, "code": "T2", "label": "Established Research / Industry Source" },
  "signals": { "virustotal": { "score": 100, "available": true }, "...": "11 checks" },
  "verdict": {
    "verdict": "trusted", "label": "Trusted",
    "reasons": ["Grade A+ (91/100)", "Editorial tier T2 — Established Research / Industry Source"],
    "rule": { "trusted_min_grade": "B", "review_min_grade": "D", "trust_t1_t2": true }
  },
  "billing": { "charged_credits": 1, "charged_usd": 0.01, "basis": "fresh_check" }
}

POST /batch — score many sites

Up to 100 sites per request; duplicates are removed. Each site is billed exactly like a single check. One failing site never fails the batch — it returns status: "error" with a message.

curl -X POST https://stability-upgrade-3.emergent.host/api/v1/cg-score/batch \
  -H "X-API-Key: cg_your_key" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["reuters.com", "bbc.com", "example-news.info"]}'

Trusted / Review / Avoid

Free and included in every result. Any VirusTotal or Google Safe Browsing threat flag is always Avoid. Otherwise grade B or better, or editorial tier T1/T2, is Trusted; down to grade D is Review; below that is Avoid. Pass trusted_min_grade to apply your own cut-off.

CG Score rates the publisher, not individual articles: it does not fact-check, measure bias or check paywalls.

Billing & limits

  • Fresh check: …. Results saved in the last 7 days are free. 1 credit = $0.01.
  • Daily limits (shared by all keys on the account, reset 00:00 UTC): Pro … · Business / Enterprise … checks.
  • Daily boost: +… checks until 00:00 UTC for … (Business …), up to … a day. Non-refundable.
  • Auto Boost: buys a boost only when your app hits the limit, up to your monthly cap (default $20). Nothing is charged while idle; it rests on standby after 3 quiet days and pauses itself if traffic jumps above 5× normal.
  • Email alerts at 80% and 100% of your daily limit, and when your wallet runs low.

Errors

400Invalid URL, or more sites than the batch maximum
401Missing or invalid API key
402Not enough credits for a fresh check — top up your wallet
403Fresh re-check (refresh) requested on a plan that does not allow it
429Daily limit, per-key limit or hourly safety cap reached — buy a boost or wait for 00:00 UTC

Error bodies carry detail.message (human readable) and, for limits, detail.error such as daily_limit_reached.