Docs menu

Extract API

Fetch readable text from URLs you already know — 1 to 20 public URLs in one call, with per-URL failure reporting and automatic refunds. No search runs and no answer is generated.

POST /v1/extract

Legacy alias: POST https://searchpipe.tech/extract (permanent, same handler and billing).

Authorize

Authenticate with your sp- API key in the Authorization: Bearer sp-YOUR_KEY header; X-API-Key: sp-YOUR_KEY is also accepted. Create or rotate keys in API Keys.

Request

Send Content-Type: application/json with a urls array. urls is the only field.

Body parameters

Body
ParameterTypeDescription
urlsstring[] · requiredRequired array of 1–20 URLs; each URL is limited to 2,048 characters. Only public HTTP(S) URLs are allowed.

Request example

curl -X POST "https://searchpipe.tech/v1/extract" \
  -H "Authorization: Bearer sp-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "urls": [
    "https://fastapi.tiangolo.com/tutorial/"
  ]
}'

Response

A partial or fully failed extraction can still return HTTP 200 — always inspect failed_results instead of relying on the status code.

Response fields
FieldMeaning
results[]Successful items contain url and raw_content (extracted text, not HTML).
failed_results[]Failed items contain url and error. A partial or fully failed extraction can still return HTTP 200; inspect this array.
{
  "results": [
    {
      "url": "https://fastapi.tiangolo.com/tutorial/",
      "raw_content": "FastAPI is a modern, fast (high-performance) web framework..."
    }
  ],
  "failed_results": [
    {
      "url": "https://expired-example.test/page",
      "error": "fetch failed after retries"
    }
  ]
}

Illustrative example: one succeeded URL and one refused URL. raw_content is extracted readable text, not the original HTML.

Billing and refunds

  • Default: 1 credit / URL; failed URLs refunded. Credits are deducted before fetching.
  • Failed URLs are refunded automatically; if every URL in the batch fails, the whole charge is refunded. A batch's net cost is the number of pages actually extracted.
  • Extract does not run LLM summarization or reranking and does not use the search result cache — there is no depth tier and no cache-hit billing.

Limits and guards

  • 1–20 URLs per request; each URL is limited to 2,048 characters.
  • Only public HTTP(S) URLs are allowed — private and reserved addresses (intranets, localhost, link-local ranges) are refused before any network call, and redirects are re-validated hop by hop.
  • Downloads are bounded per page; very large documents are truncated rather than rejected, and the URL still counts as succeeded.