{"agent_hints":{"for_bulk":"Use /api/v1/batch for same operation on multiple files","for_multi_step":"Use /api/v1/pipeline instead of chaining separate API calls","preferred_flow":"Submit job -> poll /api/v1/jobs/{id} until status=done -> download output"},"features":{"api_key_auth":true,"async_jobs":true,"batch":true,"pipeline":true,"webhooks":true},"limits":{"job_retention_hours":2,"max_batch_files":50,"max_file_mb":100,"max_pipeline_steps":10,"requests_per_hour":1000},"service":"pdfforge","tools":[{"accepts":["application/pdf"],"description":"Combine multiple PDFs into a single file. Use when a user has 2+ PDF files they want combined.","endpoint":"POST /api/v1/merge","max_files":20,"max_size_mb":100,"name":"merge","params":{"files":{"description":"2 or more PDF files to merge","required":true,"type":"file[]"},"output_name":{"description":"Filename for the merged PDF","required":false,"type":"string"}},"returns":"application/pdf"},{"accepts":["application/pdf"],"description":"Export selected page ranges from a PDF as separate files in a ZIP. Use when a user wants specific pages extracted.","endpoint":"POST /api/v1/split","max_files":1,"max_size_mb":100,"name":"split","params":{"file":{"description":"The PDF file to split","required":true,"type":"file"},"ranges":{"description":"Comma-separated page ranges, e.g. '1-3,5,7-10'","required":true,"type":"string"}},"returns":"application/zip"},{"accepts":["application/pdf"],"description":"Rotate all or selected pages of a PDF by 90, 180, or 270 degrees. Use for fixing scanned document orientation.","endpoint":"POST /api/v1/rotate","max_files":1,"max_size_mb":100,"name":"rotate","params":{"angle":{"description":"Rotation angle: 90, 180, or 270","required":true,"type":"integer"},"file":{"description":"The PDF file to rotate","required":true,"type":"file"},"pages":{"description":"Page selection, e.g. '1,3-5'. Blank = all pages","required":false,"type":"string"}},"returns":"application/pdf"},{"accepts":["application/pdf"],"description":"Extract machine-readable text from each page of a PDF. Use for search, analysis, or indexing PDF content.","endpoint":"POST /api/v1/extract_text","max_files":1,"max_size_mb":100,"name":"extract_text","params":{"file":{"description":"The PDF file to extract text from","required":true,"type":"file"}},"returns":"text/plain"},{"accepts":["application/pdf"],"description":"Password-protect a PDF so it requires the password to open. Use when a user wants to secure a document.","endpoint":"POST /api/v1/encrypt","max_files":1,"max_size_mb":100,"name":"encrypt","params":{"file":{"description":"The PDF file to encrypt","required":true,"type":"file"},"password":{"description":"Password to set","required":true,"type":"string"}},"returns":"application/pdf"},{"accepts":["application/pdf"],"description":"Remove password protection from an encrypted PDF using its current password.","endpoint":"POST /api/v1/decrypt","max_files":1,"max_size_mb":100,"name":"decrypt","params":{"file":{"description":"The encrypted PDF file","required":true,"type":"file"},"password":{"description":"Current password","required":true,"type":"string"}},"returns":"application/pdf"},{"accepts":["application/json"],"description":"Chain multiple PDF operations sequentially. Each step's output feeds into the next step.","endpoint":"POST /api/v1/pipeline","max_files":20,"max_size_mb":100,"name":"pipeline","params":{"files":{"description":"Base64-encoded initial PDF files","required":true,"type":"string[]"},"steps":{"description":"Ordered list of {tool, params} objects","required":true,"type":"array"}},"returns":"application/json"},{"accepts":["application/json"],"description":"Apply the same PDF operation to multiple files in parallel.","endpoint":"POST /api/v1/batch","max_files":50,"max_size_mb":100,"name":"batch","params":{"files":{"description":"Base64-encoded PDF files","required":true,"type":"string[]"},"params":{"description":"Tool-specific parameters","required":false,"type":"object"},"tool":{"description":"Tool to apply","required":true,"type":"string"}},"returns":"application/json"}],"version":"v1"}
