Skip to content
Documentation/Sources & citations

Search sources

Find sources for a query without requesting stance analysis or a verdict.

Markdown
POST/api/v1/sources/searchhttps://api.webcite.co

When 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
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

filtersobject

Applied 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[]
minItems: 1maxItems: 20
is_primary_sourceboolean
publication_yearobject
Show publication_year fields
frominteger
minimum: 1000maximum: 9999
tointeger
minimum: 1000maximum: 9999
source_typestring[]
minItems: 1maxItems: 20
limitnumber

Maximum number of sources to return (1-20)

Default: 10

minimum: 1maximum: 20
querystringrequired

Search 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
authorstringrequired

Author or domain name

credibility_basisstring

Whether 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_scorenumberrequired

Credibility/relevance score from 1-100 (higher = more credible/relevant/authoritative)

evidenceobject

Publisher evidence receipt v1: state, originalUrl, finalUrl, contentHash, retrievedAt, quoteMatch, typed publisher dates, retention, replayable and failureReason. Missing on legacy records means unknown provenance.

group_idstring

Group ID for citations from the same domain

highlight_rangesstring[]

Character ranges [start, end] in snippet that are most relevant to the claim

idstringrequired

Unique citation identifier

is_group_primaryboolean

Whether this is the primary (highest-ranked) citation from its domain group

publication_yearnumber

Publication year of the cited source

ranknumberrequired

Sequential rank (1, 2, 3...) where rank 1 is the highest/best citation, based on credibility_score and verified status

ranking_factorsobject

Breakdown of how the ranking score was calculated

Show ranking_factors fields
content_relevancenumberrequired

How well the content matches the claim being verified (0-100).

recencynumberrequired

Publication freshness score (0-100). Current year = 100, decreases with age.

source_authoritynumberrequired

Domain reputation score (0-100). Higher scores for government, academic, major news sources.

snippetstringrequired

Relevant excerpt from the source

source_metadataobject

Additional metadata about the source

Show source_metadata fields
domainstringrequired

Extracted domain from URL

domain_categorystringrequired

Category of the source domain

Values: "government""academic""news""organization""encyclopedia""social""other"

is_fact_check_sitebooleanrequired

Whether this is a fact-checking website (snopes, politifact, etc.)

is_primary_sourcebooleanrequired

Whether this is a primary source (government, official, press release)

source_typestring

Source type: Government Document, Dataset, Journal, Report, Trusted Media, Article, Reddit, Social Media

Values: "Government Document""Dataset""Journal""Report""Trusted Media""Article""Reddit""Social Media"

stancestring

Whether this citation supports or contradicts the claim (only with useEnhancedAnalysis)

Values: "supports""contradicts""partially_supports""neutral""inconclusive"

stance_confidencenumber

Confidence in the stance assessment (0-100)

stance_explanationstring

Brief explanation of the stance determination

statusstringrequired

Verification status of the citation

titlestringrequired

Title of the cited source

urlstringrequired

URL 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_countnumberrequired

Number of citations for this claim

citationsobject[]required

All citations for this claim (full objects with stance, ranking, etc.)

Show citations fields
authorstringrequired

Author or domain name

credibility_basisstring

Whether 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_scorenumberrequired

Credibility/relevance score from 1-100 (higher = more credible/relevant/authoritative)

evidenceobject

Publisher evidence receipt v1: state, originalUrl, finalUrl, contentHash, retrievedAt, quoteMatch, typed publisher dates, retention, replayable and failureReason. Missing on legacy records means unknown provenance.

group_idstring

Group ID for citations from the same domain

highlight_rangesstring[]

Character ranges [start, end] in snippet that are most relevant to the claim

idstringrequired

Unique citation identifier

is_group_primaryboolean

Whether this is the primary (highest-ranked) citation from its domain group

publication_yearnumber

Publication year of the cited source

ranknumberrequired

Sequential rank (1, 2, 3...) where rank 1 is the highest/best citation, based on credibility_score and verified status

ranking_factorsobject

Breakdown of how the ranking score was calculated

Show ranking_factors fields
content_relevancenumberrequired

How well the content matches the claim being verified (0-100).

recencynumberrequired

Publication freshness score (0-100). Current year = 100, decreases with age.

source_authoritynumberrequired

Domain reputation score (0-100). Higher scores for government, academic, major news sources.

snippetstringrequired

Relevant excerpt from the source

source_metadataobject

Additional metadata about the source

Show source_metadata fields
domainstringrequired

Extracted domain from URL

domain_categorystringrequired

Category of the source domain

Values: "government""academic""news""organization""encyclopedia""social""other"

is_fact_check_sitebooleanrequired

Whether this is a fact-checking website (snopes, politifact, etc.)

