Getting Started
TrueSource API
The TrueSource API provides programmatic access to media intelligence data. Integrate bias ratings, ownership chains, claim verification, and AI-powered analysis into your applications with a simple REST API.
Newsrooms & Journalists
Automate source credibility checks
Research & Academia
Build datasets for media studies
Apps & Extensions
Add bias badges and credibility signals
Content Platforms
Enrich content with ownership data
Authentication
All API requests require a Bearer token in the Authorization header. Get your API key from the Settings page.
curl -H "Authorization: Bearer ts_live_abc123..." \
https://truesource.app/api/v1/bias-rating/reuters.comBase URL
All endpoints are relative to the following base URL:
https://truesource.app/api/v1All responses are JSON with Content-Type: application/json.
Rate Limits
Every response includes rate limit headers so you can track your usage:
X-RateLimit-Limit: 100 # Your per-minute limit
X-RateLimit-Remaining: 87 # Requests remaining
X-RateLimit-Reset: 1720000000 # Unix timestamp when limit resets| Tier | Requests/Month | Rate Limit |
|---|---|---|
| Explorer | 100 | 5 req/min |
| Starter | 5,000 | 30 req/min |
| Growth | 25,000 | 100 req/min |
| Scale | 100,000 | 300 req/min |
| Enterprise | Unlimited | Custom |
Error Handling
Errors return a consistent JSON structure with an HTTP status code, error type, and human-readable message.
{
"error": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 2025-01-15T12:00:00Z",
"retryAfter": 1736942400
}| Status | Error | Description |
|---|---|---|
| 400 | BAD_REQUEST | Invalid or missing parameters |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Endpoint not available on your tier |
| 404 | NOT_FOUND | Resource does not exist |
| 429 | RATE_LIMITED | Rate or quota limit exceeded |
| 500 | INTERNAL_ERROR | Unexpected server error |
Endpoints
API Reference
/api/v1/bias-rating/{domain}Look up the bias rating, factual reporting score, and ownership info for any news source by domain.
Parameters
| Name | Type | Description |
|---|---|---|
| domain* | string | Domain of the news source (e.g. reuters.com) |
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://truesource.app/api/v1/bias-rating/reuters.com{
"domain": "reuters.com",
"source": "Reuters",
"biasRating": "CENTER",
"factualReporting": "VERY_HIGH",
"credibilityScore": 94,
"owner": "Thomson Reuters Corporation"
}/api/v1/analyzeSubmit an article URL for full AI analysis. Returns bias rating, confidence score, legitimacy score, reasoning, and highlighted evidence passages.
Parameters
| Name | Type | Description |
|---|---|---|
| url* | string | Full URL of the article to analyze |
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article"}' \
https://truesource.app/api/v1/analyze{
"biasRating": "LEFT_CENTER",
"biasConfidence": 0.82,
"legitimacyScore": 78,
"reasoning": "Article uses loaded language in describing...",
"highlightedPassages": [
{ "text": "devastating policy failure", "type": "LOADED_LANGUAGE" },
{ "text": "experts unanimously agree", "type": "APPEAL_TO_AUTHORITY" }
]
}/api/v1/claims/extractExtract factual claims from article text. Returns claims with verbatim quotes, attribution, confidence ratings, and primary source types.
Parameters
| Name | Type | Description |
|---|---|---|
| text* | string | Article text to extract claims from |
| url | string | Optional article URL for context |
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "The president signed the bill into law on Tuesday..."}' \
https://truesource.app/api/v1/claims/extract{
"claims": [
{
"claimText": "The president signed the bill into law",
"verbatimQuote": "signed the bill into law on Tuesday...",
"confidence": 0.91,
"attribution": "White House",
"primarySourceType": "GOVERNMENT_RECORD"
}
]
}/api/v1/claims/verifyFact-check a specific claim against known sources. Returns a verdict, confidence score, supporting evidence, and explanation.
Parameters
| Name | Type | Description |
|---|---|---|
| claim* | string | The claim to fact-check |
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"claim": "Inflation hit 9.1% in June 2022"}' \
https://truesource.app/api/v1/claims/verify{
"claim": "Inflation hit 9.1% in June 2022",
"verdict": "TRUE",
"confidence": 0.97,
"sources": [
{ "name": "Bureau of Labor Statistics", "url": "https://bls.gov/..." }
],
"explanation": "CPI-U rose 9.1% year-over-year in June 2022..."
}/api/v1/owner/{id}Get the full ownership chain for a media entity including parent companies, subsidiaries, and corporate structure.
Parameters
| Name | Type | Description |
|---|---|---|
| id* | string | Owner ID from TrueSource database |
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://truesource.app/api/v1/owner/clx1234abc{
"id": "clx1234abc",
"name": "CNN",
"type": "MEDIA_COMPANY",
"parent": {
"name": "Warner Bros. Discovery",
"type": "CONGLOMERATE"
},
"subsidiaries": ["CNN International", "HLN"]
}/api/v1/owner/{id}/donationsRetrieve FEC political donation data for a media owner including recipients, amounts, party breakdown, and election cycles.
Parameters
| Name | Type | Description |
|---|---|---|
| id* | string | Owner ID |
| cycle | string | Election cycle year (e.g. 2024) |
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://truesource.app/api/v1/owner/clx1234abc/donations{
"owner": "Warner Bros. Discovery",
"totalDonations": 2450000,
"cycles": ["2022", "2024"],
"partyBreakdown": {
"DEM": 0.58, "REP": 0.35, "OTHER": 0.07
},
"topRecipients": [
{ "name": "Senate Leadership Fund", "amount": 250000 }
]
}/api/v1/story/{id}/coverageGet the coverage spectrum for a story cluster showing which political perspectives are represented and where coverage gaps exist.
Parameters
| Name | Type | Description |
|---|---|---|
| id* | string | Story cluster ID |
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://truesource.app/api/v1/story/sty_abc123/coverage{
"storyId": "sty_abc123",
"title": "Federal Reserve Interest Rate Decision",
"articleCount": 12,
"biasSpectrum": {
"LEFT": 3, "LEFT_CENTER": 4,
"CENTER": 2, "RIGHT_CENTER": 2, "RIGHT": 1
},
"gaps": ["FAR_RIGHT"]
}/api/v1/tweet/analyzeFact-check a tweet by URL or text content. Returns claim extraction, verdict for each claim, and author credibility score.
Parameters
| Name | Type | Description |
|---|---|---|
| tweetUrl | string | URL of the tweet to analyze |
| text | string | Tweet text (if URL not provided) |
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tweetUrl": "https://x.com/user/status/123456"}' \
https://truesource.app/api/v1/tweet/analyze{
"claims": [
{
"text": "Unemployment is at a 50-year low",
"verdict": "MOSTLY_TRUE",
"confidence": 0.85
}
],
"authorCredibility": 72,
"overallAssessment": "Largely accurate with minor context missing"
}Reference
Pricing
Start with 100 free requests per month. No credit card required.
| Tier | Price | Requests/mo |
|---|---|---|
| Explorer | Free | 100 |
| Starter | $49/mo | 5,000 |
| GrowthPopular | $199/mo | 25,000 |
| Scale | $499/mo | 100,000 |
| Enterprise | Custom | Unlimited |
All paid tiers include commercial usage rights. Enterprise plans include custom SLAs and dedicated infrastructure.
FAQ
Ready to get started?
Start with 100 free requests per month. No credit card required.

