# Markpdf ## Docs - [Introduction](https://docs.markpdf.tech/docs/public/introduction.md): Convert heavy documents into clean Markdown for AI agents. - [Quickstart](https://docs.markpdf.tech/docs/public/quickstart.md): Your first conversion to Markdown. - [Authentication](https://docs.markpdf.tech/docs/public/authentication.md): Authenticate your requests with a API key. - [Errors](https://docs.markpdf.tech/docs/public/errors.md): Common status codes and how to resolve them. - [Conversion modes](https://docs.markpdf.tech/docs/public/concepts/modes.md): How to choose between fast, balanced, quality and auto. - [Supported formats](https://docs.markpdf.tech/docs/public/concepts/formats.md): What enters, how it is detected and how the ZIP works. - [Upload compression](https://docs.markpdf.tech/docs/public/concepts/compression.md): Upload documents faster with gzip or zstd on /convert/raw. - [Cache and ETag](https://docs.markpdf.tech/docs/public/concepts/caching.md): Avoid reconverting the same document with ETag and If-None-Match. - [Boundaries](https://docs.markpdf.tech/docs/public/concepts/limits.md): Sizes and limits that should be known. - [PDF index for IA agents](https://docs.markpdf.tech/docs/public/concepts/pdf-index-for-ai-agents.md): /pdf/index + pages= usage pattern so your AI agent pays 20-30x fewer tokens on large PDFs. - [Own storage (self-hosted S3)](https://docs.markpdf.tech/docs/public/concepts/self-hosted-storage.md): Open source alternatives to S3/R2 for the BYOS flow (input_url / output_url), without depending on a cloud provider. - [API Overview](https://docs.markpdf.tech/docs/public/api/overview.md): Endpoints, URL base, authentication and response model at a glance. - [POST /convert](https://docs.markpdf.tech/docs/public/api/convert.md): Upload a document as multipart/form-data and receive Markdown. - [POST /convert/raw](https://docs.markpdf.tech/docs/public/api/convert-raw.md): Upload a document directly and receive Markdown. - [POST /convert/from-url](https://docs.markpdf.tech/docs/public/api/convert-from-url.md): Convert documents from a signed URL. - [POST /pdf/index](https://docs.markpdf.tech/docs/public/api/pdf-index.md): Compact structural index of a PDF for AI agents. Returns sections, headings and metadata without converting the entire document. - [Parameters](https://docs.markpdf.tech/docs/public/api/parameters.md): Complete reference for public conversion parameters. - [Response and headers](https://docs.markpdf.tech/docs/public/api/response.md): Markdown or JSON body and observability headers. - [GET /](https://docs.markpdf.tech/docs/public/api/status.md): Service status and supported formats. - [GET /jobs/{id}](https://docs.markpdf.tech/docs/public/api/jobs.md): Check the status of an automatically queued conversion. - [JavaScript](https://docs.markpdf.tech/docs/public/integrations/javascript.md): Fetch from browser, Node.js or agents. - [Python](https://docs.markpdf.tech/docs/public/integrations/python.md): Requests for scripts, agents and pipelines. - [Rust](https://docs.markpdf.tech/docs/public/integrations/rust.md): reqwest to convert documents from Rust. - [Go](https://docs.markpdf.tech/docs/public/integrations/go.md): net/http to convert documents from Go. - [PHP](https://docs.markpdf.tech/docs/public/integrations/php.md): cURL to convert documents from PHP. - [Ruby](https://docs.markpdf.tech/docs/public/integrations/ruby.md): Net::HTTP and Rails to convert documents. - [C# / .NET](https://docs.markpdf.tech/docs/public/integrations/dotnet.md): HttpClient to convert documents from .NET. - [Dart / Flutter](https://docs.markpdf.tech/docs/public/integrations/dart.md): http package to convert documents from Dart and Flutter. - [cURL](https://docs.markpdf.tech/docs/public/integrations/curl.md): Examples with cURL for terminal and scripts. - [Next.js](https://docs.markpdf.tech/docs/public/integrations/nextjs.md): Secure Route Handler to not expose the API key. - [Nuxt](https://docs.markpdf.tech/docs/public/integrations/nuxt.md): Server route in Nuxt 3 to convert documents. - [Astro](https://docs.markpdf.tech/docs/public/integrations/astro.md): API Route, Astro Action and content collections in Astro to convert documents without exposing the key. - [SvelteKit](https://docs.markpdf.tech/docs/public/integrations/sveltekit.md): Server endpoint in SvelteKit to convert documents. - [Express](https://docs.markpdf.tech/docs/public/integrations/express.md): Router in Express.js with multer, from-url, error and production middleware. - [FastAPI](https://docs.markpdf.tech/docs/public/integrations/fastapi.md): Secure proxy from a API Python, with job polling, idiomatic HTTPException and production. - [Django](https://docs.markpdf.tech/docs/public/integrations/django.md): Django view to convert documents, with error handling, job polling and BYOS for large files. - [Laravel](https://docs.markpdf.tech/docs/public/integrations/laravel.md): Complete integration in Laravel: controller, Form Request, error handling, Job queue and production. - [Spring Boot](https://docs.markpdf.tech/docs/public/integrations/spring-boot.md): Controller in Spring Boot (Java/Kotlin) to convert documents. - [n8n](https://docs.markpdf.tech/docs/public/integrations/n8n.md): Use API in no-code workflows. - [Supabase Storage](https://docs.markpdf.tech/docs/public/integrations/supabase.md): Use signed Supabase URLs as input. - [AWS S3](https://docs.markpdf.tech/docs/public/integrations/aws-s3.md): Converts from presigned S3 URLs. - [Cloudflare R2](https://docs.markpdf.tech/docs/public/integrations/cloudflare-r2.md): R2 as the user's external storage. - [Installation](https://docs.markpdf.tech/docs/public/sdks/python/installation.md): Install and configure the official Python SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/python/quickstart.md): Your first conversion with Python SDK in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/python/reference.md): Python client classes, methods and options. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/python/streaming-and-async.md): Consume /convert/stream and handle 202 (auto-async) with Python's SDK. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/python/error-handling.md): Python SDK typed exceptions and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/python/examples.md): Real Python SDK use cases: uploads, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/nodejs/installation.md): Install and configure the official Node.js and TypeScript SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/nodejs/quickstart.md): Your first conversion with SDK Node.js/TypeScript in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/nodejs/reference.md): Node.js/TypeScript client classes, methods and options. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/nodejs/streaming-and-async.md): Consume /convert/stream and handle 202 (auto-async) with Node.js SDK. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/nodejs/error-handling.md): Node.js/TypeScript SDK typos and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/nodejs/examples.md): Real SDK Node.js/TypeScript use cases: uploads, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/cpp/installation.md): Install and configure the official C++ SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/cpp/quickstart.md): Your first conversion with markpdf-cpp in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/cpp/reference.md): markpdf-cpp classes, methods and options. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/cpp/streaming-and-async.md): Consume /convert/stream and handle 202 (auto-async) with markpdf-cpp. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/cpp/error-handling.md): MarkpdfError, Result and retry strategy in markpdf-cpp. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/cpp/examples.md): Real use cases for markpdf-cpp: uploads, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/nextjs/installation.md): Install and configure the official Next.js SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/nextjs/quickstart.md): Your first conversion Route Handler with @markpdf/nextjs in less than 15 lines. - [Framework Guide: App Router](https://docs.markpdf.tech/docs/public/sdks/nextjs/framework-guide.md): Route Handlers, Server Actions and how to keep the API key out of the client. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/nextjs/reference.md): Helpers exported by @markpdf/nextjs. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/nextjs/streaming-and-async.md): Streaming in Route Handlers and handling of 202 (auto-async) in Server Actions. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/nextjs/error-handling.md): How API errors propagate in Route Handlers and Server Actions. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/nextjs/examples.md): Real use cases for @markpdf/nextjs: upload forms, large PDFs, BYOS and RAG. - [Installation](https://docs.markpdf.tech/docs/public/sdks/angular/installation.md): Install and configure the official Angular SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/angular/quickstart.md): Your first conversion component with @markpdf/angular in less than 15 lines. - [Framework guide: protect the API key](https://docs.markpdf.tech/docs/public/sdks/angular/framework-guide.md): Why Angular needs an intermediary backend and how to structure it. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/angular/reference.md): MarkpdfService, providers and @markpdf/angular types. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/angular/streaming-and-async.md): Consume streaming and jobs 202 with MarkpdfService. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/angular/error-handling.md): MarkpdfClientError, the error interceptor and retry strategy in Angular. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/angular/examples.md): Real use cases for @markpdf/angular: forms with progress, large PDFs and RAG. - [Installation](https://docs.markpdf.tech/docs/public/sdks/react/installation.md): Install and configure the official React SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/react/quickstart.md): Your first conversion form with @markpdf/react in less than 20 lines. - [Framework guide](https://docs.markpdf.tech/docs/public/sdks/react/framework-guide.md): Where the API key lives, when to use direct @markpdf/react and when to proxy with @markpdf/nextjs. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/react/reference.md): Provider, hooks and @markpdf/react types. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/react/streaming-and-async.md): Upload progress with useConvertFile, streaming with useMarkpdf, and 202 (auto-async). - [Error handling](https://docs.markpdf.tech/docs/public/sdks/react/error-handling.md): How to useConvertFile exposes errors and how to catch them with the raw client. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/react/examples.md): Real cases with @markpdf/react: dropzone, page range, RAG and large PDFs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/react-native/installation.md): Install and configure the official React Native SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/react-native/quickstart.md): Select a PDF with expo-document-picker and convert it to less than 20 lines. - [Framework guide](https://docs.markpdf.tech/docs/public/sdks/react-native/framework-guide.md): Storage/picker permissions, Expo vs bare RN differences, and where to save the API key. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/react-native/reference.md): MarkpdfClient class, useConvertFile hook and @markpdf/react-native types. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/react-native/streaming-and-async.md): Upload progress with useConvertFile and handling of 202 (auto-async) in React Native. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/react-native/error-handling.md): @markpdf/react-native typed exceptions and retry patterns on mobile. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/react-native/examples.md): Real cases with @markpdf/react-native: Expo picker, bare RN, page range and RAG. - [Installation](https://docs.markpdf.tech/docs/public/sdks/svelte/installation.md): Install and configure the official Svelte SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/svelte/quickstart.md): Your first conversion form with @markpdf/svelte in less than 20 lines. - [Framework Guide: SvelteKit](https://docs.markpdf.tech/docs/public/sdks/svelte/framework-guide.md): Public environment variables vs protecting the API key with a +server.ts endpoint. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/svelte/reference.md): createConvertStore, ConvertStore and @markpdf/svelte types. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/svelte/streaming-and-async.md): Upload progress with createConvertStore, streaming with the base client, and 202 (auto-async). - [Error handling](https://docs.markpdf.tech/docs/public/sdks/svelte/error-handling.md): How the store exposes errors and how to capture them with the base client. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/svelte/examples.md): Real cases with @markpdf/svelte: input file with progress, page range, RAG and large PDFs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/bun/installation.md): Install and configure the official Bun SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/bun/quickstart.md): Your first conversion with Bun's SDK in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/bun/reference.md): Bun client classes, methods and options. - [Streaming and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/bun/streaming-and-async.md): Consume /convert/stream and handle 202 (auto-async) with Bun's SDK. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/bun/error-handling.md): Bun SDK typos and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/bun/examples.md): Real use cases for Bun SDK: uploads, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/flutter/installation.md): Install and configure the official Dart and Flutter SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/flutter/quickstart.md): Your first conversion with the Flutter/Dart package in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/flutter/reference.md): Classes, methods and options of the Flutter/Dart package. - [Asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/flutter/streaming-and-async.md): Handle 202 (auto-async) with the Flutter/Dart package. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/flutter/error-handling.md): Flutter/Dart package typed exceptions and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/flutter/examples.md): Real use cases for the Flutter/Dart package: file_picker, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/java/installation.md): Install and configure the official Java SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/java/quickstart.md): Your first conversion with Java SDK in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/java/reference.md): Java SDK classes, methods and options. - [Async and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/java/streaming-and-async.md): CompletableFuture and handling of 202 (auto-async) with Java's SDK. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/java/error-handling.md): Java SDK typed exceptions and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/java/examples.md): Real Java SDK use cases: Spring Boot, large PDFs, BYOS, RAG and ZIPs. - [Installation](https://docs.markpdf.tech/docs/public/sdks/kotlin/installation.md): Install and configure the official Kotlin SDK for Markpdf. - [Quickstart](https://docs.markpdf.tech/docs/public/sdks/kotlin/quickstart.md): Your first conversion with Kotlin SDK in less than 15 lines. - [Referencia](https://docs.markpdf.tech/docs/public/sdks/kotlin/reference.md): Kotlin SDK classes, methods, and options. - [Coroutines and asynchronous jobs](https://docs.markpdf.tech/docs/public/sdks/kotlin/streaming-and-async.md): Suspended nature of the client and handling of 202 (auto-async) with Kotlin's SDK. - [Error handling](https://docs.markpdf.tech/docs/public/sdks/kotlin/error-handling.md): Kotlin SDK typed exceptions and retry strategy. - [Ejemplos](https://docs.markpdf.tech/docs/public/sdks/kotlin/examples.md): Real Kotlin SDK use cases: Ktor, Android, Large PDFs, BYOS, RAG and ZIPs. - [Security](https://docs.markpdf.tech/docs/public/security.md): How do you protect your API key and your documents. - [FAQ](https://docs.markpdf.tech/docs/public/faq.md): Frequently asked questions.