Developer Documentation
The Omniscient API lets any application add triple-AI fact-checking with a single HTTP call. GPT-4o Mini, Perplexity Sonar Pro, and Gemini 2.5 Flash run simultaneously and return a consensus Trust Score with live citations.
The API is live and available today. Get your Bearer token by signing up and emailing newsroom@metaversestreetjournal.com.
Create a free account
Sign up at omniscient.news — takes 10 seconds via Google, MetaMask, or LinkedIn.
Request your API key
Email us your Account ID and intended use case. Bearer token issued within 24 hours.
Make your first call
POST a claim or URL to /api/fact-check with your Bearer token. You'll get a Trust Score back in under 3 seconds.
One endpoint. Three AI verdicts.
A single POST returns a consensus fact-check in under 3 seconds. Choose your language below.
curl -X POST https://omniscient.news/api/fact-check \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "claim_input": { "highlighted_span": "The Great Wall of China is visible from space.", "page_url": "https://example.com/article", "page_title": "Space myths debunked" } }'
API Keys
All API requests must include a Bearer token in the Authorization header. There are no API keys in query strings or cookies.
Authorization: Bearer omni_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep your API key secret. Never expose it in client-side code, public repositories, or logs. Rotate it immediately if compromised — email newsroom@metaversestreetjournal.com.
Getting a key
API keys are issued manually during the beta period:
- Create a free account at omniscient.news
- Copy your Account ID from the Profile page
- Email newsroom@metaversestreetjournal.com with your Account ID and use case
- Receive your Bearer token within 24 hours
Endpoints
All endpoints are under the base URL https://omniscient.news
| Method | Path | Description |
|---|---|---|
| POST | /api/fact-check | Submit a claim or URL for triple-AI fact-checking |
| GET | /api/fact-check/:id | Retrieve a cached result by reference ID |
| GET | /api/usage | Check monthly request count and quota |
POST /api/fact-check
Submits a claim for triple-AI verification. All three models run in parallel and return a consensus score.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| claim_input | object | Yes | Container for the claim being checked |
| claim_input.highlighted_span | string | Yes* | The specific text claim to fact-check |
| claim_input.page_url | string | No | Source URL for context |
| claim_input.page_title | string | No | Article/page title for context |
| claim_input.full_text | string | No | Surrounding paragraph for additional context |
* Either highlighted_span or page_url must be provided.
GET /api/fact-check/:id
Retrieves a previously computed result by its referenceId. Results are cached for 30 days.
curl https://omniscient.news/api/fact-check/omni-a1b2c3-d4e5f6 \ -H "Authorization: Bearer YOUR_API_KEY"
GET /api/usage
Returns your current billing period usage and quota.
{
"period": "2026-03",
"requestsUsed": 1284,
"requestsLimit": null, // null = unlimited (Always-On plan)
"plan": "always_on_pro",
"resetDate": "2026-04-01T00:00:00Z"
}
Request Format
All requests use JSON bodies with Content-Type: application/json.
{
"claim_input": {
"highlighted_span": "Bitcoin uses more energy than Argentina.",
"page_url": "https://bbc.com/news/technology-56012952",
"page_title": "Bitcoin's energy use in numbers",
"full_text": "Critics argue that Bitcoin uses more energy than Argentina, raising environmental concerns..."
}
}
Response Format
Every successful response returns a JSON object with a consensus Trust Score, per-model verdicts, and live citations.
{
"referenceId": "omni-a1b2c3-d4e5f6",
"trustScore": 68,
"verdict": "PARTIALLY SUPPORTED",
"consensus": "Two of three models support this claim with caveats.",
"claimType": "STATISTICAL CLAIM",
"models": {
"gpt4o_mini": {
"verdict": "SUPPORTED",
"score": 72,
"summary": "Cambridge Centre data confirms this figure as of 2021..."
},
"perplexity": {
"verdict": "SUPPORTED",
"score": 70,
"summary": "Estimates vary by year; broadly accurate as a comparison..."
},
"gemini": {
"verdict": "DISPUTED",
"score": 61,
"summary": "More recent data shows efficiency improvements..."
}
},
"citations": [
{ "url": "https://ccaf.io/cbnsi/cbeci", "title": "Cambridge Bitcoin Electricity Consumption Index" },
{ "url": "https://iea.org/reports/bitcoin-energy", "title": "IEA: Bitcoin energy report" }
],
"processingMs": 2140
}
| Field | Type | Description |
|---|---|---|
| referenceId | string | Unique result ID, usable with GET /fact-check/:id |
| trustScore | number (0–100) | Consensus accuracy score across all three models |
| verdict | string | Human-readable consensus verdict |
| consensus | string | One-line explanation of the combined result |
| claimType | string | Classification of claim (FACT, OPINION, STATISTICAL, etc.) |
| models | object | Per-model breakdown with score, verdict, and summary |
| citations | array | Source URLs and titles used as evidence |
| processingMs | number | Total wall-clock time in milliseconds |
Verdicts & Trust Scores
Each model returns one of four verdicts. The consensus verdict is derived from the combination.
| Verdict | Score Range | Meaning |
|---|---|---|
| SUPPORTED | 70 – 100 | Evidence clearly supports the claim |
| PARTIALLY SUPPORTED | 40 – 69 | Mixed evidence; claim is directionally correct but imprecise |
| DISPUTED | 20 – 39 | Evidence contradicts or significantly challenges the claim |
| UNSUPPORTED | 0 – 19 | No credible evidence found, or claim is demonstrably false |
The consensus trustScore is a weighted average across all three models. Per-model scores may differ. claimType: "OPINION" items receive a modified scoring rubric.
JavaScript / TypeScript SDK
The official SDK wraps the REST API with full TypeScript types, automatic retries, and streaming support.
The SDK is in private beta. It is issued alongside API keys. Reach out to get access.
npm install @omniscient/sdk
# or
pnpm add @omniscient/sdk
import { OmniscientClient, FactCheckResult } from "@omniscient/sdk"; const client = new OmniscientClient({ apiKey: process.env.OMNISCIENT_API_KEY!, timeout: 10_000, // ms, default 8000 retries: 2, // auto-retry on 5xx }); // Fact-check a claim const result: FactCheckResult = await client.factCheck({ claim: "The Eiffel Tower is 330 metres tall.", pageUrl: "https://example.com/article", }); // Access per-model data for (const [model, data] of Object.entries(result.models)) { console.log(`${model}: ${data.verdict} (${data.score})`); } // Retrieve a cached result const cached = await client.getResult(result.referenceId); // Check quota const usage = await client.getUsage(); console.log(`Used: ${usage.requestsUsed} this period`);
Rate Limits
Rate limits are enforced per API key. On Metered plan they also apply per billing month.
Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Error Codes
All errors return a JSON body with error (machine-readable) and message (human-readable) fields.
{
"error": "RATE_LIMIT_EXCEEDED",
"message": "You have exceeded 60 requests per minute. Retry after 38 seconds.",
"retryAfter": 38
}
| HTTP | Error Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Missing or malformed request body |
| 400 | CLAIM_TOO_SHORT | highlighted_span must be at least 10 characters |
| 401 | UNAUTHORIZED | Missing or invalid Bearer token |
| 402 | QUOTA_EXCEEDED | Monthly request limit reached (Metered plan) |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests per minute |
| 500 | MODEL_ERROR | One or more AI models failed — partial result may be returned |
| 503 | SERVICE_UNAVAILABLE | API temporarily unavailable — retry with exponential backoff |