Convert documents from your agent without building the parsing pipeline yourself.
JustMarkdown exposes an async conversion API for agent workflows. Submit one job per document, poll until completion, and download the Markdown — plus a synchronous Markdown → PDF endpoint. You do not need to build your own OCR or PDF parsing pipeline.
API keys are only used by the remote MCP endpoint /api/mcp — /api/jobs uses your session or a guest cookie.
# One request in, one job out curl -X POST https://justmarkdown.com/api/jobs \ -F "files=@paper.pdf" \ -F "formatSlug=pdf-to-markdown" \ -F "mode=single" # → 200 OK { "job": { "id": "job_a1b2c3d4", "status": "queued", "results": [], "zipDownloadUrl": null } }
One request in, one job out.
Submit a document, get a job ID, poll until done, download the result. That's the whole loop.
Submit one job per document
POST your file to /api/jobs with formatSlug and mode. Get back a job ID and poll URL.
Poll until completion
GET /api/jobs/{jobId} for status. When status is "completed", the download URLs in results are ready.
Download once ready
Fetch the Markdown from /api/jobs/{jobId}/artifact. Available for 24 hours after completion.
Seven endpoints, that's it.
Sync Markdown → PDF
Send JSON (markdown + theme + pageSize), get PDF binary back directly. No auth — ideal for one-shot renders.
Submit an async job
Multipart upload (files + formatSlug + mode). Returns a job object and poll URL. Requires a session or guest cookie plus Cloudflare verification; scanned OCR requires sign-in. Scanned OCR is billed 1 credit per page (text-based PDFs are free); audio is 1 credit per started minute.
Poll job status
Returns the job status (queued / processing / completed / failed) and result download links.
Download the artifact
Fetch a single Markdown by fileId, or pass type=zip for a batch ZIP. Available for 24h after completion.
SSE event stream
Server-Sent Events push status changes in real time — no polling needed. Stays open until completed or failed.
Sync Markdown → Word
Send Markdown (optionally with template and images) and get a .docx document back directly.
Remote MCP endpoint
Streamable HTTP MCP endpoint exposing tools such as convert_url and convert_base64, callable directly from Claude, Cursor, and other clients. Account-key calls are a flat 1 credit per conversion.
Use it as an MCP tool.
The same API is exposed as a Model Context Protocol tool — drop it into Claude, Cursor, or any MCP-compatible agent.
// claude_desktop_config.json — remote, nothing to install, documents → Markdown { "mcpServers": { "justmarkdown": { "type": "http", "url": "https://justmarkdown.com/api/mcp", // Optional: omit for the anonymous free tier (a few conversions per day). "headers": { "Authorization": "Bearer jm_live_…" } } } }
// claude_desktop_config.json — local stdio bridge to the remote tools { "mcpServers": { "justmarkdown": { "command": "npx", "args": ["-y", "justmarkdown"] } } }
What the API can do.
Async job queue
Submit and forget — poll when convenient, or subscribe to the SSE stream. Most documents finish in seconds; scanned-PDF OCR can take a few minutes.
Markdown → PDF
The current render target is PDF — no need to assemble browser print CSS yourself.
MCP-compatible
The same API is exposed as a Model Context Protocol tool — drop it into Claude, Cursor, or any MCP-compatible agent.
SSE progress stream
Subscribe to /api/jobs/{jobId}/events for real-time status changes instead of polling.
API key auth (MCP)
API keys (Authorization: Bearer or x-api-key) authenticate the remote MCP endpoint at /api/mcp. The job API uses your session or a guest cookie.
Built for agent orchestration
An async conversion API designed for agent workflows — long renders do not block your worker loop.
Developer API questions.
Do I need an API key?
No. API keys (created in account settings) are only used by the remote MCP endpoint at /api/mcp; /api/jobs and /api/v1/convert use your session or a guest cookie.
Is there an async document-to-Markdown API?
Yes. POST a file to /api/jobs, poll /api/jobs/{jobId} or subscribe to SSE, then download the Markdown from /api/jobs/{jobId}/artifact.
Can I call the same engine from Claude or Cursor?
Yes. The same engine is exposed as MCP tools — point your client at the /api/mcp remote endpoint; see the MCP guide for setup.