curl -X POST https://api.tryprofound.com/v2/reports/factcheck/claims \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"include": ["reasoning", "citation_sources"]
}'
{
"info": {
"total_results": 41,
"count": 25,
"next_cursor": "eyJ…",
"models": ["ChatGPT", "Google Gemini", "Perplexity", "Claude", "..."],
"group_by": [],
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"filter": null,
"include": ["reasoning", "citation_sources"]
},
"data": [
{
"cluster_id": "7a576…",
"claim": "Profound covers more than 10 AI engines.",
"occurrence": 6.6,
"reasoning": "Conflates GEO tooling with the engines Profound actually tracks.",
"citation_sources": [
{
"href": "tryprofound.com/blog/best-geo-tools",
"hostname": "tryprofound.com",
"citation_category": "owned",
"domain_category": "owned",
"snippet": "Profound tracks ten answer engines…",
"citation_share": 14.2
}
]
}
]
}
FactCheck
FactCheck Claims
POST
/
v2
/
reports
/
factcheck
/
claims
curl -X POST https://api.tryprofound.com/v2/reports/factcheck/claims \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"include": ["reasoning", "citation_sources"]
}'
{
"info": {
"total_results": 41,
"count": 25,
"next_cursor": "eyJ…",
"models": ["ChatGPT", "Google Gemini", "Perplexity", "Claude", "..."],
"group_by": [],
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"filter": null,
"include": ["reasoning", "citation_sources"]
},
"data": [
{
"cluster_id": "7a576…",
"claim": "Profound covers more than 10 AI engines.",
"occurrence": 6.6,
"reasoning": "Conflates GEO tooling with the engines Profound actually tracks.",
"citation_sources": [
{
"href": "tryprofound.com/blog/best-geo-tools",
"hostname": "tryprofound.com",
"citation_category": "owned",
"domain_category": "owned",
"snippet": "Profound tracks ten answer engines…",
"citation_share": 14.2
}
]
}
]
}
The inaccurate claims behind your accuracy score: the false statements AI
answers made about your category, from the platform’s FactCheck tab. Returns a
flat, paginated list, or
group_by one dimension to section them. A claim is
{ cluster_id, claim, occurrence } plus whatever include adds.
occurrence: the % of scoped responses that carry the claim.include: any oftheme,reasoning,models,evidence,citation_sources.models[]— which models make the claim:{ id, name, occurrence }.evidence[]— refuting knowledge-base snippets:{ id, kb_path, kb_snippet, source_updated_at }.citation_sources[]— the cited pages driving the claim:{ href, hostname, citation_category, domain_category, snippet, citation_share }.citation_shareis a percentage, model-balanced, matching the Citations tab.
group_by: 0 or 1 ofmodel,region,persona,prompt,topic,tag,theme(nocitationordate: those are scores dimensions). Empty → one flat paginated list; a dimension → one section per value:{ <dim>: { id, name }, accuracy, accurate, inaccurate, total_claims, claims: […] }, each carrying all its claims.filter: the same constrained tree as scores, a top-levelandof single-field leaves overmodel/topic/region/persona/prompt/tag(onlytopicnegatable).
A few guardrails return
422 (with a message): citation_sources isn’t available with group_by (its share is scope-sensitive) — request it on the flat list; group_by: ["tag"] can’t be combined with a tag filter (tags are multi-valued, so co-tag sections would escape the filter); and sectioning by model over an unusually large scope (>~2000 inaccurate clusters) — narrow the range or filter.Streaming (SSE) variant (same body, /stream)
Streaming (SSE) variant (same body, /stream)
POST /v2/reports/factcheck/claims/stream takes the same request body
and returns Server-Sent Events:
one summary event (the info block), then one result event per claim.
limit/cursor are ignored; it returns everything by default. Pass
max_results to cap.The stream is the flat list only: group_by and the per-claim
evidence/citation_sources lookups return 422; use the non-stream
endpoint for sectioned or enriched claims.Response (text/event-stream)
event: summary
data: { ...the info block... }
event: result ← one per claim, same shape as data[] above
data: {"cluster_id": "7a5…", "claim": "Profound covers more than 10 AI engines.", "occurrence": 6.6}
curl -X POST https://api.tryprofound.com/v2/reports/factcheck/claims \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"include": ["reasoning", "citation_sources"]
}'
{
"info": {
"total_results": 41,
"count": 25,
"next_cursor": "eyJ…",
"models": ["ChatGPT", "Google Gemini", "Perplexity", "Claude", "..."],
"group_by": [],
"start_date": "2026-06-09",
"end_date": "2026-06-15",
"filter": null,
"include": ["reasoning", "citation_sources"]
},
"data": [
{
"cluster_id": "7a576…",
"claim": "Profound covers more than 10 AI engines.",
"occurrence": 6.6,
"reasoning": "Conflates GEO tooling with the engines Profound actually tracks.",
"citation_sources": [
{
"href": "tryprofound.com/blog/best-geo-tools",
"hostname": "tryprofound.com",
"citation_category": "owned",
"domain_category": "owned",
"snippet": "Profound tracks ten answer engines…",
"citation_share": 14.2
}
]
}
]
}
Authorizations
APIKeyHeaderBearerAuth
Body
application/json
The inaccurate claims — flat + paginated, or group_by one dim to section them (all claims per section).
YYYY-MM-DD, ET, inclusive
YYYY-MM-DD, ET, inclusive
Optional single dim to section the claims (e.g. per model). Empty → one flat claim list.
Maximum array length:
1Available options:
model, region, persona, prompt, topic, tag, theme Scope which responses count (see Filtering).
Show child attributes
Show child attributes
Optional per-claim detail fields to add to each claim (see options).
Available options:
theme, reasoning, models, evidence, citation_sources Claims (or sections) per page; default 25.
Required range:
0 < x <= 100Stream only: cap entries returned.
Required range:
x > 0Was this page helpful?