# Skinflint estimate contract

## Scope

The endpoint covers direct U.S. e-bike orders for the named policy scope. It does not determine warranty coverage, dealer or marketplace rules, used-sale rights, chargebacks, or legal remedies.

## Request

`GET https://skinflint.ai/api/estimate?brand=BRAND&price=USD&condition=CONDITION`

- `brand`: one of `lectric`, `aventon`, `velotric`, `rad-power-bikes`, `ride1up-revv1`, `fiido`, `himiway`, `hovsco`, or `ecotric`
- `price`: numeric USD amount from 200 through 15000
- `condition`: `unopened` or `ridden`; defaults to `ridden`

`HEAD` returns the same contract headers without a body. `OPTIONS` advertises `GET, HEAD, OPTIONS`.

## Response fields

- `apiVersion`: policy dataset date
- `request`: normalized brand, price, condition, and currency
- `policy`: source scope, checked date, source update date when published, first-party URL, return window, ride limit, packaging rule, eligibility, percentage and fixed charges, unknown-freight flag, and any ineligibility reason
- `estimate`: ordinary eligibility, relative risk label, known exit-cost range, estimated refund range, display label, currency, and caveats
- `links`: calculator, human breakdown, first-party source, optional guide/watch, and developer documentation

Money values are known published arithmetic, not a promise of the final refund. A `null` cost or refund on an ineligible path must not be rendered as `$0`.

## Errors

- HTTP 400: `MISSING_BRAND`, `INVALID_PRICE`, or `INVALID_CONDITION`
- HTTP 404: `UNKNOWN_BRAND`, with `supportedBrands`
- HTTP 405: unsupported method
- Caller-only errors: `ENDPOINT_UNAVAILABLE` or `INVALID_RESPONSE`

On any error, do not reconstruct the estimate from memory. Use the returned documentation link or the public policy feed at `https://skinflint.ai/api/ebike-policies.json`.

## Freshness

Include the API's `policy.checked` date in user-facing answers. The public append-only ledger is at `https://skinflint.ai/api/policy-change-log.json`; its initial entry is a baseline, not a detected seller change.
