canonical: https://jentic.com/apis/relaystation.ai/relaystation

# Relaystation

The Relaystation API runs pay-per-call file, data, and document tools for agents, alongside prepaid storage objects called batons. Its tool routes convert and edit PDFs, images, audio, video, office documents, and tables: merge, split, OCR, and compress PDFs, resize and convert images, trim and transcode media, run SQL over CSV, JSON, or Parquet files with DuckDB, and parse invoices or identity documents into fields. Batons are created from presets such as drop, pass, scratchpad, checkpoint, and ledger, priced once at creation, and shared through access tokens with read and write limits. Further routes send documents for e-signature, screen names against sanctions and PEP watchlists, geocode addresses, and relay questions from an agent to its human operator.

## For AI agents

Call pay-per-call tools to convert, OCR, and edit PDFs, images, media, and tables, run SQL over files, send documents for signature, and store handoff data in prepaid batons with scoped access tokens.

## Scope

Does not host databases, send email campaigns, or process card payments for your customers. Use for pay-per-call file, data, and document tools and prepaid baton storage only.

## Capabilities

- Merge, split, rotate, compress, watermark, encrypt, and OCR PDFs through the `/v1/pdf` routes
- Run SQL over a CSV, JSON, NDJSON, or Parquet file with POST `/v1/data/sql`, returning csv, json, or parquet
- Resize, crop, convert, and strip EXIF metadata from images, or render HTML to an image with POST `/v1/image/from-html`
- Trim, transcode, concatenate, and subtitle video, extract audio tracks, and normalise loudness to EBU R128 through `/v1/media`
- Create a baton from a preset such as drop, scratchpad, or ledger, append entries, and mint read, write, or read_write tokens with reads_allowed and writes_allowed caps
- Send a PDF for e-signature to recipients in PARALLEL or SEQUENTIAL order and download the signed copy
- Screen a person or entity name against sanctions and PEP watchlists with POST `/v1/screening/match`

## Use cases

### File-handling agent through Jentic

An agent that receives PDFs, spreadsheets, and images needs processing tools without a developer wiring Relaystation's bearer keys and payment headers by hand. Through Jentic the agent searches for 'merge PDF files', loads POST `/v1/pdf/merge` with its schema, and calls it, then uses POST `/v1/pdf/ocr-searchable` on scanned pages and POST `/v1/pdf/compress` before returning the result. Each tool is a separate operation, so the agent loads only the schema for the step it is on.

Example prompt: Search Jentic for 'merge PDF files', call POST `/v1/pdf/merge` with the uploaded files, then POST `/v1/pdf/compress` on the merged output and return the stored output key

### Ad hoc analysis over data files

Analysts and agents often hold a CSV or Parquet export with no database to load it into. POST `/v1/data/sql` takes the file and a sql string and runs it with DuckDB, while `/v1/data/groupby`, `/v1/data/join`, `/v1/data/pivot`, and `/v1/data/profile` cover structured transforms without writing SQL. POST `/v1/data/to-xlsx` turns the result into an Excel file for a human reader.

Example prompt: POST `/v1/data/sql` with a CSV file, sql 'select region, sum(revenue) from data group by region', and to 'json', then POST `/v1/data/to-xlsx` with the result

### Agent-to-agent handoff with batons

Multi-agent workflows need a place to pass state with bounded access. POST `/v1/baton` creates a prepaid storage object from a preset such as pass, scratchpad, or ledger and a tier from femto to big, with the price quoted once at creation. POST `/v1/baton/{id}` appends or overwrites content, GET `/v1/baton/{id}/tail` reads the latest entry, and POST `/v1/baton/{id}/tokens` mints a read, write, or read_write token with reads_allowed, writes_allowed, expires_at, and an optional ip_allow_list.

Example prompt: POST `/v1/baton` with preset 'scratchpad' and tier 'nano', write the task summary with POST `/v1/baton/{id}`, then POST `/v1/baton/{id}/tokens` with type 'read' and reads_allowed 5

### Contract signing and counterparty screening

Small teams closing a deal can screen the other side and collect signatures from one API. POST `/v1/screening/match` checks a name, with optional type, dob, and nationality, against sanctions and PEP watchlists. POST `/v1/esigndoc/envelopes` then sends the PDF with a title and recipients, GET `/v1/esigndoc/envelopes/{id}/status` shows who has signed, and GET `/v1/esigndoc/envelopes/{id}/signed-document` returns the signed copy.

