# Quickstart

Run the SBA price ceiling for one business and read where each number came from. You need a founding-broker account on acquestor.com.

## 1. Get an API key

On acquestor.com, open **Account → API keys → Create key**. You'll be asked to sign in again first. Give the key a name, pick its scopes (`tools:run` is enough for this page) and set its monthly credit limit. The secret is shown once and starts with `acquestor_live_`; Acquestor stores only a hash of it.

```sh
export ACQUESTOR_API_KEY="acquestor_live_..."
```

During the beta, API keys are for founding brokers. Buyers and sellers use Acquestor in their AI host through the [MCP server](/mcp) instead.

## 2. Run the SBA price ceiling

The ceiling is the highest price an SBA 7(a)-financed buyer can pay under the rules in force on a date. It needs seller's discretionary earnings (SDE), a manager salary or an area to take the market salary from, and a capex reserve, which may be 0.

```sh
curl https://api.acquestor.com/v1/value/sba-ceiling \
  -H "Authorization: Bearer $ACQUESTOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"sde": 156000, "manager_salary": 80000, "capex_reserve": 0, "as_of": "2026-10-05"}'
```

```ts
const res = await fetch("https://api.acquestor.com/v1/value/sba-ceiling", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ACQUESTOR_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({ sde: 156000, manager_salary: 80000, capex_reserve: 0, as_of: "2026-10-05" }),
});
const result = await res.json();
console.log(res.headers.get("Acquestor-Credits-Charged"), result.data.max_price);
```

```python
import os, uuid, requests

r = requests.post(
    "https://api.acquestor.com/v1/value/sba-ceiling",
    headers={
        "Authorization": f"Bearer {os.environ['ACQUESTOR_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={"sde": 156000, "manager_salary": 80000, "capex_reserve": 0, "as_of": "2026-10-05"},
)
r.raise_for_status()
result = r.json()
print(result["data"]["max_price"])
```

No manager salary? Pass `area` instead (`"area": "US"` for the national estimate, an OEWS area code, or `"state": "TX"`), and the BLS median wage for general and operations managers there becomes a sourced assumption you can see in the inputs.

## 3. Read the response

Captured from the code on its test data set and abbreviated to the headline figures; your figures depend on the rules and rates in force on `as_of`.

```json
{
  "data": {
    "max_price": {
      "value": 426001,
      "unit": "USD",
      "source": "c1"
    },
    "max_loan": {
      "value": 383401,
      "unit": "USD",
      "source": "c1"
    },
    "price_to_sde": {
      "value": 2.73,
      "unit": "x",
      "source": "c1"
    }
  },
  "computation": {
    "id": "c1",
    "method": "sba_ceiling",
    "method_version": "1.0.0",
    "computed_at": "2026-10-05T15:02:11.000Z",
    "rule_sets": [
      "sba-sop-50-10-8.1@2026-09-25",
      "sba-rate-caps@2026-03-01"
    ],
    "inputs": {
      "sde": {
        "value": 156000,
        "unit": "USD",
        "source": "u1"
      },
      "manager_salary": {
        "value": 80000,
        "unit": "USD",
        "source": "u1"
      },
      "capex_reserve": {
        "value": 0,
        "unit": "USD",
        "source": "u1"
      },
      "prime_rate": {
        "value": 0.07,
        "unit": "rate",
        "source": "s1",
        "as_of": "2026-10-02"
      },
      "coverage": {
        "value": 1.25,
        "unit": "x",
        "source": "r1"
      },
      "term_months": {
        "value": 120,
        "unit": "months",
        "source": "r1"
      },
      "equity_injection_share": {
        "value": 0.1,
        "unit": "share",
        "source": "r1"
      },
      "max_spread": {
        "value": 0.03,
        "unit": "rate",
        "source": "r2"
      }
    }
  },
  "sources": [
    {
      "id": "u1",
      "basis": "client_supplied",
      "route": "served_directly",
      "as_of": "2026-10-05",
      "name": "Supplied by the calling client",
      "line": "Supplied by the calling AI client or API caller, Oct 5, 2026; used for this request only"
    },
    {
      "id": "r1",
      "source_id": "sba-sop-50-10-8.1",
      "name": "SOP 50 10 8.1, Lender and Development Company Loan Programs",
      "publisher": "U.S. Small Business Administration",
      "dataset": "SOP 50 10 8.1",
      "basis": "rule",
      "route": "served_directly",
      "licence_status": "cleared",
      "as_of": "2026-10-01",
      "effective_from": "2026-10-01",
      "effective_to": null,
      "url": "https://legacy.sba.gov/document/information-notice-5000-882227-issuance-technical-updates-sop-50-10-81",
      "line": "Source: SBA SOP 50 10 8.1, effective Oct 1, 2026"
    },
    {
      "id": "s1",
      "source_id": "frb-h15-prime",
      "name": "H.15 Selected Interest Rates: bank prime loan rate",
      "publisher": "Board of Governors of the Federal Reserve System",
      "dataset": "H.15 bank prime loan rate",
      "basis": "public_record",
      "route": "served_directly",
      "licence_status": "cleared",
      "as_of": "2026-10-02",
      "url": "https://www.federalreserve.gov/releases/h15/",
      "line": "Source: Federal Reserve, H.15 bank prime loan rate, as of Oct 2, 2026",
      "retrieved_at": "2026-10-05"
    },
    {
      "id": "r2",
      "source_id": "sba-notice-5000-875051",
      "name": "Procedural Notice 5000-875051, 7(a) maximum interest rates",
      "publisher": "U.S. Small Business Administration",
      "dataset": "Procedural Notice 5000-875051",
      "basis": "rule",
      "route": "served_directly",
      "licence_status": "cleared",
      "as_of": "2026-03-01",
      "effective_from": "2026-03-01",
      "effective_to": null,
      "url": "https://www.naggl.org/wp-content/uploads/2026/05/5000-875051.pdf",
      "line": "Source: SBA Procedural Notice 5000-875051, effective Mar 1, 2026"
    }
  ],
  "gaps": [],
  "disclaimer": "informational",
  "charge": {
    "credits": 5,
    "price_class": "quick_tool",
    "balance_after": 4995,
    "ledger_entry_id": "18fcdc80-6c5e-4de8-a992-61f2f96ea4b3"
  }
}
```

Follow any number to its source:

1. `data.max_price.source` is `c1`, the computation.
2. The computation lists its inputs, and each input names its own source.
3. `prime_rate` points to `s1`: the Federal Reserve Board's H.15 bank prime loan rate, with the date of the rate used. Each source also carries `line`, ready to show beside the number.
4. `sde` points to `u1`: a figure you supplied in this request. API and MCP callers' figures carry `basis: client_supplied` and serve that request only.

`charge` and the `Acquestor-Credits-Charged` header say what the call cost. During the beta that comes out of your monthly allowance.

## 4. When something is missing

Leave out `capex_reserve` and nothing runs. The API answers 422 and names the input. It never fills it with a default it can't source.

```json
{
  "type": "https://docs.acquestor.com/problems/missing_input",
  "title": "Missing or invalid input",
  "status": 422,
  "code": "missing_input",
  "detail": "capex_reserve is required",
  "missing": [
    "capex_reserve"
  ],
  "instance": "/api/v1/value/sba-ceiling"
}
```

## Next

- [The source field](/concepts/figures) in full.
- [Computed tools](/guides/computed-tools): the stress test, capital stack, after-tax proceeds, offer comparison and lender lookup.
- [Credits and limits](/concepts/credits) and [errors](/concepts/errors).
