Verify Content
Submit content for verification using the POST /v1/verify endpoint.
Verify Content
Submit content for AI-powered verification analysis using Check's multi-paradigm verification system.
/v1/verifyAnalyze content and return a verification verdict with confidence score.
Request Body
Parameters
| Parameter | Type | Description |
|---|
Verification Options
Fine-tune verification behavior with the optional options object:
Options Parameters
| Parameter | Type | Description |
|---|
Verification Methods
Configure which methods to use and their relative weights:
| Method | FPR | Description | Speed |
|---|---|---|---|
formal | 0% | mathjs autoformalization for symbolic verification | Fast |
tool | ~1% | CLoVE contrastive web verification | Slow |
reasoning | ~4-5% | Adaptive self-refinement verification | Medium |
biprm | ~5-7% | Parallel bidirectional step-level scoring | Medium |
entropy | ~8-10% | Dual-path semantic entropy | Medium |
ensemble | ~15-20% | Meta-judge adjudicated consensus | Slow |
semantic | ~20-30% | Boltzmann energy embedding analysis | Fast |
FPR = False Positive Rate (lower is better for accuracy)
Methods Configuration
{
"methods": {
"reasoning": 1.0, // Full weight
"tool": 0.5, // Half weight
"ensemble": 0.25 // Quarter weight
}
}Weights influence the final confidence score calculation. Higher weights give more importance to that method's result.
Example Request
Response
Success Response (200)
{
"id": "ver_abc123def456",
"status": "completed",
"verdict": "uncertain",
"confidence": 0.72,
"decision": "escalate",
"reasoning": "While hydration is important for health, the specific '8 glasses' recommendation is not universally supported by scientific research. Individual water needs vary based on factors like activity level, climate, and diet.",
"paradigmResults": [
{
"paradigm": "reasoning",
"verdict": "uncertain",
"confidence": 0.70,
"reasoning": "The claim oversimplifies hydration needs. Scientific consensus acknowledges hydration is important but doesn't support a specific '8 glasses' rule.",
"processingTimeMs": 1200
},
{
"paradigm": "tool",
"verdict": "false",
"confidence": 0.85,
"reasoning": "Multiple authoritative sources (Mayo Clinic, NIH) indicate the '8x8 rule' is a myth. Actual needs vary by individual.",
"processingTimeMs": 2100,
"sources": [
"https://www.mayoclinic.org/...",
"https://www.nih.gov/..."
]
}
],
"processingTimeMs": 2340,
"cached": false,
"metadata": {
"source": "article-123"
},
"createdAt": "2024-01-15T10:30:00Z",
"completedAt": "2024-01-15T10:30:02Z"
}Response Fields
| Parameter | Type | Description |
|---|
Paradigm Result Fields
| Field | Type | Description |
|---|---|---|
paradigm | string | Method name (reasoning, tool, etc.) |
verdict | string | This method's verdict: "true", "false", "uncertain" |
confidence | number | This method's confidence score (0.0 to 1.0) |
reasoning | string | Explanation for this method's verdict |
processingTimeMs | number | Processing time for this method |
sources | array | (tool method only) URLs of sources consulted |
Decision Mapping
| Decision | Confidence | Condition | Recommended Action |
|---|---|---|---|
accept | >= 0.95 | High confidence | Content is verified, safe to use |
refine | 0.70 – 0.95 | Moderate confidence | Content may need clarification |
escalate | < 0.70 | Low confidence + paradigm disagreement | Flag for human review |
reject | < 0.70 | Low confidence + paradigm agreement | Content is likely false |
Error Responses
400 Bad Request - Missing Content
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"details": [{ "field": "content", "message": "Content is required" }],
"requestId": "req_abc123"
}
}400 Bad Request - No Methods
{
"error": {
"code": "validation_error",
"message": "Validation failed",
"details": [{ "field": "methods", "message": "At least one verification method is required" }],
"requestId": "req_abc123"
}
}429 Rate Limited
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded. Try again in 60 seconds.",
"retryAfter": 60,
"requestId": "req_abc123"
}
}403 Quota Exceeded
{
"error": {
"code": "usage_limit_exceeded",
"message": "Monthly verification limit reached. Upgrade your plan.",
"limit": 1000,
"used": 1000,
"resetDate": "2024-02-01T00:00:00Z",
"requestId": "req_abc123"
}
}Use Cases
Fast Verification (Chatbots)
For real-time applications where speed matters:
const result = await client.verifyAndWait({
content: 'Paris is the capital of France.',
methods: { reasoning: 1.0 } // Single method, ~500ms
});High-Accuracy Verification (Important Content)
For content where accuracy is critical:
const result = await client.verifyAndWait({
content: 'This medication should be taken twice daily.',
methods: {
reasoning: 1.0,
tool: 1.0, // Web search for verification
ensemble: 0.5 // Multi-model consensus
},
context: { domain: 'medical' }
});Mathematical Claims
For verifiable mathematical statements:
const result = await client.verifyAndWait({
content: 'The square root of 144 is 12.',
methods: { formal: 1.0 } // 0% FPR for math
});With Webhook Notification
For async processing without polling:
const response = await client.verify({
content: 'Your content here',
methods: { reasoning: 1.0, tool: 0.5 },
webhookUrl: 'https://your-app.com/webhooks/check'
});
// Response returns immediately with ID
console.log(response.id); // 'ver_abc123'
// Results delivered via webhook when completeFor real-time applications, consider using webhooks with multiple methods to get accurate results asynchronously without blocking your application.
Polling for Results
If you don't use webhooks, you can poll for results:
// Start verification
const response = await client.verify({
content: 'Your content',
methods: { reasoning: 1.0 }
});
// Poll for completion
let result = await client.getVerification(response.id);
while (result.status === 'pending' || result.status === 'processing') {
await new Promise(r => setTimeout(r, 1000)); // Wait 1 second
result = await client.getVerification(response.id);
}
console.log(result.verdict);Or use the SDK's built-in verifyAndWait method which handles polling automatically.