Tools
Resume to Markdown API
Submit a resume or CV as a PDF. Get back name, experience, education, and skills as a readable Markdown document. No templates, no training.
Try it below:
Turn resumes into Markdown
Upload a resume PDF or submit a URL, get Markdown back.
What is Exabase's resume to Markdown API?
Submit a resume or CV as a PDF to the Exabase Extract API and get a Markdown document back instead of JSON. The API detects the document type automatically, extracts resume-specific fields (name, email, phone, summary, experience, education, skills), and renders them as a structured Markdown document. Pass ?format=markdown when retrieving the result.
The Markdown output includes document metadata at the top, followed by a ## Document section, then a ## Resume section with all the extracted structured fields. Work experience is rendered as a nested list with company, title, dates, and description for each role. Education and skills follow. The result is ready to feed into an LLM for candidate analysis, present to a recruiter for review, or store as a readable candidate record.
What you get back
The ## Resume section contains name, email, phone, professional summary, experience (each role with company, title, start date, end date, and description), education (institution, degree, graduation date), and skills (as a list). No template configuration, no field mapping. The API recognises the resume and renders the structured data automatically.
You can also configure webhooks with webhookFormat: "markdown" so completed jobs POST the Markdown document directly to your server.
One multi-modal API
The same POST /v2/extract endpoint handles every content type Exabase supports, and the ?format=markdown parameter works across all of them. For resumes, the structured fields render under a ## Resume heading. For invoices: vendor, line items, and totals under ## Invoice. For contracts: parties, dates, and clauses under ## Contract.
The submission flow is identical across all types. The Extract docs cover each content type in detail.
What you can build with it
Feed resume content into an LLM as readable Markdown for automated candidate screening. Present parsed resumes to recruiting agents or hiring managers as readable documents without opening the original PDF. Build an ATS integration where resumes are extracted, reviewed as Markdown, and indexed for search.
Store parsed resumes as Resources in a Base and search across all candidates through Deep Search. Workers can process new resumes as they arrive.
Beyond Markdown
The Extract API also returns JSON (the default) with typed fields for programmatic processing. Use Markdown for LLM context and human review, JSON for ATS integration and candidate database queries. The Resume to JSON tool page covers the JSON output.
How do I use it?
Get your API key
Free, no credit card:
Sign up at exabase.io and copy your API key from the dashboard.
Submit a resume PDF
Using the SDK (Node.js):
Get Markdown back
Poll the job until state reaches completed, or skip polling entirely with webhooks.
One API call. No templates, no field mapping, no Markdown conversion.
Why Exabase
Comparisons
Works with other Exabase features
FAQs
What is Exabase?
Exabase is infrastructure for AI agents. It gives your agents memory, versioned file storage, AI deep search, and context automation through a set of APIs. Store what your agent learns, search inside any content type, and keep knowledge bases current automatically. Built for production use. Give your agent precise context and cut your token spend by up to 81%.
Who uses Exabase?
Developers and teams building AI agents, copilots, and RAG applications. If your agent needs to remember things between sessions, store and retrieve files, search across documents and media, or stay up to date without manual maintenance, Exabase handles that infrastructure so you can focus on your product.
Do I need to configure templates for different resume formats?
No. The API detects resumes and extracts structured fields automatically. No template setup, no per-format configuration. It handles single-column, multi-column, and creative layouts.
How do I get Markdown instead of JSON?
Add ?format=markdown to the GET /v2/extract/{jobId} request. For webhooks, set webhookFormat: "markdown".
What fields does the Markdown include?
Name, email, phone, summary, experience (company, title, dates, description), education (institution, degree, graduation date), and skills. Rendered under a ## Resume heading.
Can I still get JSON?
Yes. JSON is the default. For programmatic processing, Resume to JSON returns typed fields.
Does it handle CVs in other languages?
The API processes the text regardless of language. Structured field extraction works best with English-language resumes. Other languages may produce partial results for the structured section, but document metadata and text are still returned.
What if the API doesn't recognise it as a resume?
The ## Resume section will be absent. You still get document metadata and text in the Markdown output.
Does it handle scanned resumes?
Yes. OCR is built in.
How long are files retained?
Stored files are retained for 1 day from job creation, then permanently deleted. Download or copy anything you need before the retention window expires.
How should I handle candidate data privacy?
Exabase encrypts data in transit (SSL) and at rest (AES-256), and stored files are automatically deleted after 1 day. Your data handling obligations (GDPR, CCPA, or local requirements) are determined by your own deployment and use case. Route compliance decisions to your own review.
Do I have to poll for results?
No. Configure a webhook with webhookFormat: "markdown".
Is there an SDK?
Yes. The @exabase/sdk package for Node.js/TypeScript handles file streaming, job polling, and chunk retrieval. Install with npm install @exabase/sdk. Or call the REST API directly from any language.
What other document types does Extract recognise?
Invoices and contracts can also get extracted into Markdown. See the Invoice to JSON and Contract to JSON tool pages. General PDFs return text chunks and metadata without the structured object. The same endpoint also handles images, audio, video, and web pages.