Backend jobs
PDF live; document, image, ebook, Notion export, audio, and video inputs signed-in Beta. Every active plan includes API, CLI, and MCP access within its limits.
Copy API callsDeveloper docs
Use one account API key across API, CLI, and MCP.
PDF live; document, image, ebook, Notion export, audio, and video inputs signed-in Beta. Every active plan includes API, CLI, and MCP access within its limits.
Copy API callsProduct API. Run remote conversion from shell scripts with the same account quota and billing as API calls.
View commandsAccount-metered tools. Let agents convert, inspect usage, and open billing through the same API key.
Configure MCPUse API for server uploadsBest for SaaS products, backend jobs, and user-facing upload flows that need billing and API keys.
Use CLI for scripted uploadsBest for shell jobs that can read local files but should still use account quota and billing.
Use MCP for agent tool callsBest when an AI host should call conversion, job status, usage, and billing actions directly.
Keep production keys in server or agent secrets. Never place API keys in browser code.
export MARKOVO_API_KEY="mk_live_..."
curl -X POST https://markovo.net/v1/convert \
-H "Authorization: Bearer ${MARKOVO_API_KEY}" \
-F "file=@paper.pdf" \
-F "file=@appendix.pdf" \
-F "mode=fast" \
-F "max_credits=30"
The account app shows the same snippets after sign-in. The CLI and MCP package requires Python 3.10 or newer. Replace placeholders with your API key and keep secrets in backend or agent environments.
export MARKOVO_BASE_URL="https://markovo.net"
export MARKOVO_API_KEY="mk_live_..."
python -m pip install "https://markovo.net/downloads/markovo-0.1.0-py3-none-any.whl"
markovo doctor --json
markovo convert paper.pdf --out runs/paper --mode fast --max-credits 30
markovo usage
{
"mcpServers": {
"markovo": {
"command": "markovo-mcp",
"env": {
"MARKOVO_BASE_URL": "https://markovo.net",
"MARKOVO_API_KEY": "${MARKOVO_API_KEY}"
}
}
}
}
Open Developer Setup
Use multipart upload for one or more supported files, then poll each returned job until it succeeds. Put API keys in backend environments, not browser code.
curl -X POST https://markovo.net/v1/convert \
-H "Authorization: Bearer mk_live_..." \
-F "file=@paper.pdf" \
-F "file=@appendix.pdf" \
-F "capability_id=pdf-to-markdown" \
-F "mode=fast" \
-F "max_credits=30"
The response includes jobs[]. For backwards compatibility, job_id points to the first queued job.
curl https://markovo.net/v1/jobs/{job_id} \
-H "Authorization: Bearer ${MARKOVO_API_KEY}"
curl -L "https://markovo.net/v1/jobs/{job_id}/download?format=md" \
-H "Authorization: Bearer ${MARKOVO_API_KEY}" \
-o output.md
Selecting a PDF turns Formula enhancement on by default, including in PDF batches. Markovo first checks for formula regions: if none are found, it uses standard conversion and adds 0 formula Credits; if regions are found, the estimate shows the region count and price before conversion starts. REST, CLI, and MCP callers opt in with layout_fidelity=formula. The normal PDF charge remains and each detected region adds 700 credit_units (0.7 Credit). Compare every equation with the original PDF because symbol, variable, root, subscript, or superscript errors remain possible. Guests see the toggle on by default but convert with standard settings until they sign in.
curl -X POST https://markovo.net/v1/estimates \
-H "Authorization: Bearer ${MARKOVO_API_KEY}" \
-F "file=@equations.pdf" \
-F "capability_id=pdf-to-markdown" \
-F "layout_fidelity=formula"
Create a key inside the account app after signing in. Plaintext is shown once.
Authorization: Bearer mk_live_...markovo:convertconversion.credits balance.GET /v1/account/auth/providers reports enabled OAuth providers and email-code signup state.Product API client. The CLI uploads through MARKOVO_BASE_URL with MARKOVO_API_KEY, then polls and downloads the result bundle.
python -m pip install "https://markovo.net/downloads/markovo-0.1.0-py3-none-any.whl"
export MARKOVO_BASE_URL="https://markovo.net"
export MARKOVO_API_KEY="mk_live_..."
markovo convert paper.pdf --out runs/paper --mode fast --max-credits 30
markovo convert equations.pdf --out runs/equations --layout-fidelity formula --max-credits 30
markovo usage
markovo billing # returns the secure browser billing URL
Customer workflows use the account-metered markovo convert command, so browser, API, CLI, and MCP activity appears in the same history. CLI and MCP callers must explicitly choose layout_fidelity=formula. Detected formula regions render as LaTeX; compare every equation with the original PDF.
Verify the current filename and SHA-256 in the client manifest before managed deployment.
The customer-only MCP package exposes account-metered remote conversion, job status, usage, a secure billing link, and service/API-key diagnostics over stdio. It contains no local conversion engine. Every conversion tool call requires max_credits. PDF callers may explicitly set layout_fidelity to formula; the same 0.7-Credit region price and review warning apply.
python -m pip install "https://markovo.net/downloads/markovo-0.1.0-py3-none-any.whl"
export MARKOVO_BASE_URL="https://markovo.net"
export MARKOVO_API_KEY="mk_live_..."
markovo-mcp
# or: markovo mcp
{
"mcpServers": {
"markovo": {
"command": "markovo-mcp",
"env": {
"MARKOVO_BASE_URL": "https://markovo.net",
"MARKOVO_API_KEY": "${MARKOVO_API_KEY}"
}
}
}
}
PDF is live. Public HTTPS URL import, DOCX, PPTX, XLSX, TXT, Markdown, JSON, XML, HTML, CSV, PNG, JPEG, WebP, TIFF, BMP, EPUB, Notion Export ZIP, supported audio, and supported video are authenticated Beta capabilities. They use the same Credits, ownership, History, API, CLI, MCP, and artifact contract. Other formats remain Planned until their quality and cost gates pass.
LivePDF to Markdown with Markdown, assets, metadata, source map, quality report, and ZIP bundle outputs.
Signed-in document BetaDOCX, PPTX, XLSX, text, HTML, CSV, Image OCR, EPUB, and Notion Export ZIP.
Signed-in media BetaAudio transcription and the audio track of supported video files. Video frames and speaker identity are not analyzed.
Signed-in URL BetaOne public HTTPS page with explicit consent, robots checks, public-IP pinning, bounded static content, and cost shown first.
PlannedXLS and ODS remain security-gated and unavailable.
BrowserPDF is public; signed-in users can also estimate and convert every listed document, image, ebook, Notion export, audio, and video Beta input with owned history.
AccountGoogle, GitHub, and verified-email entry points run same-origin through markovo.net.
API keysFree includes one active key; paid plans raise key, batch, concurrency, retention, and Credit limits.
CLImarkovo convert, account, usage, and billing use account API keys.
MCPmarkovo-mcp exposes remote conversion, job status, usage, billing, and diagnostics.
Email codesSignup, verification, and reset send time-limited codes from Markovo's verified support address.
conversion.credits, roll over at most one month, and cap the balance at twice the monthly grant.Public API errors include a stable code, a human-readable message, a per-response request_id, a retryable boolean, and a documentation URL. The same request ID is returned in the x-request-id response header.
{
"error": {
"code": "quota_exceeded",
"message": "Not enough credits.",
"request_id": "…",
"retryable": false,
"docs_url": "https://markovo.net/docs#errors"
}
}
Retry only when retryable is true. For quota, ownership, validation, or Credit-ceiling errors, follow the returned action or fix the request instead of looping.