View as Markdown

Pricing

The API, the MCP server, apps, keys, webhooks and the integrations are free on every plan, Free included. You pay only for AI work, such as reading drawings, running takeoffs, chat with Exa and generating estimates. It is paid from the AI usage of the company the work runs in.

Credits

AI usage is counted in credits. 1 credit is $1. In other billing currencies a credit has its own price:

CurrencyOne credit
USD1
EUR0.90
GBP0.80
CAD1.40
AUD1.50
JPY150
KRW1,400
TWD33
VND27,000
BRL5.30
MXN18
INR100
PLN4
CZK22
DKK6.50

An admin buys credits on the company's billing page: at least 100 credits (presets of 100, 500 and 1,000), at most 10,000 at a time. Outside USD the minimum is 100 credits at the local price.

Monthly usage that comes with a plan

An admin can turn on extra usage, so work goes on past the monthly amount. Its default limit is $1,000 a month.

What AI work costs

Most AI work is metered: it is charged from what each call actually uses, such as the model's input and output. The same kind of call can cost a little more or less each time.

A few kinds of work have a fixed price:

WorkPrice
Voice calls0.15 credits a minute, billed by the second, up to 15 minutes
Reading tables from a page0.15 credits a page
Fetching a web page0.015 credits
A web search0.015 credits

To start some work, the company needs enough usage left. A refusal answers 402 insufficient_credits. The amount needed to start is not the price.

What a call cost: the usage field

Charged REST resources say what they cost in a usage field:

It looks the same everywhere:

{
  "usage": { "credits": 14.62, "amount": 13.16, "currency": "EUR" }
}

usage is left out while the work runs, for callers who cannot see the company's billing, and on the MCP server.

Usage by app, key or end user

GET /v1/usage (get_usage) reads the company's AI usage in a window, grouped the way you ask:

curl "https://api.exayard.com/v1/usage?groupBy=end_user" \
  -H "Authorization: Bearer $EXAYARD_API_KEY"
ParameterRequiredWhat it does
groupByYesapp, key, end_user (the Exayard-End-User header) or operation
dateFromNoStart of the window, in epoch milliseconds, inclusive. Default: the start of this billing month.
dateToNoEnd of the window, in epoch milliseconds, exclusive. Default: now when dateFrom is given, else the end of this billing month.
appIdNoOnly this app's usage
appKeyIdNoOnly this key's usage
endUserNoOnly this end user's usage (1 to 128 characters)
organizationIdNoThe company. Leave it out with a key set to work in This company.

An example answer:

{
  "currency": "USD",
  "groupBy": "end_user",
  "dateFrom": 1790812800000,
  "dateTo": 1793491200000,
  "groups": [
    { "key": "customer-4821", "label": null, "credits": 42.5, "amount": 42.5 },
    { "key": null, "label": null, "credits": 3.1, "amount": 3.1 }
  ],
  "total": { "credits": 45.6, "amount": 45.6 },
  "complete": true
}

It needs the read:usage scope. A key's app reads only its own usage: the answer is narrowed to that app, you can still group and filter by key, end user and operation, and naming another app's appId gets 403 forbidden. An admin's sign-in, or a key set to work in This company that holds admin:org or *, reads every app's usage. It is on the REST API only, not the MCP server. dateFrom must be before dateTo.

On the Usage page in Exayard, Spending by app shows the same split: each app's keys and its top end users.

Balance and history

Who pays