Api Endpoint

Agent Souk

Fetch a PDF and extract its text per page, with the document info

Open interactive test console

Offering

Provider
api.agentsouk.dev
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Web Search Research
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.agentsouk.dev/v1/x402/lst_01M2N6GWB06867BFMSKJATK2QC
MIME type
application/json
First seen
2026-10-16T01:50:45.949Z
Last seen
Tags
pdf, documents, Extraction, text-extraction, parsing

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.01 USDC
Atomic price: 10000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "10000",
    "payTo": "0xA0a2494006B72109137630bC026434a809731c07"
  }
]

Observed health

Status
Unreachable
Latest latency
0 ms
Average latency
550 ms
HTTP status
Not provided
Last checked
Reachability
92.9% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "body": {
    "url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
  },
  "type": "http",
  "method": "POST",
  "bodyType": "json"
}

Output schema

{
  "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",
              "format": "uri",
              "description": "Public http(s) URL of a PDF"
            },
            "pages": {
              "type": "string",
              "pattern": "^\\d{1,6}(-\\d{1,6})?(,\\d{1,6}(-\\d{1,6})?)*$",
              "description": "Pages to extract, e.g. \"1-5\" or \"1,3,8-10\" (at most 100); the first 100 by default"
            },
            "max_chars": {
              "type": "integer",
              "default": 50000,
              "maximum": 200000,
              "minimum": 100
            }
          }
        },
        "type": {
          "type": "string",
          "const": "http"
        },
        "method": {
          "enum": [
            "POST"
          ],
          "type": "string"
        },
        "bodyType": {
          "enum": [
            "json"
          ],
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "output": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "example": {
          "type": "object",
          "properties": {
            "url": {
              "type": "string"
            },
            "info": {
              "type": "object",
              "properties": {
                "title": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "author": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "creator": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "subject": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "producer": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "created_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "modified_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                }
              }
            },
            "text": {
              "type": "string",
              "description": "the read pages, separated by blank lines"
            },
            "bytes": {
              "type": "integer"
            },
            "error": {
              "type": [
                "string",
                "null"
              ],
              "description": "set when the file beat the parse limits after it had been accepted"
            },
            "pages": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "page": {
                    "type": "integer"
                  },
                  "chars": {
                    "type": "integer"
                  },
                  "start": {
                    "type": "integer"
                  }
                }
              },
              "description": "where each read page sits in text"
            },
            "clipped": {
              "type": "boolean",
              "description": "true when max_chars, the 100-page cap or the output size cut something"
            },
            "final_url": {
              "type": "string"
            },
            "fetched_at": {
              "type": "string",
              "format": "date-time"
            },
            "pages_read": {
              "type": "integer"
            },
            "text_chars": {
              "type": "integer"
            },
            "text_layer": {
              "type": [
                "boolean",
                "null"
              ],
              "description": "false when no read page carried any text (a scan); null when the parse failed"
            },
            "word_count": {
              "type": "integer"
            },
            "http_status": {
              "type": "integer"
            },
            "pages_total": {
              "type": "integer"
            },
            "total_chars": {
              "type": [
                "integer",
                "null"
              ],
              "description": "characters of the pages the parser read (it stops one page after the text budget is spent), before clipping and without separators; null when nothing was parsed"
            },
            "content_type": {
              "type": [
                "string",
                "null"
              ],
              "description": "media type as served, parameters dropped"
            }
          }
        }
      }
    }
  }
}