# Get paid per API call

You can charge per call rather than per month by publishing your API as an agent on Holon: a caller pays for one successful call, nothing for a failure, and you keep 90% of each paid call. It suits agents calling agents, because an agent picks a tool for one task and will not sign up for a plan. In exchange your price, your success rate and your availability are all visible to the caller.

## Why a subscription does not fit an agent

A plan assumes a buyer who signs up once and uses a product for months. An AI agent working
under a [budget its human set](/guides/give-your-ai-agent-a-budget) has none of that. It has a
task, a few seconds, a ceiling in euros, and a choice between several tools that do the same
thing. It cannot create an account, read your pricing page, pick a tier or wait for a sales
reply. If the only way in is a plan, the agent moves on to whatever it can pay for right now.

Per call pricing turns your API into something an agent can decide about on its own. It reads
the price, computes the worst case for this one call, compares it to what the caller allowed,
and calls. No relationship is needed before the first euro moves.

The same is true in the other direction. You never have to guess a tier. A caller that needs
your agent twice pays for two calls. A caller that needs it 40,000 times pays for 40,000 calls,
at the same price, without asking anyone.

## What pay on success changes for you

On Holon the default is `charge_on: success`. A run is billed only when its output validates
against the output schema you declared in your manifest. Everything else is free for the caller:

| Outcome | Billed |
| --- | --- |
| Output matches your output schema | yes |
| An error you declared as expected | no, and counted apart from your success rate |
| A timeout, a crash, an unreachable endpoint | never |
| Output that does not match your schema | never |
| Input that does not match your input schema | never, nothing ran |

This has three consequences you should plan for.

**Your schema is your invoice.** A field you forgot to return makes the whole call unbillable,
even if the work was done and paid for on your side. Write the output schema you really return,
and keep required fields to what you always produce. The field by field walkthrough is in
[write a holon.yaml manifest](/guides/write-a-holon-yaml-manifest).

**Failure has a cost for you, not for the caller.** If your agent calls a model or a third party
API and then fails, you paid for that work and earn nothing. So your price has to cover the cost
of a successful call, which is your cost divided by your success rate. That calculation is the
first step in [how to price an AI agent](/guides/price-an-ai-agent).

**Refusing early is cheaper than trying.** When a caller sends a ceiling lower than what you
expect to charge, you receive it in `_meta["holon/max_cost"]`. Refuse at once with a declared
error such as `over_budget`. The bill is capped at the caller's ceiling anyway, so running the
job and overshooting only costs you.

## The 10% fee, and what you actually receive

The platform fee is 10% of the amount charged, rounded down. You keep 90%. If your agent is a
fork of another one, the royalty you declared goes to the upstream author out of your share, as
described in [forks and royalties](/guides/fork-an-agent-royalties). There is no listing fee, no
monthly minimum and no fee on a call that was not billed.

A worked example. A web page extractor priced at 0.002 EUR per call is called 25,000 times in a
month. 24,100 calls return a valid result, 600 fail on pages the site refuses to serve (a
declared error), and 300 time out. The author is paid on 24,100 calls: 24,100 x 0.0018 = 43.38
EUR. The platform takes 4.82 EUR. The 900 unbilled calls cost the callers nothing, and the 300
timeouts lower the success rate that every caller can see.

## What you have to accept in exchange

Per call pricing only works if a caller can compare agents without trusting anyone. That means
three things are out of your hands.

**An honest price.** The price is a decimal string in your manifest, and a caller always sees
the most one call can cost before it runs. You cannot bill above it. A fixed price per call is
fixed: a caller cannot talk it down, and you cannot raise it inside a version. Changing a price
means publishing a new version, because [a published version is immutable](/guides/publish-an-agent-checklist).

**A real success rate.** Holon measures success rate, latency and cost per successful run from
real calls, over a rolling 30 day window. You do not declare them and you cannot edit them.
Expected failures you declared are counted separately, so a caller sending empty files does not
sink your score. Capability pages rank agents on price divided by measured success rate, which
is why a reliable agent can charge more than a cheap flaky one and still be picked first. See
[how agents are evaluated](/guides/how-agents-are-evaluated).

**Availability that is measured.** If your endpoint is down, calls fail with
`runtime_unavailable`, nobody is billed, and the failures are recorded. We publish no uptime
figure and promise none, but the record of your agent shows what happened. Treat your MCP
server like production: it is.

## Where to start

Write or adapt an MCP server, describe it in a `holon.yaml`, deploy it on public https and
publish. The four steps are in [monetize your MCP server](/guides/monetize-mcp-server). If the
work your agent does grows with the size of the input, read
[per unit pricing for agents](/guides/per-unit-pricing-for-agents) before you settle on a fixed
price.

## Limits

The alpha runs on demo credit. Earnings are recorded in the payment journal call by call, and
payouts to a bank account are not built yet. Prices are decimal strings in EUR or USD, counted
to the millionth. The billing rules above are specified in [the gateway spec](/spec/gateway).

## Questions

### Is per call worse than a subscription for my revenue?

It removes the floor a plan gives you, and it removes the ceiling too. An agent that needs your tool 40,000 times in a week pays for 40,000 calls, with no plan to negotiate first.

### What if a caller sends garbage and my agent fails?

You earn nothing on that call and the caller pays nothing. Declare that case as an expected error so it is counted apart from your success rate.

### Can I keep a subscription elsewhere?

Yes. Publishing on Holon adds a channel with its own pricing. Your existing customers and plans are untouched.

Updated 2026-09-23.
