Skip to content
RagextractAPIStart freeSign-up and sign-in are temporarily unavailable — please check back shortly.

Ragextract for developers

Everything the application does, it does over this API: put documents into a workspace, ask a question per column, run it, and read back answers with the page each one was read from.

What you can build

The API is the product without the grid on top. A client can ingest documents, define and run a table of questions over them, correct an answer, and read the citation behind every cell. That is enough to put extraction inside a pipeline that already exists — a deal tracker, an intake queue, a nightly job over a supplier folder — rather than asking anyone to open a second tool.

  • Ingest. Upload a document, or hand over a URL to fetch. PDF, Office formats and images; over 100 MB goes in parts.
  • Ask. A column is a prompt with one of eight output types, so what comes back is a date, a number, a category or a picture — not a paragraph you then have to parse.
  • Check. Every answer carries the file, the page, the quote and a box on that page, plus a confidence score. Corrections are kept beside the extraction rather than replacing it.
  • Retrieve. Semantic search across a workspace's pages, by text or by image.

What it is not: there is no endpoint for sharing a workspace, inviting someone, buying credits or changing a plan. Those are account acts and they stay in the app.

From nothing to a cited answer

The whole path, in one paste. Every call below has a page in the reference with its parameters and its failure modes.

Request
export KEY="psk_live_…"
export API="https://api.ragextract.com/v2"

# 0 — what does this key reach?
curl $API/verify -H "x-api-key: $KEY"

# 1 — a workspace to work in
curl -X POST $API/workspaces -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"name": "Vendor contracts"}'
#  → data.id = wks_7Kq2mB4nR8vXpL3d

# 2 — put a document in it. This returns a JOB, not a finished file,
#     and it is what spends credits: one per page.
curl -X POST $API/workspaces/wks_7Kq…/files -H "x-api-key: $KEY" \
  -F "file=@acme-msa-2024.pdf"
#  → data.id = dsj_L8vB2mQ6xR3kW9pZ

# 3 — poll until status is SUCCESS
curl $API/workspaces/wks_7Kq…/jobs/dsj_L8v… -H "x-api-key: $KEY"

# 4 — a table is a question per column and a document per row.
#     All three of these are free; nothing is computed yet.
curl -X POST $API/workspaces/wks_7Kq…/tables -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{"name": "Vendor contracts"}'
#  → data.id = rev_Qm5xC9bV3nK7sAeR

curl -X POST $API/workspaces/wks_7Kq…/tables/rev_Qm5…/columns \
  -H "x-api-key: $KEY" -H "content-type: application/json" \
  -d '{"name": "Governing law",
       "prompt": "Which law governs this agreement?",
       "outputType": "text_quote"}'

curl -X POST $API/workspaces/wks_7Kq…/tables/rev_Qm5…/rows \
  -H "x-api-key: $KEY" -H "content-type: application/json" \
  -d '{"subjectType": "file", "subjectId": "ds_M3xJ8pQ1vK5nB7wT"}'

# 5 — what would running it cost? Free to ask.
curl "$API/workspaces/wks_7Kq…/tables/rev_Qm5…/runs/preview" \
  -H "x-api-key: $KEY"
#  → { "cost": 4, "cells": 1, "skippedRowIds": [] }

# 6 — run it. THIS is the charged call.
curl -X POST $API/workspaces/wks_7Kq…/tables/rev_Qm5…/runs \
  -H "x-api-key: $KEY" -H "content-type: application/json" -d '{}'

# 7 — read the answers, each with the page it came from
curl $API/workspaces/wks_7Kq…/tables/rev_Qm5…/cells -H "x-api-key: $KEY"
#  → value, citations[{ fileId, page, quote, box }], confidence

Three things spend credits

Everything else — listing, reading, creating a table, adding columns and rows, pricing a run — is free. Credits are prepaid and there is no subscription.

  • Ingest — 1 credit per page, once per document. Adding a column to a year-old table costs no more than adding it on day one, because the reading is already paid for.
  • Extraction — the column's own rate per cell, from 4 credits, plus a surcharge on bundled rows. Charged per cell as each one succeeds, so a failed cell is not billed.
  • Search — 40 credits per block of 100 searches. The one people do not expect, because a search feels like a read.

Run preview prices a run before you start it, using the same arithmetic the charge uses. Pricing has the rates in money.

Getting a key

Requests authenticate with a personal API key (psk_…) in the x-api-key header. Keys are created in account settings in the Ragextract app, shown once, and stored hashed. A key never reaches more than the person who created it can, and scopes only ever narrow it further — Authentication has the model.

Account settings is not reachable at the moment — sign-in to app.ragextract.com is temporarily blocked, so a new key cannot currently be created. The API itself is live and everything in this section is accurate against it.

What is here

What is not here

  • There is no SDK for this API. Two clients exist — an npm package and an n8n community node — and both target the frozen /v1, whose credential is a workspace key and which has no tables and no bundles. Neither will do anything on these pages. Use HTTP; a language switcher appears here when there is a second language to switch to.
  • There are no webhooks. Ingest and extraction are asynchronous and you poll them — the job for a document, the run for a table. Both carry enough state for a progress bar.
  • Reading your data from an LLM client is a different door. If the goal is to let Claude or an agent read workspaces, tables and answers, that is the MCP server — read-only, connected by signing in rather than by a key you hold, and gated per organisation. It adds no capability this API does not have; it removes the need to write a client.

Where else to look

The product documentation explains what these nouns mean — what a bundle is for, what makes an answer stale, how a correction is audited — screen by screen. A client is easier to write once those are settled, and this reference does not repeat them.