LlamaParse API v2 Guide
This comprehensive guide covers the new v2 API endpoint for LlamaParse, which introduces a structured configuration approach for better organization and validation.
⚠️ Alpha Version Warning: The v2 endpoint is currently in alpha (
v2alpha1
) and is subject to breaking changes until the stable release. We recommend testing thoroughly and being prepared for potential API changes during development.
Quick Start
Section titled “Quick Start”Basic Usage
Section titled “Basic Usage”curl -X POST \ -H "Authorization: Bearer $LLAMA_CLOUD_API_KEY" \ -F "file=@document.pdf" \ -F 'configuration={ "parse_options": { "parse_mode": "preset", "preset_options": { "preset": "scientific" } } }' \ "https://api.cloud.llamaindex.ai/api/v2alpha1/parse/upload"
What’s Different from v1
Section titled “What’s Different from v1”- Single configuration parameter: Instead of 70+ individual form parameters, v2 uses one JSON configuration string
- Parse mode-specific options: Only relevant options for your chosen parsing mode are available
- Better validation: Structured JSON schema with clear error messages
- Hierarchical organization: Related settings are grouped logically
Endpoint Details
Section titled “Endpoint Details”- URL:
https://api.cloud.llamaindex.ai/api/v2alpha1/parse/upload
- Method:
POST
- Content-Type:
multipart/form-data
- Required Headers:
Authorization: Bearer YOUR_API_KEY
Configuration Structure
Section titled “Configuration Structure”The v2 API accepts two form parameters:
file
(optional): The document file to parseconfiguration
(required): JSON string containing all parsing options
Input Methods
Section titled “Input Methods”You can provide input in two ways (but not both):
- File upload: Use the
file
parameter with multipart form data - URL: Specify a URL in the configuration’s
source_url.url
field
Parse Modes
Section titled “Parse Modes”The parse_mode
field determines how your document is processed. Each mode has specific options available only to that mode.
Preset Mode ("preset"
)
Section titled “Preset Mode ("preset")”Best for: Quick setup with predefined configurations optimized for specific document types.
Available Presets:
"invoice"
/"invoice-v-1"
- Optimized for invoices and receipts"scientific"
/"scientific-v-1"
- For scientific papers and research documents"forms"
/"forms-v-1"
- For forms and questionnaires"technicalDocumentation"
/"technicalDocumentation-v-1"
- For technical docs with schematics"slides"
- For presentation slides"formsBboxExperimental"
- Experimental forms parsing with bounding boxes
Configuration:
{ "parse_options": { "parse_mode": "preset", "preset_options": { "preset": "scientific", "ocr_parameters": { "languages": ["en", "es"] } } }}
Parse Without AI ("parse_without_ai"
)
Section titled “Parse Without AI ("parse_without_ai")”Best for: Fast text extraction from simple documents without complex layouts.
How it works: Extracts text directly without AI reconstruction. Fastest option but no markdown formatting.
Configuration:
{ "parse_options": { "parse_mode": "parse_without_ai", "parse_without_ai_options": { "ignore": { "ignore_diagonal_text": true, "ignore_text_in_image": false }, "ocr_parameters": { "languages": ["en"] } } }}
Parse with LLM ("parse_with_llm"
)
Section titled “Parse with LLM ("parse_with_llm")”Best for: Documents with mixed content (text, tables, images) requiring structured output.
How it works: Uses a Large Language Model to reconstruct document structure from extracted text and images.
Configuration:
{ "parse_options": { "parse_mode": "parse_with_llm", "parse_with_llm_options": { "model": "gpt-4o", "prompts": { "user_prompt": "Extract key financial information", "system_prompt_append": "Focus on tables and charts" }, "ignore": { "ignore_diagonal_text": false, "ignore_text_in_image": false }, "ocr_parameters": { "languages": ["en", "fr"] } } }}
Parse with External Provider ("parse_with_external_provider"
)
Section titled “Parse with External Provider ("parse_with_external_provider")”Best for: Using your own API keys for multimodal models or specific Azure deployments.
How it works: Sends page screenshots to external vision models for processing.
Configuration:
{ "parse_options": { "parse_mode": "parse_with_external_provider", "parse_with_external_provider_options": { "model": "openai-gpt4o", "vendor_multimodal_api_key": "sk-proj-...", "prompts": { "user_prompt": "Extract structured data" }, "azure_openai": { "deployment_name": "gpt-4-vision", "endpoint": "https://myresource.openai.azure.com/", "api_key": "your-key", "api_version": "2024-02-01" } } }}
Supported Models:
openai-gpt4o
(default)openai-gpt-4o-mini
openai-gpt-4-1-nano
openai-gpt-4-1-mini
openai-gpt-4-1
anthropic-sonnet-3.5
anthropic-sonnet-3.7
anthropic-sonnet-4.0
gemini-2.0-flash
gemini-2.5-flash
gemini-2.5-pro
gemini-1.5-flash
gemini-1.5-pro
Parse with Agent ("parse_with_agent"
)
Section titled “Parse with Agent ("parse_with_agent")”Best for: Complex documents requiring highest accuracy (financial reports, dense layouts).
How it works: Uses an agentic reasoning loop with both text and visual analysis for maximum fidelity.
Configuration:
{ "parse_options": { "parse_mode": "parse_with_agent", "parse_with_agent_options": { "model": "anthropic-sonnet-4.0", "ignore": { "ignore_diagonal_text": false }, "ocr_parameters": { "languages": ["en"] }, "prompts": { "user_prompt": "Preserve all table structure and equations" } } }}
Parse with Layout Agent ("parse_with_layout_agent"
)
Section titled “Parse with Layout Agent ("parse_with_layout_agent")”Best for: Documents where precise positioning matters (visual citations, dense layouts).
How it works: Uses vision-language models optimized for layout preservation.
Configuration:
{ "parse_options": { "parse_mode": "parse_with_layout_agent", "parse_with_layout_agent_options": {} }}
Auto Mode ("auto"
)
Section titled “Auto Mode ("auto")”Best for: Dynamic parsing that adapts based on document content.
How it works: Automatically selects parsing strategy based on detected content types.
Configuration:
{ "parse_options": { "parse_mode": "auto", "auto_options": { "configuration_json": "{}", "trigger_on": { "image": true, "table": true, "text": "financial", "regexp": "\\$[0-9,]+\\.[0-9]{2}" }, "ignore": { "ignore_diagonal_text": false }, "ocr_parameters": { "languages": ["en"] } } }}
Input Options
Section titled “Input Options”Configure how different file types are processed:
{ "input_options": { "html": { "make_all_elements_visible": true, "remove_fixed_elements": true, "remove_navigation_elements": true }, "pdf": { "disable_image_extraction": false }, "spreadsheet": { "detect_sub_tables_in_sheets": true } }}
HTML Options
Section titled “HTML Options”make_all_elements_visible
: Forces hidden elements to be visible during parsingremove_fixed_elements
: Removes fixed-position elements (headers, sidebars)remove_navigation_elements
: Removes navigation menus
PDF Options
Section titled “PDF Options”disable_image_extraction
: Skip extracting embedded images from PDFs
Spreadsheet Options
Section titled “Spreadsheet Options”detect_sub_tables_in_sheets
: Find and extract sub-tables within spreadsheet cells
Source URL Configuration
Section titled “Source URL Configuration”Parse documents from web URLs instead of file uploads:
{ "source_url": { "url": "https://example.com/document.pdf", "http_proxy": "https://proxy.company.com:8080" }}
url
: Direct URL to the document (must be publicly accessible)http_proxy
: Optional proxy server for URL requests
Page Ranges
Section titled “Page Ranges”Control which pages to process:
{ "page_ranges": { "max_pages": 10, "target_pages": "1,3,5-10" }}
max_pages
: Maximum number of pages to processtarget_pages
: Specific pages using 1-based indexing (e.g., “1,3,5-10” for pages 1, 3, and 5 through 10)
Important: v2 uses 1-based page indexing, unlike v1 which used 0-based indexing.
Crop Box
Section titled “Crop Box”Define a specific area of each page to parse:
{ "crop_box": { "top": 0.1, "right": 0.1, "bottom": 0.1, "left": 0.1 }}
Values are ratios (0.0 to 1.0) of the page dimensions. Example above crops 10% margin on all sides.
Output Options
Section titled “Output Options”Customize the output format and structure:
Markdown Options
Section titled “Markdown Options”{ "output_options": { "markdown": { "annotate_links": true, "pages": { "prefix": "## Page {pageNumber}\n", "custom_page_separator": "\n\n== {pageNumber} ==\n\n", }, "headers_footers": { "hide_headers": true, "hide_footers": false, "page_header_prefix": "Header: ", "page_footer_suffix": " (Footer)" }, "tables": { "compact_markdown_tables": false, "output_tables_as_markdown": false, "markdown_table_multiline_separator": " | " } } }}
Spatial Text Options
Section titled “Spatial Text Options”{ "output_options": { "spatial_text": { "preserve_layout_alignment_across_pages": true, "preserve_very_small_text": false, "do_not_unroll_columns": false } }}
Export Options
Section titled “Export Options”{ "output_options": { "tables_as_spreadsheet": { "enable": true, "guess_sheet_name": true }, "extract_layout": { "enable": true, "ignore_document_elements_for_layout_detection": false }, "vectorial_objects": { "enable": true }, "embedded_images": { "enable": true }, "screenshots": { "enable": true }, "export_pdf": { "enable": false } }}
Webhook Configuration
Section titled “Webhook Configuration”Set up notifications for job completion:
{ "webhook_configurations": [ { "webhook_url": "https://your-app.com/webhook", "webhook_headers": { "X-Custom-Header": "value" }, "webhook_events": ["parse.done"] } ]}
Note: Currently only the first webhook configuration is used.
Processing Control
Section titled “Processing Control”Configure timeouts and error handling:
{ "processing_control": { "timeouts": { "base_in_seconds": 300, "extra_time_per_page_in_seconds": 30 }, "job_failure_conditions": { "allowed_page_failure_ratio": 0.1, "fail_on_image_extraction_error": false, "fail_on_image_ocr_error": false, "fail_on_markdown_reconstruction_error": true, "fail_on_buggy_font": false }, "fallback_content": { "mode": "empty_page", "prefix": "ERROR: ", "suffix": " (failed to parse)" } }}
Cache Control
Section titled “Cache Control”Disable caching for fresh results:
{ "disable_cache": true}
When true
, this both invalidates any existing cache and prevents caching of new results.
Always-Enabled Features
Section titled “Always-Enabled Features”The following features are always enabled in v2 and cannot be disabled:
adaptive_long_table
: Adaptive long table detectionhigh_res_ocr
: High-resolution OCR processingmerge_tables_across_pages_in_markdown
: Table merging across pagesoutlined_table_extraction
: Outlined table extraction
These were made default because they improve results for most documents.
Complete Configuration Example
Section titled “Complete Configuration Example”{ "parse_options": { "parse_mode": "parse_with_llm", "parse_with_llm_options": { "model": "gpt-4o", "prompts": { "user_prompt": "Extract all financial data and preserve table structure" }, "ignore": { "ignore_diagonal_text": true, "ignore_text_in_image": false }, "ocr_parameters": { "languages": ["en", "es"] } } }, "source_url": { "url": "https://example.com/report.pdf" }, "page_ranges": { "max_pages": 20, "target_pages": "1-5,10,15-20" }, "crop_box": { "top": 0.05, "bottom": 0.95, "left": 0.05, "right": 0.95 }, "output_options": { "markdown": { "annotate_links": true, "pages": { "prefix": "# Page {pageNumber}\n" }, "tables": { "output_tables_as_markdown": true } }, "extract_layout": { "enable": true }, "screenshots": { "enable": true } }, "webhook_configurations": [ { "webhook_url": "https://myapp.com/webhook", "webhook_events": ["parse.done"] } ], "processing_control": { "timeouts": { "base_in_seconds": 600 }, "job_failure_conditions": { "allowed_page_failure_ratio": 0.05 } }, "disable_cache": false}
Error Handling
Section titled “Error Handling”v2 provides detailed validation errors:
{ "detail": [ { "type": "value_error", "loc": ["parse_options", "parse_with_llm_options"], "msg": "parse_with_llm_options can only be used with parse_mode 'parse_with_llm'", "input": {...} } ]}
Response Format
Section titled “Response Format”The response structure remains the same as v1, returning a ParsingJob
object with job details and status.
Migration from v1
Section titled “Migration from v1”If you’re migrating from v1, see our detailed migration guide for parameter mapping and breaking changes.