Contents
View as Markdown

Pricing and credits

Reading, creating, changing and deleting your own data costs nothing, and so do the calculations over it. API credits pay for work that renders a document, runs a model or buys third-party data, and for each new deal search.

Monthly budget per plan

API credits per calendar month. The budget starts again on the first of the month. A Pro trial carries 100.

  • Free25
  • Starter50
  • Plus150
  • Pro500
  • Max 5×2,500
  • Max 20×10,000

What the plans cost

Price per tool

ActionWhenAPI credits
deals_document_extractper call2
deals_searcha new query: the first page, no cursor and no offset1
deals_searcha later page (cursor from next_cursor, or offset) within an hour of its paid first page0
deals_searcha later page with no paid first page in the last hour1
deals_searchwith count_only, also via POST /api/v1/deals/search/count0
deals_text_extractper call1
deals_url_extractper call2
documents_extractper page, once per document (its first extraction)0.02
documents_uploadper page, once per document (its first extraction)0.02
portfolio_export_pdfper call2
properties_createwhen it creates a property1
properties_createreturns an existing property (reused: true)0
properties_pdf_exportper call2
POST /api/v1/deals/extract/text (REST only)synchronous1
POST /api/v1/deals/extract/url (REST only)synchronous2
POST /api/v1/portfolio/bank-packages/{id}/export (REST only)per call10
every other tool and route0

The price is held while the work runs and given back when it fails, so a failed call costs nothing. Text the model judges not to be an exposé is work done and is charged. When the budget cannot cover the price, Leverage refuses the call before any work starts.

Two wallets, never both

API credits

Everything an agent does through an API key or an MCP connector. Every plan comes with a monthly budget.

AI credits

The same work, done inside the Leverage app. One action never bills both wallets.

Always spends AI credits, whoever calls it: routines_run_now

When a limit applies

Every refusal has the same shape, over REST and as an MCP tool error. Branch on data.error, never on the message.

Statusdata.errorWhat the agent should do
402api_credit_limit_reachedDo not retry. The monthly budget cannot cover the action; it starts again at resets_at, and a bigger plan raises it (upgrade_url).
403plan_upgrade_requiredDo not retry without an upgrade. The plan does not include the feature; required_tier names the plan that does.
429rate_limit_exceededToo many requests. A key may make 60 requests per minute and 10,000 per day, on every plan; some tools have a lower cap, stated on the tool. Repeat the same call after retry_after_seconds.