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)
- Sign in and open Profile → API Management → API Access (Pro, Business or Enterprise plan).
- Create a key and give it your product's name (e.g. DNH) — usage is reported under that name.
- 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
| 400 | Invalid URL, or more sites than the batch maximum |
| 401 | Missing or invalid API key |
| 402 | Not enough credits for a fresh check — top up your wallet |
| 403 | Fresh re-check (refresh) requested on a plan that does not allow it |
| 429 | Daily 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.