> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mireye.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Pricing and credits

> What each call costs in credits, what each plan includes, and how to price a job before you run it.

Every billable call spends **credits**. One plan, one credit pool, no
overage — there is no per-endpoint contract to negotiate and no per-record
data licence for you to sign, except where county parcel data forces one
(see [Parcel data](#parcel-data-is-priced-differently)).

Credits reset on the 1st of each month (UTC) and do not roll over.

## Plans

| Plan       | Price            | Credits / mo | Requests / min | Field requests |
| ---------- | ---------------- | ------------ | -------------- | -------------- |
| Free       | \$0              | 5,000        | 20             | 1 at signup    |
| Build      | \$19 / mo        | 25,000       | 60             | 1 / mo         |
| **Growth** | **\$99 / mo**    | **120,000**  | **300**        | **3 / mo**     |
| Enterprise | quoted to volume | custom       | custom         | custom         |

**Every plan hard-stops** at its included credits — the API returns
`402 credits_exhausted` rather than billing you past the allowance. Nothing
you do can produce a surprise invoice. Enterprise adds SLAs, dedicated market
coverage, and better parcel economics.

<Info>
  These numbers are served live and unauthenticated from
  [`GET /v1/meta/plans`](https://api.mireye.com/v1/meta/plans). If this table
  and that endpoint ever disagree, the endpoint is right.
</Info>

## What each call costs

| Operation                              | Credits                          |
| -------------------------------------- | -------------------------------- |
| `POST /v1/fetch`                       | 1 per field                      |
| `POST /v1/ask`                         | 10                               |
| `POST /v1/geocode`                     | 1                                |
| `POST /v1/lookup`                      | 1 without a parcel, 300 with one |
| `POST /v1/proximity` — nearest         | 2 minimum                        |
| `POST /v1/proximity` — distance        | 2 minimum                        |
| `POST /v1/proximity` — screen          | 5 minimum                        |
| `POST /v1/proximity` — labor shed      | 25 minimum                       |
| `POST /v1/proximity` — driving calc    | 12 per calculation               |
| `POST /v1/proximity` — address locator | 1 per address                    |

Batch calls ([`/v1/fetch/batch`](/api-reference/fetch-batch) and
[`/v1/runs`](/api-reference/runs)) bill fields × locations at the same
per-field rate. Batching saves round trips and rate limit, not credits.

## Quote before you run

The mistake to avoid is discovering the price of a 5,000-site screen after
you've run it. [`POST /v1/fetch/quote`](/api-reference/fetch-quote) prices a
request without executing it and tells you whether your remaining allowance
covers it:

```bash theme={null}
curl -s https://api.mireye.com/v1/fetch/quote \
  -H "Authorization: Bearer $MIREYE_API_TOKEN" \
  -H 'content-type: application/json' \
  -d '{
    "lat": 32.7767,
    "lng": -96.7970,
    "preset": "data_center_siting"
  }' | jq
```

Every billable response also carries the credits it actually consumed, so an
agent can meter itself mid-run rather than reconciling a bill later.

## Parcel data is priced differently

A short list of fields — `parcel_owner`, `parcel_apn`, `parcel_zoning`,
`parcel_boundary_geojson`, `developable_acres_proxy`, and the wetland and
easement acreage derived from the boundary — comes from county parcel data
licensed **per record**.

A request touching **any** of them bills a flat **300 credits per location**
on self-serve plans (150 on Enterprise tiers), charged **once per location,
not once per field**, on top of the normal per-field cost of everything else
in the same call. It is one record, so it is one charge.

The practical consequence for pipelines: run your free and cheap gates
first, and only resolve parcels on the sites that survive. The full field
list is in the `parcel_field_group` array of
[`GET /v1/meta/plans`](https://api.mireye.com/v1/meta/plans).

## Hitting the ceiling

Rate limits are per plan and per minute. Exceeding one returns
`429 rate_limited` with a `Retry-After` header.

Every finite plan **blocks at its allowance**. There is no overage on any
tier, so a runaway loop costs you availability, never money:

```json theme={null}
{
  "detail": {
    "error": "credits_exhausted",
    "message": "Monthly credit allowance exhausted on the Free plan (5000 credits). Credits reset 2026-09-01, or upgrade for more.",
    "plan": "free",
    "used": 5000,
    "included": 5000,
    "resets_at": "2026-09-01T00:00:00+00:00"
  }
}
```

`overage_rate_usd_per_1k` is `null` on every plan in
[`GET /v1/meta/plans`](https://api.mireye.com/v1/meta/plans) because there is
no overage to rate. Branch on `402 credits_exhausted`, not on that field.

You can also set your **own** monthly spend limit below the plan allowance.
When your limit is what stopped a request, the `402` says so in
`self_imposed_limit` — upgrading would not help, so the body points you at
account settings instead. See [Errors](/api-reference/errors#billing-and-rate-limits)
for the full `402` contract.

<Warning>
  **Absent fields are billed.** A field that correctly resolves to `absent` at
  your coordinate still costs its credit — the work happened and the answer is
  a real one. Only failure-shaped fields are refunded. This matters most on
  wide presets: if you are screening at volume and only need part of a bundle,
  name the fields rather than taking the preset.
</Warning>

There is no one-time credit pack today; more credits means moving up a plan.