is_primary_sourcebooleanrequired

Whether this is a primary source (government, official, press release)

source_typestring

Source type: Government Document, Dataset, Journal, Report, Trusted Media, Article, Reddit, Social Media

Values: "Government Document""Dataset""Journal""Report""Trusted Media""Article""Reddit""Social Media"

stancestring

Whether this citation supports or contradicts the claim (only with useEnhancedAnalysis)

Values: "supports""contradicts""partially_supports""neutral""inconclusive"

stance_confidencenumber

Confidence in the stance assessment (0-100)

stance_explanationstring

Brief explanation of the stance determination

statusstringrequired

Verification status of the citation

titlestringrequired

Title of the cited source

urlstringrequired

URL of the cited source

claimstringrequired

The claim/sub-prompt text

claim_idstringrequired

Unique identifier for this claim group

claim_indexnumberrequired

Index of the claim (1-based)

domain_groupsobject[]

Citations grouped by domain (lightweight, for deduplication UI)

Show domain_groups fields
domainstringrequired

Domain that groups these citations

domain_categorystringrequired

Category of this domain

Values: "government""academic""news""organization""encyclopedia""social""other"

group_idstringrequired

Unique identifier for this domain group

group_stancestringrequired

Overall stance of citations from this domain

Values: "supports""contradicts""mixed""neutral"

primary_citation_idstringrequired

ID of the primary (highest-ranked) citation from this domain

stance_summarystringrequired

Overall stance summary based on citations

Values: "supported""contradicted""mixed""unverifiable"

verdictobject

Verdict for this claim (streamed as citations complete)

Show verdict fields
aggregation_scorenumber

Legacy aggregate score retained for compatibility

calibrated_confidencenumber | null
claimstringrequired

The original prompt/claim that was analyzed

confidencenumberrequired

Legacy aggregation score (0-100); use confidence_available and calibrated_confidence for calibration status

confidence_availableboolean

True only when calibrated confidence is available

confidence_basisstring

Values: "unknown""heuristic""calibrated"

conflictobject | null

The quoted, named pair of sources behind a "mixed" verdict. Null for every other verdict.

Show conflict fields
contradictingobjectrequired
Show contradicting fields
citation_idstringrequired

Id of the citation taking this side

quotestringrequired

The text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves

sourcestringrequired

The source, by url where known and by domain otherwise

supportingobjectrequired
Show supporting fields
citation_idstringrequired

Id of the citation taking this side

quotestringrequired

The text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves

sourcestringrequired

The source, by url where known and by domain otherwise

correction_statusstring

Whether a source-backed replacement statement is available

Values: "available""not_established""conflicted""not_needed"

correctionsobject[]

Corrections when the claim contains inaccuracies

Show corrections fields
actualstringlegacy

Deprecated v1 alias of corrected_statement

citation_idsstring[]required

IDs of citations that support this correction

claimedstringrequired

What the user originally claimed

corrected_statementstringrequired

A standalone replacement statement supported by the cited evidence

proofobject[]required
Show proof fields
citation_idstringrequired
quotestringrequired

Exact passage copied from the cited source excerpt

document_breakdownobject

Stance counts over every document analysed, before syndicated copies of one telling were collapsed into a single origin.

Show document_breakdown fields
contradictsnumberrequired

Number of citations that contradict the claim

inconclusivenumber

Number of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.

irrelevantnumber

Number of citations judged off-topic. Excluded from every verdict denominator.

neutralnumberrequired

Number 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_supportsnumberrequired

Number of citations that partially support the claim

supportsnumberrequired

Number of citations that fully support the claim

unknownnumber

Number of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.

document_countnumber

Documents analysed. Reported for transparency; origin_count is what the verdict counts.

insufficient_evidenceboolean

True 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[]required

IDs of citations that support this finding

confidencenumberrequired

Legacy model finding score (0-100); not calibrated truth confidence

confidence_availableboolean

True only when calibrated confidence is available

confidence_basisstring

Values: "unknown""heuristic""calibrated"

findingstringrequired

A key fact extracted from the citations

origin_countnumber

Distinct origins behind those documents. Four outlets running one wire story are four documents and one origin, and only this number votes.

resultstringrequired

Overall verdict based on citation analysis

Values: "supported""partially_supported""contradicted""mixed""unverifiable"

stance_breakdownobjectrequired

Breakdown 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
contradictsnumberrequired

Number of citations that contradict the claim

inconclusivenumber

Number of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.

irrelevantnumber

Number of citations judged off-topic. Excluded from every verdict denominator.

neutralnumberrequired

Number 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_supportsnumberrequired

Number of citations that partially support the claim

supportsnumberrequired

Number of citations that fully support the claim