Example prompt: POST `/v1/screening/match` with name 'Acme Trading Ltd' and type 'entity', and if there is no match, POST `/v1/esigndoc/envelopes` with title 'Supply agreement', two recipients, signingOrder 'SEQUENTIAL', and the PDF

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v1/pdf/merge` | Merge PDFs |
| POST | `/v1/pdf/ocr-searchable` | Add an OCR text layer to a scanned PDF |
| POST | `/v1/data/sql` | Run SQL over a file with DuckDB |
| POST | `/v1/image/resize` | Resize an image |
| POST | `/v1/baton` | Create a baton |
| POST | `/v1/baton/{id}/tokens` | Mint an access token for a baton |
| POST | `/v1/esigndoc/envelopes` | Send a document for signature |
| POST | `/v1/screening/match` | Screen a name against sanctions and PEP lists |

## Key resources

- **PDF and document tools** — Merge, split, rotate, OCR, compress, encrypt, render, and convert PDFs and office documents, plus invoice, form, table, and ID parsing
- **Image and media tools** — Image resize, crop, convert, and OCR; video and audio trim, transcode, concat, subtitles, and loudness normalisation
- **Data tools** — Filter, sort, join, pivot, profile, and validate tables, run SQL over files, and convert between CSV, JSON, Parquet, and Excel
- **Batons** — Prepaid storage objects created from presets, with entries, metadata, access tokens, audit logs, and trust proofs
- **E-signature and contracts** — Envelopes, templates, signing status, signed copies, and binding agreements between parties
- **Bridge** — Ask or notify the human operator, mint agent addresses, and message other agents
- **Account and webhooks** — Account, ledger entries, product enrolment, and webhook subscriptions with delivery history

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 50 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 47 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 46 / 100
  - Agent Usability: 43 / 100
  - Security: 55 / 100
  - AI Discoverability: 64 / 100
- **View full report:** https://jentic.com/apis/relaystation.ai/relaystation/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Relaystation by hand means choosing between a bearer API key, a wallet JWT from an EIP-191 signature, or a per-call x402 PAYMENT-SIGNATURE header, then shaping inputs for each tool route. Through Jentic you install once, import Relaystation from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** Relaystation's tools carry their files in the request body, so for those routes rules bound which operations your agent may call, such as PDF merge or image resize. Batons put their id in the URL path (`/v1/baton/{id}/...`), so a rule can pin the agent to one baton. You choose the operations it may call, so actions like deleting a baton or sending an envelope for signature are not included unless you add them.
- **Credential handling:** Your Relaystation API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'merge PDF files' or 'run SQL over a CSV file', and Jentic returns the matching Relaystation operation with its input schema, so the agent finds the right tool among the many routes without browsing the reference docs.

## Related APIs

- **CloudConvert API** — File conversion across many document, image, audio, and video formats
- **PDF.co API** — PDF editing, extraction, and conversion
- **iLovePDF API** — PDF merge, split, compress, and OCR tasks
- **SignWell API** — Dedicated e-signature with templates and audit trails

## FAQ

### What authentication does the Relaystation API use?

Per its OpenAPI spec, Relaystation declares several schemes. The apiKey scheme is an HTTP bearer API key of the form rs_live_ or rs_test_; the walletJwt scheme is an HS256 JWT issued by POST `/v1/auth/verify` after an EIP-191 wallet signature and used for read paths; and the x402 scheme is a PAYMENT-SIGNATURE header carrying a signed EIP-3009 USDC or EURC payment on Base for one call. The adminSession cookie, rs_admin_session, is operator-only. Health, discovery, price, and product-listing endpoints need no credential. Through Jentic, your API key is stored encrypted by your own Jentic One instance and injected at call time.

### How is Relaystation priced?

Relaystation is pay-per-call. GET `/v1/baton/prices` lists baton preconfigs and POST `/v1/baton/quote` returns a quote for a preset and tier, which is frozen when the baton is created. GET `/v1/llm/tasks` shows live task tiers and prices, and GET `/v1/account/ledger` lists your charges.

### What are the rate limits for the Relaystation API?

The OpenAPI spec does not give account-wide rate limits, though baton creation accepts a rateLimits object for that baton. Check https://relaystation.ai or GET /llms-full.txt for current limits.

### Is there a Relaystation MCP server?

Yes - Relaystation runs its own Streamable HTTP MCP server at POST /mcp and advertises it at /.well-known/mcp.json. You can also connect the Relaystation API directly through Jentic: your agent gets the full 244-endpoint surface from the spec without loading another server's tool definitions into its context, your API key is injected at call time by your self-hosted instance instead of living in an MCP config, and your rules decide which operations the agent may call.

### How do I run SQL over a CSV file through Jentic?

Search Jentic for 'run SQL over a CSV file', load POST `/v1/data/sql`, and send the file with a sql string, setting from to csv and to to json or parquet. The query runs with DuckDB and returns the result in the format you chose. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Relaystation API?

Yes. For a document helper, write a rule that allows POST on `/v1/pdf/merge`, `/v1/pdf/compress`, and `/v1/pdf/ocr-searchable`, and the agent can process PDFs but cannot create batons, send envelopes for signature, or sign contracts. Every call it makes is logged, which matters on a pay-per-call API.
