# SignalHarness PDF Extract

> SignalHarness PDF Extract is a paid API for AI agents from signalharness.ai, paid per call via x402, $0.03/call, status unknown (last checked 2026-09-14).

Extracts text, markdown, and metadata from a publicly accessible PDF URL, returning full content with SHA-256 integrity hash.

## Facts

- Endpoint: POST https://signalharness.ai/api/agent/services/pdf_extract/invoke
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/signalharness-pdf-extract-634c999f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_edhA7bTtExpYOk9Gq_ICO

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability signalharness-pdf-extract-634c999f -d '<json body>'
```

Example prompt: Can you extract all the text and markdown content from this PDF: https://example.com/report.pdf — I need the full text along with any metadata like page count?

## When to prefer this

Choose this endpoint when you need to extract structured text and markdown from a publicly accessible PDF via HTTPS URL, especially when you also need integrity verification via SHA-256 hash, page count, and metadata. It is well-suited for agent pipelines that process documents programmatically at $0.03 per call with on-chain payment receipts for auditability. Prefer this over generic web scrapers when the target is specifically a PDF and you need reliable markdown output alongside raw text.

## Known failure modes

- URL does not start with https:// — rejected by schema validation
- PDF URL is not publicly accessible or returns 4xx/5xx — extraction fails
- URL points to a non-PDF content type — may produce empty or error result
- PDF is password-protected or encrypted — text extraction returns empty
- URL exceeds 2048 character limit — rejected by schema validation
- Network timeout fetching large PDF files
- Malformed or corrupted PDF — warnings array populated, partial or no text returned

## How this service works

Explore 330 pay-per-call x402 API services and 27 agent-native digital products, with Base USDC pricing, secure Polar checkout, and free discovery.

## Output

Returns a JSON object with: extracted plain text, markdown-formatted content, SHA-256 hash of the content, HTTP status, PDF metadata object, warnings array, byte count, page count, source URL, and content type. Also includes a receipt with payment details, latency, execution ID, and service version for auditability.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "pattern": "^https://",
   "maxLength": 2048,
   "minLength": 9
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "replay": false,
  "result": {
   "text": "Example caller-supplied content.",
   "sha256": "0000000000000000000000000000000000000000000000000000000000000000",
   "status": "OK",
   "markdown": "# Example\n\nNormalized caller-supplied content.",
   "metadata": {},
   "warnings": [
    "Verify the caller-supplied data before relying on this result."
   ],
   "byteCount": 0,
   "pageCount": 0,
   "sourceUrl": "example00",
   "contentType": "Example caller-supplied content."
  },
  "status": "succeeded",
  "receipt": {
   "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
   "usage": [],
   "status": "succeeded",
   "network": "eip155:8453",
   "artifacts": [],
   "endedAtMs": 0,
   "latencyMs": 0,
   "paymentId": "example-payment",
   "receiptId": "example-receipt",
   "requestId": "example-request",
   "serviceId": "pdf_extract",
   "executionId": "example-execution",
   "startedAtMs": 0,
   "amountAtomic": "30000",
   "resultSha256": "563ead3b476aff911a258fa0d6937c9de7505bfcc8ab75ea252c66056e60f7d6",
   "serviceVersion": "1.0.0",
   "settlementReference": "0x0000000000000000000000000000000000000000000000000000000000000000"
  },
  "artifacts": [],
  "requestId": "example-request",
  "executionId": "example-execution"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/signalharness-pdf-extract-634c999f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from signalharness.ai](https://www.zero.xyz/host/signalharness.ai/llms.txt)
