{"uid":"cap_MiwFhxb_utJYptgNHVnLx","slug":"task-relay-pdf-text-extractor-585905ac","name":"Task Relay PDF Text Extractor","description":"When a machine needs plain text from a public PDF URL for ingestion or indexing, Task Relay fetches the PDF and extracts text-layer content page by page into a statused result with text, page counts, hashes, truncation flags, and warnings. Text-layer extraction only; NO OCR; no summarization; scanned image-only PDFs may return status no_text.","url":"https://task-relay-production.up.railway.app/x402/pdf-text","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public HTTP or HTTPS URL of a PDF for text-layer extraction only (no OCR; size/page/text caps enforced)"}},"additionalProperties":false},"type":{"type":"string","const":"http"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["task_id","task_status","result","error"],"properties":{"error":{"type":["string","null"]},"result":{"type":["object","null"],"properties":{"text":{"type":"string"},"pages":{"type":"array"},"source":{"type":"object"},"status":{"enum":["extracted","partial","no_text","invalid_pdf","encrypted","fetch_error","unknown"],"type":"string"},"document":{"type":"object"},"warnings":{"type":"array"},"final_url":{"type":"string"},"elapsed_ms":{"type":"integer"},"processed_at":{"type":"string"},"requested_url":{"type":"string"},"billable_units":{"type":"integer"}}},"task_id":{"type":"string"},"task_status":{"enum":["succeeded","failed"],"type":"string"}}}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_uyi7Cpv8-M4doBjBP36HM","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a public PDF URL and extracts text-layer content page by page, returning structured results with text, page counts, hashes, truncation flags, and warnings.","exampleAgentPrompt":"Can you fetch this PDF at https://example.com/report.pdf and extract all the text from it page by page so I can index it?","exampleUseCases":[{"title":"Research paper ingestion pipeline","prompt":"I need to pull the full text out of this academic paper PDF at https://arxiv.org/pdf/2301.00001 so I can index it in my search system — can you extract it page by page?"},{"title":"Legal document text extraction","prompt":"Extract all the text from this public contract PDF at https://storage.example.com/contracts/lease-agreement.pdf so I can run keyword analysis on it."},{"title":"Financial report content indexing","prompt":"Fetch the annual report PDF at https://investor.acmecorp.com/2023-annual-report.pdf and give me the raw text with page counts so I can load it into our document store."}],"resultDescription":"Returns a structured result containing: extraction status (e.g. success, no_text), extracted text content per page, total page count, content hash, truncation flags indicating if content was cut off, and any warnings (e.g. if the PDF is scanned image-only and has no text layer).","failureModes":["PDF URL is not publicly accessible — returns an error or unreachable status","PDF is a scanned image-only document with no text layer — returns status 'no_text'","PDF is password-protected or encrypted — extraction fails","PDF URL is malformed or does not point to a valid PDF — returns an error","Text content exceeds size limits — truncation flag is set and partial text is returned","Network timeout fetching the remote PDF URL"],"whenToPreferThis":"Choose this endpoint when you need to programmatically extract raw text from a publicly accessible PDF URL for downstream ingestion, indexing, or transformation workflows. It is specifically suited for text-layer PDFs (not scanned images) and returns structured metadata (page count, hash, truncation flags) alongside the text. Prefer this over generic scraping when the source is a PDF file and you need per-page structure and status signals.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:37:02.255Z","isFirstParty":false}