DeepCitation Documentation
Verify AI citations against source documents. Visual proof for every claim.
Quick Navigation
| Section | Description |
|---|---|
| Getting Started | Installation and quick start guide |
| API Reference | REST API endpoints for file preparation and verification |
| Curl Guide | Direct API usage with curl examples |
| Types | TypeScript interface definitions |
| Verification Statuses | Understanding verification result statuses |
| Framework Guides | LangChain, Next.js App Router, Vercel AI SDK |
| Code Examples | SDK usage examples and patterns |
| Components | React CitationComponent documentation |
| Styling | CSS customization options |
| Error Handling | Production error patterns and retry logic |
How DeepCitation Works
- Install & Setup — Install, import types, initialize client, prepare sources, configure proof images
- Server Side — Wrap prompts, call your LLM, verify citations, optionally persist results
- Display with CitationComponent — Parse numeric
[N]markers viaparseCitationResponse, map to citation keys, render inline with verification status
Example Projects
Complete working examples are available on GitHub:
- Basic Verification - Simple file upload and verification
- Next.js AI SDK - Integration with Vercel AI SDK
Quick Install
npm install deepcitation
import { DeepCitation, wrapCitationPrompt, getAllCitationsFromLlmOutput } from "deepcitation";
const dc = new DeepCitation({ apiKey: process.env.DEEPCITATION_API_KEY });
// Prepare, wrap, verify in 3 steps
const { fileDataParts, deepTextPromptPortion } = await dc.prepareAttachments([{ file: pdfBuffer, filename: "report.pdf" }]);
const { enhancedSystemPrompt, enhancedUserPrompt } = wrapCitationPrompt({ systemPrompt, userPrompt, deepTextPromptPortion });
// ... call your LLM ...
const citations = getAllCitationsFromLlmOutput(response.content);
const { verifications } = await dc.verifyAttachment(fileDataParts[0].attachmentId, citations);