unknownnumber

Number of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.

summarystringrequired

Human-readable summary of the findings

unverified_claimsstring[]

Parts of the claim that could not be verified by any source

contentstring

Text 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
domainstringrequired

Domain that groups these citations

domain_categorystringrequired

Category of this domain

Values: "government""academic""news""organization""encyclopedia""social""other"

group_idstringrequired

Unique identifier for this domain group

group_stancestringrequired

Overall stance of citations from this domain

Values: "supports""contradicts""mixed""neutral"

primary_citation_idstringrequired

ID of the primary (highest-ranked) citation from this domain

generated_promptsstring[]

Generated sub-prompts when useMultiplePrompt is enabled

operation_idstring | null

Billing operation identifier on public v1 responses; null when no operation was recorded.

search_metadataobject

Metadata about the search and analysis process

Show search_metadata fields
analysis_modelstringrequired

AI model used for analysis

processing_time_msnumberrequired

Total processing time in milliseconds

relevant_sources_foundnumberrequired

Number of relevant sources found and included

total_sources_searchednumberrequired

Total number of sources searched

thread_idstring

Thread ID for conversation continuity

totalResultsnumber

Total number of citations across all claims

usageobject

Billing usage on public v1 responses.

Show usage fields
creditsnumber | nullrequired

Credits 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_scorenumber

Legacy aggregate score retained for compatibility

calibrated_confidencenumber | null
claimstringrequired

The original prompt/claim that was analyzed

confidencenumberrequired

Legacy aggregation score (0-100); use confidence_available and calibrated_confidence for calibration status

confidence_availableboolean

True only when calibrated confidence is available

confidence_basisstring

Values: "unknown""heuristic""calibrated"

conflictobject | null

The quoted, named pair of sources behind a "mixed" verdict. Null for every other verdict.

Show conflict fields
contradictingobjectrequired
Show contradicting fields
citation_idstringrequired

Id of the citation taking this side

quotestringrequired

The text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves

sourcestringrequired

The source, by url where known and by domain otherwise

supportingobjectrequired
Show supporting fields
citation_idstringrequired

Id of the citation taking this side

quotestringrequired

The text this source actually carries, quoted rather than summarised, so a reader can check the disagreement themselves

sourcestringrequired

The source, by url where known and by domain otherwise

correction_statusstring

Whether a source-backed replacement statement is available

Values: "available""not_established""conflicted""not_needed"

correctionsobject[]

Corrections when the claim contains inaccuracies

Show corrections fields
actualstringlegacy

Deprecated v1 alias of corrected_statement

citation_idsstring[]required

IDs of citations that support this correction

claimedstringrequired

What the user originally claimed

corrected_statementstringrequired

A standalone replacement statement supported by the cited evidence

proofobject[]required
Show proof fields
citation_idstringrequired
quotestringrequired

Exact passage copied from the cited source excerpt

document_breakdownobject

Stance counts over every document analysed, before syndicated copies of one telling were collapsed into a single origin.

Show document_breakdown fields
contradictsnumberrequired

Number of citations that contradict the claim

inconclusivenumber

Number of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.

irrelevantnumber

Number of citations judged off-topic. Excluded from every verdict denominator.

neutralnumberrequired

Number 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_supportsnumberrequired

Number of citations that partially support the claim

supportsnumberrequired

Number of citations that fully support the claim

unknownnumber

Number of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.

document_countnumber

Documents analysed. Reported for transparency; origin_count is what the verdict counts.

insufficient_evidenceboolean

True 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[]required

IDs of citations that support this finding

confidencenumberrequired

Legacy model finding score (0-100); not calibrated truth confidence

confidence_availableboolean

True only when calibrated confidence is available

confidence_basisstring

Values: "unknown""heuristic""calibrated"

findingstringrequired

A key fact extracted from the citations

origin_countnumber

Distinct origins behind those documents. Four outlets running one wire story are four documents and one origin, and only this number votes.

resultstringrequired

Overall verdict based on citation analysis

Values: "supported""partially_supported""contradicted""mixed""unverifiable"

stance_breakdownobjectrequired

Breakdown 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
contradictsnumberrequired

Number of citations that contradict the claim

inconclusivenumber

Number of citations that looked at the claim and could not tell. Distinct from neutral, which is a source that took no side.

irrelevantnumber

Number of citations judged off-topic. Excluded from every verdict denominator.

neutralnumberrequired

Number 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_supportsnumberrequired

Number of citations that partially support the claim

supportsnumberrequired

Number of citations that fully support the claim

unknownnumber

Number of citations with no stance recorded. Never treated as agreement or as neutral: these were not scored, not scored as undecided.

summarystringrequired

Human-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
Error handling and retry guidance