# Pay per call

Agents and scripts can pay Emboss per operation over plain HTTP, with no
account and no API key. Send a request to the pay-per-call API, receive a
payment challenge, pay it, and resend the same request with the payment
credential. Emboss then runs the operation and returns a job you can poll.

Ephemeral processing: source and output documents are deleted 60 to 70 minutes after the last activity on a form. The pay-per-call API always runs under ephemeral processing.

A price that is never paid expires an hour after the request, and the documents sent with it are
deleted at the next cleanup, within ten minutes after that.

The pay-per-call API lives at `https://api.getemboss.ai/pay`. It exposes five
operations: make a flat PDF fillable, fill a PDF from context documents, fill a
PDF from data, read a filled PDF back, and send a PDF by fax. Each is priced per
call, starting at a few cents for a short form; longer forms cost more, and
the exact price for your request is always in the payment challenge. See
[Pricing](/pricing) for the full schedule.

## Limits and how documents are priced

Each request takes one PDF form of up to 10 MB and 100 pages, and up to 5
supporting documents, each up to 10 MB, with 30 MB for the whole request.
Supporting documents count toward the price in page-equivalents: a PDF by its
pages, an image as at least one page, and text, spreadsheets, Word files and
JSON at about 1,750 characters per page. A request with more than 500
page-equivalents of documents is refused with `413`.

## Payment rails

- [Machine Payments Protocol (MPP)](/docs/pay-per-call/mpp): pay with USDC
  stablecoin on Tempo or with a credit card. Works with the standard MPP
  clients, including the tempo CLI and mppx.
- [x402](/docs/pay-per-call/x402): pay with USDC on Base, over the A2A
  endpoint or directly on the pay-per-call API, or gaslessly on every chain
  Circle Gateway supports. Works with the x402 SDKs for Python and JavaScript
  and with Circle's CLI.

If you already have an Emboss account, the [regular API](/docs/quickstart)
with an API key bills to your account instead and includes the free tier.

## Getting the result

The payment challenge already carries the job's `job_id` and `status_url`,
so you hold the link to the result before you pay. After you pay, check
`status_url` until `status` is `ready` or `failed`; the answer says how long
to wait between checks. The status is one of five words:
`awaiting_payment`, `working`, `ready`, `failed` or `expired` (the result's
files are deleted about an hour after the job, under ephemeral processing).
For a fax, `ready` means the carrier accepted it; keep checking until
`result.status` is `delivered`, `failed` or `expired`.

A fill from context documents whose supporting document is the blank form
itself is refused with `422` and code `document_same_as_form` before any
price is offered. A PDF whose form fields are built in a way that could
compromise the service is refused the same way, with `422` and code
`pdf_unsafe`, before any price is offered, so nothing is paid. The message is
"Emboss does not process PDF files that could compromise the service." A fill
that finds nothing in its documents still ends
`ready`, and its result carries `no_values_found` in `warnings` and a
`message` saying why. That payment stands: the documents were read and held
no answers. If our side fails while reading the documents, the job ends
`failed` instead, so the free re-run below applies.

Resending the identical paid request with the same payment never charges
twice: it returns the job, runs a failed job again at no charge, up to three
runs in all for one payment, and answers `410 Gone` once the result has
expired. With MPP this holds only while its payment challenge is valid; after
that a resend gets a new price, so check `status_url` instead, and for a job
that failed, write to contact@getemboss.ai with the job id. See
[Checking on a job](/docs/pay-per-call/mpp#checking-on-a-job).

## Results carry an artifact_id

Every finished operation's result carries an `artifact_id` for the file it
produced, and a pay-per-call result also carries an `artifact_token` next to
it. Send both to a later paid operation, such as
[`/pay/fax`](/docs/pay-per-call/mpp), to reuse that file without paying to
upload it again; the token proves ownership in place of an account.
`/pay/fax` also takes a `sources` list to fax several artifacts as one
packet. See [Artifacts and lineage](/docs/artifacts).

Pay-per-call callers may also run the free utilities on artifacts they hold
tokens for, over A2A or `POST /utilities/{skill}`, with the `artifact_token`
on every source: no quote, no charge. See
[Free PDF utilities](/docs/pdf-utilities).

## Discovery

- Ops index: `https://api.getemboss.ai/pay`
- OpenAPI manifest with per-operation payment info: `https://api.getemboss.ai/openapi.json`
- Machine-readable summary: `https://api.getemboss.ai/pay/llms.txt`
- Pricing as JSON: `https://api.getemboss.ai/pay/pricing`
- OpenAPI for the pay-per-call API: `https://api.getemboss.ai/pay/openapi.json`
- Free price check: `https://api.getemboss.ai/pay/quote` (POST the PDF; returns page count and the exact price per operation)
- Listed in ARD registries: [Neuronto](https://neuronto.com/ard-publishers/getemboss.ai) indexes the Agentic Resource Discovery manifest at `https://getemboss.ai/.well-known/ard.json`, which other ARD registries can read too.

Each catalogue entry carries a signed trust manifest naming `did:web:getemboss.ai`, so a registry can verify the entry came from Emboss and is unchanged. See [Trust and verification](/docs/reference/trust).

Every pay-per-job request runs under ephemeral processing: see [how documents are handled and when they're deleted](/security) and the [subprocessors](/subprocessors) that touch the request.

## See also

- [Fill PDFs from your own data](https://getemboss.ai/use-cases/fill-pdfs-from-your-data)
- [MCP server](https://getemboss.ai/glossary/mcp-server)
- [Pay per call with MPP](https://getemboss.ai/docs/pay-per-call/mpp)
- [Pay per call with MPP](https://getemboss.ai/docs/pay-per-call/mpp)
- [Pay per job with x402](https://getemboss.ai/docs/pay-per-call/x402)
- [Quickstart](https://getemboss.ai/docs/quickstart)
- [Use Emboss from agent frameworks (A2A)](https://getemboss.ai/docs/a2a)
- [Send a fax](https://getemboss.ai/docs/send-fax)
- [Worked examples](https://getemboss.ai/docs/examples)
- [Trust and verification](https://getemboss.ai/docs/reference/trust)
- [Connect to AI](https://getemboss.ai/connect)
- [Security](https://getemboss.ai/security)
- [Subprocessors](https://getemboss.ai/subprocessors)
