Document Analysis
Analyze documents for AI generation, manipulation, and authenticity. Supports PDF, DOCX, image files, and raw text. Uses entropy analysis, watermark detection, and LLM-based forensic examination.
Endpoint
Code
POST https://signal-stack-ten.vercel.app/v1/verify/documentRequest parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
source | string | Yes | url, upload, or raw |
content | string | Yes | URL, base64-encoded file, or raw text |
mime_type | string | No | MIME type hint (e.g. application/pdf) |
check_deepfakes | boolean | No | Run deepfake/entropy analysis (default: true) |
check_watermarks | boolean | No | Detect C2PA and other digital watermarks |
Response schema
| Field | Type | Description |
|---|---|---|
id | string | Unique request identifier |
trust_score | number | Authenticity confidence (0.0–1.0) |
ai_generated_probability | number | Probability content is AI-generated (0.0–1.0) |
manipulation_flags | string[] | Detected manipulation types |
watermark | object | Digital watermark info (if found) |
metadata | object | Extracted document metadata |
evidence | array | Source evidence chain |
dimensions | object | Per-dimension trust sub-scores |
latency_ms | number | Processing time in milliseconds |
Manipulation flags
| Flag | Description |
|---|---|
ai_generated_text | Text exhibits LLM generation patterns |
image_manipulated | Image has been edited or spliced |
metadata_stripped | Original metadata has been removed |
deepfake | Deepfake manipulation detected in media |
inconsistent_timestamps | Document timestamps are inconsistent |
signature_forgery | Digital signature anomaly detected |
Request example
Code
{
"source": "url",
"content": "https://example.com/report.pdf",
"mime_type": "application/pdf",
"check_deepfakes": true,
"check_watermarks": true
}Response example
Code
{
"id": "vrf_doc_e5f6a7b8",
"trust_score": 0.31,
"ai_generated_probability": 0.87,
"manipulation_flags": [
"ai_generated_text",
"metadata_stripped"
],
"watermark": null,
"metadata": {
"author": null,
"created_at": null,
"producer": "Unknown",
"page_count": 12
},
"evidence": [
{
"source": "entropy_analysis",
"finding": "Text entropy profile matches GPT-4 generation patterns (p=0.87)",
"authority_score": 0.91
}
],
"dimensions": {
"source_authority": 0.91,
"cross_reference": 0.45,
"recency": 0.72,
"llm_analysis": 0.88
},
"latency_ms": 1450,
"credits_used": 3
}Code examples
Python
Code
import signalstack
from signalstack.types import DocumentSource
client = signalstack.SignalStack(api_key="ssk_live_...")
result = client.verify.document(
source=DocumentSource.URL,
content="https://example.com/report.pdf",
check_deepfakes=True,
)
print(f"AI probability: {result.ai_generated_probability}")
print(f"Flags: {result.manipulation_flags}")cURL
Code
curl -X POST https://signal-stack-ten.vercel.app/v1/verify/document -H "Authorization: Bearer $SIGNALSTACK_API_KEY" -H "Content-Type: application/json" -d '{
"source": "url",
"content": "https://example.com/report.pdf",
"check_deepfakes": true
}'TypeScript
Code
import { SignalStack, DocumentSource } from "@signalstack/sdk"
const client = new SignalStack({ apiKey: process.env.SIGNALSTACK_API_KEY! })
const result = await client.verify.document({
source: DocumentSource.URL,
content: "https://example.com/report.pdf",
checkDeepfakes: true,
})
console.log(`AI probability: ${result.aiGeneratedProbability}`)
console.log(`Manipulation flags: ${result.manipulationFlags}`)