Search sources
Find sources for a query without requesting stance analysis or a verdict.
/api/v1/sources/searchhttps://api.webcite.coWhen to use it
limit is the maximum number of returned sources (1-20), not a guarantee. Filters guide retrieval and filter returned metadata. A source with unknown required metadata does not match.
Filter by source_type, is_primary_source, publication_year (from, to), or domain. Domain filters include subdomains. Explicit is_primary_source: false is a filter, not an omitted value.
Request
2 credits.
Examples run on your server. Set WEBCITE_API_KEY first. Python examples use the requests package.
curl --fail-with-body -X POST 'https://api.webcite.co/api/v1/sources/search' \
-H "x-api-key: $WEBCITE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"query": "climate change effects on coral reefs",
"limit": 10
}'Request body
filtersobjectApplied to retrieval query and retained source metadata. Domain includes subdomains; false primary-source is an explicit filter. Unknown required metadata does not match.
Show filters fields
domainstring[]is_primary_sourcebooleanpublication_yearobjectShow publication_year fields
fromintegertointegersource_typestring[]limitnumberMaximum number of sources to return (1-20)
Default: 10
querystringrequiredSearch query to find sources for
Response
Returns source results using the shared search response schema. Analysis fields from verification may be absent.
200 response
application/json
citationsobject[]legacy[DEPRECATED] Use claim_groups[0].citations instead. Legacy citations array.
Show citations fields
authorstringrequiredAuthor or domain name
credibility_basisstringWhether credibility_score rests on an actual measurement ('measured') or is a placeholder because no check has run yet ('unknown', e.g. no grounding signal or the citation has not been analysed). Absent means the same as "measured" for citations produced before this field existed.
Values: "measured""heuristic""unknown"
credibility_scorenumberrequiredCredibility/relevance score from 1-100 (higher = more credible/relevant/authoritative)
evidenceobjectPublisher evidence receipt v1: state, originalUrl, finalUrl, contentHash, retrievedAt, quoteMatch, typed publisher dates, retention, replayable and failureReason. Missing on legacy records means unknown provenance.
group_idstringGroup ID for citations from the same domain
highlight_rangesstring[]Character ranges [start, end] in snippet that are most relevant to the claim
idstringrequiredUnique citation identifier
is_group_primarybooleanWhether this is the primary (highest-ranked) citation from its domain group
publication_yearnumberPublication year of the cited source
ranknumberrequiredSequential rank (1, 2, 3...) where rank 1 is the highest/best citation, based on credibility_score and verified status
ranking_factorsobjectBreakdown of how the ranking score was calculated
Show ranking_factors fields
content_relevancenumberrequiredHow well the content matches the claim being verified (0-100).
recencynumberrequiredPublication freshness score (0-100). Current year = 100, decreases with age.
source_authoritynumberrequiredDomain reputation score (0-100). Higher scores for government, academic, major news sources.
snippetstringrequiredRelevant excerpt from the source
source_metadataobjectAdditional metadata about the source
Show source_metadata fields
domainstringrequiredExtracted domain from URL
domain_categorystringrequiredCategory of the source domain
Values: "government""academic""news""organization""encyclopedia""social""other"
is_fact_check_sitebooleanrequiredWhether this is a fact-checking website (snopes, politifact, etc.)
is_primary_sourcebooleanrequiredWhether this is a primary source (government, official, press release)
source_typestringSource type: Government Document, Dataset, Journal, Report, Trusted Media, Article, Reddit, Social Media
Values: "Government Document""Dataset""Journal""Report""Trusted Media""Article""Reddit""Social Media"
stancestringWhether this citation supports or contradicts the claim (only with useEnhancedAnalysis)
Values: "supports""contradicts""partially_supports""neutral""inconclusive"
stance_confidencenumberConfidence in the stance assessment (0-100)
stance_explanationstringBrief explanation of the stance determination
statusstringrequiredVerification status of the citation
titlestringrequiredTitle of the cited source
urlstringrequiredURL of the cited source
claim_groupsobject[]Unified tree: All data organized by claim. Each claim_group contains citations, domain_groups, and verdict.
Show claim_groups fields
citation_countnumberrequiredNumber of citations for this claim
citationsobject[]requiredAll citations for this claim (full objects with stance, ranking, etc.)
Show citations fields
authorstringrequiredAuthor or domain name
credibility_basisstringWhether credibility_score rests on an actual measurement ('measured') or is a placeholder because no check has run yet ('unknown', e.g. no grounding signal or the citation has not been analysed). Absent means the same as "measured" for citations produced before this field existed.
Values: "measured""heuristic""unknown"
credibility_scorenumberrequiredCredibility/relevance score from 1-100 (higher = more credible/relevant/authoritative)
evidenceobjectPublisher evidence receipt v1: state, originalUrl, finalUrl, contentHash, retrievedAt, quoteMatch, typed publisher dates, retention, replayable and failureReason. Missing on legacy records means unknown provenance.
group_idstringGroup ID for citations from the same domain
highlight_rangesstring[]Character ranges [start, end] in snippet that are most relevant to the claim
idstringrequiredUnique citation identifier
is_group_primarybooleanWhether this is the primary (highest-ranked) citation from its domain group
publication_yearnumberPublication year of the cited source
ranknumberrequiredSequential rank (1, 2, 3...) where rank 1 is the highest/best citation, based on credibility_score and verified status
ranking_factorsobjectBreakdown of how the ranking score was calculated
Show ranking_factors fields
content_relevancenumberrequiredHow well the content matches the claim being verified (0-100).
recencynumberrequiredPublication freshness score (0-100). Current year = 100, decreases with age.
source_authoritynumberrequiredDomain reputation score (0-100). Higher scores for government, academic, major news sources.
snippetstringrequiredRelevant excerpt from the source
source_metadataobjectAdditional metadata about the source
Show source_metadata fields
domainstringrequiredExtracted domain from URL
domain_categorystringrequiredCategory of the source domain
Values: "government""academic""news""organization""encyclopedia""social""other"
is_fact_check_sitebooleanrequiredWhether this is a fact-checking website (snopes, politifact, etc.)
is_primary_sourcebooleanrequiredWhether this is a primary source (government, official, press release)
source_typestringSource type: Government Document, Dataset, Journal, Report, Trusted Media, Article, Reddit, Social Media
Values: "Government Document""Dataset""Journal""Report""Trusted Media""Article""Reddit""Social Media"
stancestringWhether this citation supports or contradicts the claim (only with useEnhancedAnalysis)
Values: "supports""contradicts""partially_supports""neutral""inconclusive"
stance_confidencenumberConfidence in the stance assessment (0-100)
stance_explanationstringBrief explanation of the stance determination
statusstringrequiredVerification status of the citation
titlestringrequiredTitle of the cited source
urlstringrequiredURL of the cited source
claimstringrequiredThe claim/sub-prompt text
claim_idstringrequiredUnique identifier for this claim group
claim_indexnumberrequiredIndex of the claim (1-based)
domain_groupsobject[]Citations grouped by domain (lightweight, for deduplication UI)
Show domain_groups fields
domainstringrequiredDomain that groups these citations
domain_categorystringrequiredCategory of this domain
Values: "government""academic""news""organization""encyclopedia""social""other"
group_idstringrequiredUnique identifier for this domain group
group_stancestringrequiredOverall stance of citations from this domain
Values: "supports""contradicts""mixed""neutral"
primary_citation_idstringrequiredID of the primary (highest-ranked) citation from this domain
stance_summarystringrequiredOverall stance summary based on citations
Values: "supported""contradicted""mixed""unverifiable"
verdictobjectVerdict for this claim (streamed as citations complete)
Show verdict fields
aggregation_scorenumberLegacy aggregate score retained for compatibility
calibrated_confidencenumber | nullclaimstringrequiredThe original prompt/claim that was analyzed
confidencenumberrequiredLegacy aggregation score (0-100); use confidence_available and calibrated_confidence for calibration status
confidence_availablebooleanTrue only when calibrated confidence is available
confidence_basisstringValues: "unknown""heuristic""calibrated"
conflictobject | nullThe quoted, named pair of sources behind a "mixed" verdict. Null for every other verdict.
Show conflict fields
contradictingobjectrequiredShow contradicting fields
citation_idstringrequiredId of the citation taking this side
quotestringrequiredThe text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves
sourcestringrequiredThe source, by url where known and by domain otherwise
supportingobjectrequiredShow supporting fields
citation_idstringrequiredId of the citation taking this side
quotestringrequiredThe text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves
sourcestringrequiredThe source, by url where known and by domain otherwise
correction_statusstringWhether a source-backed replacement statement is available
Values: "available""not_established""conflicted""not_needed"
correctionsobject[]Corrections when the claim contains inaccuracies
Show corrections fields
actualstringlegacyDeprecated v1 alias of corrected_statement
citation_idsstring[]requiredIDs of citations that support this correction
claimedstringrequiredWhat the user originally claimed
corrected_statementstringrequiredA standalone replacement statement supported by the cited evidence
proofobject[]requiredShow proof fields
citation_idstringrequiredquotestringrequiredExact passage copied from the cited source excerpt
document_breakdownobjectStance counts over every document analysed, before syndicated copies of one telling were collapsed into a single origin.
Show document_breakdown fields
contradictsnumberrequiredNumber of citations that contradict the claim
inconclusivenumberNumber of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.
irrelevantnumberNumber of citations judged off-topic. Excluded from every verdict denominator.
neutralnumberrequiredNumber of citations that took no side. This counts the neutral stance only. It previously also absorbed inconclusive and unscored citations, which are now reported in their own fields below.
partially_supportsnumberrequiredNumber of citations that partially support the claim
supportsnumberrequiredNumber of citations that fully support the claim
unknownnumberNumber of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.
document_countnumberDocuments analysed. Reported for transparency; origin_count is what the verdict counts.
insufficient_evidencebooleanTrue when the counts were split but no two sources could be quoted disagreeing, so the split was reported as unverifiable rather than as a controversy.
key_findingsobject[]Key facts extracted from citations (only with useEnhancedAnalysis)
Show key_findings fields
citation_idsstring[]requiredIDs of citations that support this finding
confidencenumberrequiredLegacy model finding score (0-100); not calibrated truth confidence
confidence_availablebooleanTrue only when calibrated confidence is available
confidence_basisstringValues: "unknown""heuristic""calibrated"
findingstringrequiredA key fact extracted from the citations
origin_countnumberDistinct origins behind those documents. Four outlets running one wire story are four documents and one origin, and only this number votes.
resultstringrequiredOverall verdict based on citation analysis
Values: "supported""partially_supported""contradicted""mixed""unverifiable"
stance_breakdownobjectrequiredBreakdown of citation stances over distinct ORIGINS, which is what the verdict is computed from. For the raw per-document counts before origins were collapsed, see document_breakdown.
Show stance_breakdown fields
contradictsnumberrequiredNumber of citations that contradict the claim
inconclusivenumberNumber of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.
irrelevantnumberNumber of citations judged off-topic. Excluded from every verdict denominator.
neutralnumberrequiredNumber of citations that took no side. This counts the neutral stance only. It previously also absorbed inconclusive and unscored citations, which are now reported in their own fields below.
partially_supportsnumberrequiredNumber of citations that partially support the claim
supportsnumberrequiredNumber of citations that fully support the claim
unknownnumberNumber of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.
summarystringrequiredHuman-readable summary of the findings
unverified_claimsstring[]Parts of the claim that could not be verified by any source
contentstringText content from agent (for non-citation responses)
domain_groupsobject[]legacy[DEPRECATED] Use claim_groups[n].domain_groups instead. Legacy domain grouping.
Show domain_groups fields
domainstringrequiredDomain that groups these citations
domain_categorystringrequiredCategory of this domain
Values: "government""academic""news""organization""encyclopedia""social""other"
group_idstringrequiredUnique identifier for this domain group
group_stancestringrequiredOverall stance of citations from this domain
Values: "supports""contradicts""mixed""neutral"
primary_citation_idstringrequiredID of the primary (highest-ranked) citation from this domain
generated_promptsstring[]Generated sub-prompts when useMultiplePrompt is enabled
operation_idstring | nullBilling operation identifier on public v1 responses; null when no operation was recorded.
search_metadataobjectMetadata about the search and analysis process
Show search_metadata fields
analysis_modelstringrequiredAI model used for analysis
processing_time_msnumberrequiredTotal processing time in milliseconds
relevant_sources_foundnumberrequiredNumber of relevant sources found and included
total_sources_searchednumberrequiredTotal number of sources searched
thread_idstringThread ID for conversation continuity
totalResultsnumberTotal number of citations across all claims
usageobjectBilling usage on public v1 responses.
Show usage fields
creditsnumber | nullrequiredCredits actually deducted; null when a priced operation was not metered. Zero denotes a genuinely free operation.
verdictobjectlegacy[DEPRECATED] Use claim_groups[n].verdict instead. Legacy overall verdict.
Show verdict fields
aggregation_scorenumberLegacy aggregate score retained for compatibility
calibrated_confidencenumber | nullclaimstringrequiredThe original prompt/claim that was analyzed
confidencenumberrequiredLegacy aggregation score (0-100); use confidence_available and calibrated_confidence for calibration status
confidence_availablebooleanTrue only when calibrated confidence is available
confidence_basisstringValues: "unknown""heuristic""calibrated"
conflictobject | nullThe quoted, named pair of sources behind a "mixed" verdict. Null for every other verdict.
Show conflict fields
contradictingobjectrequiredShow contradicting fields
citation_idstringrequiredId of the citation taking this side
quotestringrequiredThe text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves
sourcestringrequiredThe source, by url where known and by domain otherwise
supportingobjectrequiredShow supporting fields
citation_idstringrequiredId of the citation taking this side
quotestringrequiredThe text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves
sourcestringrequiredThe source, by url where known and by domain otherwise
correction_statusstringWhether a source-backed replacement statement is available
Values: "available""not_established""conflicted""not_needed"
correctionsobject[]Corrections when the claim contains inaccuracies
Show corrections fields
actualstringlegacyDeprecated v1 alias of corrected_statement
citation_idsstring[]requiredIDs of citations that support this correction
claimedstringrequiredWhat the user originally claimed
corrected_statementstringrequiredA standalone replacement statement supported by the cited evidence
proofobject[]requiredShow proof fields
citation_idstringrequiredquotestringrequiredExact passage copied from the cited source excerpt
document_breakdownobjectStance counts over every document analysed, before syndicated copies of one telling were collapsed into a single origin.
Show document_breakdown fields
contradictsnumberrequiredNumber of citations that contradict the claim
inconclusivenumberNumber of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.
irrelevantnumberNumber of citations judged off-topic. Excluded from every verdict denominator.
neutralnumberrequiredNumber of citations that took no side. This counts the neutral stance only. It previously also absorbed inconclusive and unscored citations, which are now reported in their own fields below.
partially_supportsnumberrequiredNumber of citations that partially support the claim
supportsnumberrequiredNumber of citations that fully support the claim
unknownnumberNumber of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.
document_countnumberDocuments analysed. Reported for transparency; origin_count is what the verdict counts.
insufficient_evidencebooleanTrue when the counts were split but no two sources could be quoted disagreeing, so the split was reported as unverifiable rather than as a controversy.
key_findingsobject[]Key facts extracted from citations (only with useEnhancedAnalysis)
Show key_findings fields
citation_idsstring[]requiredIDs of citations that support this finding
confidencenumberrequiredLegacy model finding score (0-100); not calibrated truth confidence
confidence_availablebooleanTrue only when calibrated confidence is available
confidence_basisstringValues: "unknown""heuristic""calibrated"
findingstringrequiredA key fact extracted from the citations
origin_countnumberDistinct origins behind those documents. Four outlets running one wire story are four documents and one origin, and only this number votes.
resultstringrequiredOverall verdict based on citation analysis
Values: "supported""partially_supported""contradicted""mixed""unverifiable"
stance_breakdownobjectrequiredBreakdown of citation stances over distinct ORIGINS, which is what the verdict is computed from. For the raw per-document counts before origins were collapsed, see document_breakdown.
Show stance_breakdown fields
contradictsnumberrequiredNumber of citations that contradict the claim
inconclusivenumberNumber of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.
irrelevantnumberNumber of citations judged off-topic. Excluded from every verdict denominator.
neutralnumberrequiredNumber of citations that took no side. This counts the neutral stance only. It previously also absorbed inconclusive and unscored citations, which are now reported in their own fields below.
partially_supportsnumberrequiredNumber of citations that partially support the claim
supportsnumberrequiredNumber of citations that fully support the claim
unknownnumberNumber of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.
summarystringrequiredHuman-readable summary of the findings
unverified_claimsstring[]Parts of the claim that could not be verified by any source
Errors
For 400, check the request fields and source identifiers. For 401, check your API key. For 429, wait for the retry interval. See the errors guide before retrying a billable request.
401- Unauthorized - API key required
429- Rate limit exceeded