RCRAG Converter

A RAG conversion API for developers

A RAG conversion API should take a document over HTTP and return the same chunk format a person would download, so a script and a human get an identical artifact and neither has to reverse-engineer the other.

What should a RAG conversion API look like?

A RAG conversion API should take a document over HTTP and return the same chunk format a person would download, so a script and a human get an identical artifact and neither has to reverse-engineer the other.

One endpoint is the whole surface

Conversion is stateless: bytes in, chunks out. RAG Converter's API is a multipart POST to /v1/convert with one part per document, returning NDJSON - one JSON object per line, one line per chunk. The manifest travels in a response header rather than the body, because putting it on the first line would break every naive JSONL reader.

The output must match the interactive tool

If the API returns a different shape from the download, you end up maintaining two importers and discovering the difference in production. The same chunk objects and the same manifest come out of both here, so a prototype built by dragging a file into a page keeps working when it becomes a nightly job.

What the server can do that a browser cannot

Three things, and they are the reason the API exists rather than being a paid version of the same work: OCR at full resolution with no 4 GB address space to run out of, speech transcription, and video - which needs demuxing and frame sampling that a tab has no way to perform. Documents convert identically in both places.

Check what it does with a file it cannot read

The property worth testing before you build on any conversion API is failure. A batch where three files are corrupt should return the other ninety-seven and name the three - not abort, and not silently index empty passages, which is worse because near-identical placeholder chunks outrank real content.

Authentication and what it costs you

Sign-in here is mID: your keys stay on your device and the server verifies a signed assertion locally, so there is no password to leak and no account database to breach. The API key it mints is what a script carries. Usage is prepaid credit on Billing - the same balance whether you call curl or MCP. The manifest reports per-document and per-chunk counts, so a bill can be reconciled against artifacts you already hold.

Optional: MCP for agent hosts

Cursor and Claude Desktop can call the same endpoints through ragconverter-mcp on npm - health, balance, usage, and convert tools wired to /v1/convert. MCP is not a second API; it is discoverability for editors that speak Model Context Protocol. The human still signs in, tops up credit, and puts the key in MCP env once - the agent cannot open Stripe. See the MCP setup guide for install steps and 402 handling. The same conversion on the API uses the same Remade with Rust libraries the browser does, so a prototype and a pipeline share one artifact.

More on converting for RAG