Document Intelligence API — Parse any document. Get structured JSON.
15 APIs for invoices, receipts, contracts, resumes, and more. One subscription. Built for developers who ship fast.
# Install dependencies
npm install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your credentials
# Run development server
npm run devAll endpoints: POST /api/v1/[endpoint]
POST /v1/invoice/extract— Extract structured invoice dataPOST /v1/receipt/extract— Extract receipt data with items and totalsPOST /v1/bank-statement/parse— Parse bank statements into transactionsPOST /v1/document/classify— Classify document type and languagePOST /v1/business-card/scan— Extract contact info from business cardsPOST /v1/form/digitize— Extract form fields and values
POST /v1/resume/parse— Parse resume into structured candidate dataPOST /v1/contract/summarize— Summarize contracts with risks and clausesPOST /v1/reviews/sentiment— Analyze sentiment of product reviewsPOST /v1/image/alt-text— Generate alt text and accessibility metadataPOST /v1/moderation/classify— Classify text for toxicity and harmful contentPOST /v1/jobs/analyze— Analyze job descriptions for skills and biasPOST /v1/screenshot/to-css— Convert screenshots to HTML/CSS/React codePOST /v1/code/review-summary— Review code diffs and summarize changesPOST /v1/dev/changelog— Generate changelogs from commit messages
POST /v1/upload— Upload file for reuse across callsPOST /v1/convert— Convert between 15 format pairsGET /v1/jobs/:id— Poll async job status
All API endpoints require an X-API-Key header.
curl -X POST https://api.parsetools.dev/v1/invoice/extract \
-H "X-API-Key: sk_live_..." \
-F "file=@invoice.pdf"| Layer | Choice |
|---|---|
| Framework | Next.js 14 App Router, TypeScript strict |
| Auth | Supabase Auth |
| Database | Supabase Postgres + Row Level Security |
| File uploads | Vercel Blob |
| Rate limiting | Upstash Redis |
| Payments | Stripe |
| Resend | |
| Vision/OCR | Configurable (GLM-4V default) |
| Text/NLP | Configurable (DeepSeek default) |
| UI | shadcn/ui + Tailwind CSS |
Required environment variables (see .env.example):
NEXT_PUBLIC_SUPABASE_URL/SUPABASE_SERVICE_ROLE_KEY— SupabaseVISION_API_KEY/VISION_API_BASE/VISION_MODEL— Vision modelTEXT_API_KEY/TEXT_API_BASE/TEXT_MODEL— Text modelUPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKEN— Rate limitingSTRIPE_SECRET_KEY— Stripe payments
Run the SQL in supabase/schema.sql against your Supabase project.
app/
(marketing)/ ← Landing, pricing, status pages
(auth)/ ← Login, signup
(dashboard)/ ← Authenticated user app
(admin-layout)/admin/ ← Admin panel
api/v1/ ← 15 API endpoints
api/webhooks/ ← Stripe webhook
api/health/ ← Health check
lib/
middleware/auth.ts ← API key validation + rate limiting
middleware/admin.ts ← Admin session validation
ocr.ts ← OCR adapter
models.ts ← Vision + text model router
files.ts ← File upload handler
stripe.ts ← Stripe helpers
resend.ts ← Email helpers
supabase.ts ← Supabase clients
Deploy to Vercel:
vercel --prodSet all environment variables in the Vercel dashboard.