# REST reference

Generated from `openapi/acquestor.yaml` (version 0.3.0) on 2026-10-11. Base URL `https://api.acquestor.com/v1`; send `Authorization: Bearer <API key>`. [Download the public definition](/openapi.yaml).

Only operations you can call are documented in full. Operations that acquestor.com alone performs (approvals, confirmations, attestations, grants, keys) are left out. Planned operations are listed at the end of each section and return 404 until they ship.

## Explore

Rates and market data for the start of a search.

### Prime, SOFR, Treasury yields and SBA 7(a) rate caps as of a date {#get-rates}

```http
GET /v1/explore/rates
```

Prime from the Federal Reserve Board's H.15, Treasury yields from the Treasury's daily par yield curve, SOFR from the New York Fed. SBA caps are base plus the spread for each loan-size tier in the rate-cap rule set in force on `as_of`.

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `get_rates` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `as_of` | query | No | date | Date (YYYY-MM-DD) whose rules and rates apply; defaults to today. |

Responses: `200` Rates · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `GET /explore/market-stats` | Acquisition-loan statistics by NAICS and state, computed from the SBA 7(a) and 504 loan file | P2 |
| `GET /explore/industries/{naics}` | Industry profile for a NAICS code | P2 |

## Value

What an SBA-financed buyer can pay, and what a manager costs.

### Market wage for a replacement manager, from BLS OEWS {#get-market-salary}

```http
GET /v1/value/market-salary
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `get_market_salary` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `soc` | query | No | string | SOC code; defaults to 11-1021, general and operations managers. |
| `area` | query | No | string | OEWS area, 2-letter state or US; needed without `state`. |
| `naics` | query | No | string | NAICS code; area wages span all industries. |
| `as_of` | query | No | date | Not used; wages come from the latest OEWS release. |
| `county` | query | No | string | County name or 5-digit FIPS, with `state`. |
| `state` | query | No | two-letter state | 2-letter state, alone or with `county`. |

Responses: `200` Wage figures · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Highest price an SBA 7(a) buyer can finance {#compute-sba-ceiling}

```http
POST /v1/value/sba-ceiling
```

Cash flow for debt service = SDE - manager salary - capex reserve. Maximum loan = that cash flow / coverage,
capitalised at the rate over the term with monthly payments. Maximum price = maximum loan / (1 - equity injection share).
Coverage, the rate cap, term and injection default to the rule sets in force on `as_of` and are listed as sourced inputs.
The cap spread depends on loan size (over $350,000; $250,001 to $350,000; $50,001 to $250,000), so the computation
iterates until the loan and its rate tier agree.
Flags QoE at a price of $3M or more and the internal-valuation path at $350,000 or less (SOP 50 10 8.1 as updated September 25, 2026).

**Price:** 5 credits · **MCP tool:** `sba_price_ceiling` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `sde` | Yes | number | Annual SDE in whole US dollars. |
| `manager_salary` | No | number | Annual manager salary in whole US dollars; omit for the BLS median. |
| `area` | No | string | OEWS area for the BLS default salary. |
| `capex_reserve` | Yes | number | Annual capex reserve in whole US dollars; may be 0. |
| `coverage` | No | number | Debt coverage; defaults to the rule for `acquisition_type`. |
| `interest_rate` | No | number | SBA rate as a decimal; defaults to the 7(a) cap. |
| `term_months` | No | integer | Loan term in months; defaults to 120. |
| `equity_injection_share` | No | number | Buyer equity share of project cost; defaults to 0.10. |
| `asking_price` | No | number | Asking price in whole US dollars. |
| `working_capital` | No | number | Working capital in whole US dollars; defaults to 0. |
| `closing_costs` | No | number | Closing costs in whole US dollars; defaults to 0. |
| `naics` | No | string | 6-digit NAICS code for the suggested lender search. |
| `as_of` | No | date | Date (YYYY-MM-DD) for SBA rules; defaults to today. |
| `deal_id` | No | string | Granted deal id; not saved over MCP. |
| `county` | No | string | County for the default manager salary, with state. |
| `state` | No | two-letter state | State for the BLS default salary. |
| `acquisition_type` | No | `initial_acquisition`, `business_expansion`, `owner_buyout` | Sets the coverage rule; defaults to initial_acquisition. |

Responses: `200` Ceiling · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `POST /value/addback-review` | Classify proposed add-backs as accepted, conditional or rejected, with the rule for each | P1 |
| `POST /value/readiness` | Seller readiness checks with what to fix first | P1 |

## Market

Listings, search and inquiries.

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `POST /market/buyer-screen` | Screen a buyer against a listing | P1 |
| `POST /drafts` | Draft a teaser, sale memo or LOI for the user's own use | P1 |
| `GET /brokers` | Member broker directory by state and industry | P1 |

## Offer

After-tax proceeds and offer comparison.

### Seller's after-tax proceeds by structure and state {#compute-after-tax}

```http
POST /v1/offer/after-tax
```

Federal tax (capital gain, recapture, NIIT, corporate tax where it applies) and state tax for modelled states. Unmodelled states return a gap; entity-level state taxes such as Texas franchise tax are flagged, not computed.

**Price:** 5 credits · **MCP tool:** `after_tax_proceeds` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `price` | Yes | number | Sale price in whole US dollars, equal to the allocation. |
| `entity_type` | Yes | `sole_proprietorship`, `single_member_llc`, `partnership_llc`, `s_corp`, `c_corp` | The selling business's tax entity. |
| `allocation` | Yes | object | Form 8594 classes in plain terms. |
| `stock_or_interest_basis` | No | number | Owner's stock or LLC interest basis in whole US dollars; needed for an S corp, C corp or partnership LLC. |
| `corporate_asset_basis` | No | number | C corp asset basis in whole US dollars; defaults to the allocation. |
| `built_in_gain` | No | number | S corp built-in gain in whole US dollars. |
| `seller_state` | Yes | two-letter state | Seller's state as a 2-letter code. |
| `seller_city` | No | string | Used where a city tax applies (New York City). |
| `filing_status` | No | `single`, `married_joint`, `married_separate`, `head_of_household` | Federal filing status; defaults to single. |
| `material_participation` | No | boolean | Whether the seller materially participated; defaults to true. |
| `qsbs` | No | object | Qualified small business stock (section 1202), for a C corp stock sale. |
| `structures` | No | array of `asset`, `stock`, `deemed_asset_338h10`, `deemed_asset_336e`, `f_reorganization` | Structures to compute; defaults to all the entity allows. |
| `tax_year` | Yes | integer | Tax year; only 2026 is modelled. |
| `deal_id` | No | string | Granted deal id; not saved over MCP. |

Responses: `200` Proceeds by structure · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Rank offers by risk-adjusted present value {#compare-offers}

```http
POST /v1/offer/compare
```

**Price:** 5 credits · **MCP tool:** `compare_offers` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `offers` | Yes | array of object | Offers to rank, 2 to 10. |
| `note_discount_rate` | No | number | Note discount rate as a decimal; you set it. |
| `earnout_discount_rate` | No | number | Earnout discount rate as a decimal; you set it. |
| `earnout_expected_payout_share` | No | number | Expected earnout payout share as a decimal; you set it. |
| `deal_id` | No | string | Granted deal id; not saved over MCP. |

Responses: `200` Ranked offers · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

## Diligence

Checks on a deal’s records.

### Reconcile bank deposits to P&L revenue and tax-return receipts, by period {#compute-proof-of-cash}

```http
POST /v1/diligence/proof-of-cash
```

Reads extracted figures from the deal's documents. Every extracted figure cites its document and page. Transfers, loan proceeds and owner contributions are excluded only as the user confirms them.

**Price:** 50 credits · **MCP tool:** `proof_of_cash` · **Key scope:** `deals:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `deal_id` | Yes | string | The granted deal to reconcile. |
| `document_ids` | No | array of string | Deal documents to use; defaults to all. |
| `periods` | No | array of string | Years (YYYY); defaults to all the documents cover. |
| `confirmed_exclusions` | No | array of object | Deposits you confirm are not revenue. |
| `variance_threshold` | Yes | number | Variance as a decimal that flags a year; you set it. |

Responses: `200` Reconciliation · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `POST /diligence/red-flags` | Rule-based red flags | P1 |
| `POST /diligence/screen` | Screen people and entities against OFAC, SAM.gov exclusions and the OIG exclusion list | P2 |

## Finance

Debt coverage, the capital stack and SBA lenders.

### Debt coverage under SDE declines and rate shocks {#stress-test-deal}

```http
POST /v1/finance/stress-test
```

Returns base coverage, coverage per scenario, the SDE decline at which coverage reaches 1.00x, and whether the deal still covers debt service after a 30% SDE decline.

**Price:** 5 credits · **MCP tool:** `stress_test_deal` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `sde` | Yes | number | Annual SDE in whole US dollars. |
| `manager_salary` | Yes | number | Annual manager salary in whole US dollars. |
| `capex_reserve` | Yes | number | Annual capex reserve in whole US dollars. |
| `loan_amount` | Yes | number | SBA loan amount in whole US dollars. |
| `interest_rate` | Yes | number | SBA loan rate as a decimal. |
| `term_months` | Yes | integer | SBA loan term in months. |
| `seller_note` | No | object |  |
| `sde_declines` | No | array of number | SDE declines as decimals; defaults to 0.1, 0.2, 0.3. |
| `rate_shocks_bps` | No | array of integer | Rate rises in basis points; defaults to 100, 200, 300. |
| `as_of` | No | date | Date (YYYY-MM-DD) for SBA rules; defaults to today. |
| `deal_id` | No | string | Granted deal id; not saved over MCP. |

Responses: `200` Stress test · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Sources and uses, guaranty fee, debt service and coverage for an SBA acquisition {#build-capital-stack}

```http
POST /v1/finance/capital-stack
```

**Price:** 5 credits · **MCP tool:** `build_capital_stack` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `price` | Yes | number | Purchase price in whole US dollars. |
| `working_capital` | No | number | Working capital in whole US dollars; defaults to 0. |
| `closing_costs` | No | number | Closing costs in whole US dollars; defaults to 0. |
| `buyer_cash` | Yes | number | Buyer cash in whole US dollars. |
| `seller_note` | No | object |  |
| `interest_rate` | No | number | SBA rate as a decimal; defaults to the 7(a) cap. |
| `term_months` | No | integer | SBA loan term in months; defaults to 120. |
| `finance_guaranty_fee` | No | boolean | Add the guaranty fee to the loan; defaults to true. |
| `sde` | Yes | number | Annual SDE in whole US dollars. |
| `manager_salary` | Yes | number | Annual manager salary in whole US dollars. |
| `capex_reserve` | Yes | number | Annual capex reserve in whole US dollars. |
| `as_of` | No | date | Date (YYYY-MM-DD) for SBA rules; defaults to today. |
| `deal_id` | No | string | Granted deal id; not saved over MCP. |

Responses: `200` Capital stack · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Lenders ranked by SBA acquisition loans in a NAICS code and state {#find-sba-lenders}

```http
GET /v1/finance/lenders
```

Computed from the SBA 7(a) and 504 loan file, filtered to loans the file records as changes of ownership, enriched from FDIC BankFind. A list from public data, not a referral and not a prediction of approval.

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `find_sba_lenders` · **Key scope:** `tools:run`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `naics` | query | No | string | NAICS code, 2 to 6 digits. |
| `state` | query | No | two-letter state | US state as a 2-letter code. |
| `fiscal_years` | query | No | integer | Fiscal years to count back; defaults to 5. |
| `min_loans` | query | No | integer | Fewest loans to list a lender; defaults to 3. |
| `limit` | query | No | integer | Max results; defaults to 25. |
| `as_of` | query | No | date | Count back from this date (YYYY-MM-DD), not the file's. |

Responses: `200` Lenders · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `POST /finance/sba-eligibility` | SOP 50 10 8.1 checks for a change of ownership | P1 |

## Close

Closing and transition checklists.

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `GET /checklists` | Checklists by stage, state, industry and structure, each item cited | P1 |

## Listings

Broker-owned listings, intake and inquiries.

### Search member listings {#search-listings}

```http
GET /v1/listings
```

Returns teaser fields only; detail follows each listing's disclosure level. Every listing came from the broker who represents it. Signed-in members only, for their own use; developer keys receive no other org's listings, and listing data is never sold.

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `search_listings` · **Key scope:** `listings:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `q` | query | No | string | Words to find in listing text. |
| `naics` | query | No | string | NAICS code, 2 to 6 digits. |
| `state` | query | No | two-letter state | US state as a 2-letter code. |
| `price_min` | query | No | number | Lowest asking price in whole US dollars. |
| `price_max` | query | No | number | Highest asking price in whole US dollars. |
| `sde_min` | query | No | number | Lowest SDE in whole US dollars. |
| `sba_financeable` | query | No | boolean | Only listings within their BLS-salary SBA ceiling. |
| `cursor` | query | No | string | `next_cursor` from the previous page. |
| `limit` | query | No | integer | Max results; defaults to 25. |

Responses: `200` Listings · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Create a listing as a draft (brokers) {#create-listing}

```http
POST /v1/listings
```

A listing created here starts as `draft` and goes live only on approval in the acquestor.com interface.

**Price:** Free · **Key scope:** `listings:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `ListingKey` | No | string | The broker's own identifier. |
| `ListingId` | No | string |  |
| `StandardStatus` | No | `Active`, `Pending`, `Closed`, `Withdrawn`, `Expired` |  |
| `ListingContractDate` | No | date |  |
| `ExpirationDate` | No | date |  |
| `ListingAgreement` | No | string |  |
| `BusinessName` | No | string | Shown only when disclosure allows. |
| `BusinessType` | No | array of string |  |
| `X_NAICSCode` | Yes | string |  |
| `YearEstablished` | No | integer |  |
| `NumberOfFullTimeEmployees` | No | integer |  |
| `NumberOfPartTimeEmployees` | No | integer |  |
| `HoursDaysOfOperation` | No | array of string |  |
| `SpecialLicenses` | No | array of string |  |
| `LaborInformation` | No | array of string |  |
| `X_HomeBasedYN` | No | boolean |  |
| `X_AbsenteeOwnerYN` | No | boolean |  |
| `City` | No | string |  |
| `CountyOrParish` | No | string |  |
| `StateOrProvince` | Yes | two-letter state |  |
| `PostalCode` | No | string |  |
| `InternetAddressDisplayYN` | No | boolean |  |
| `X_Relocatable` | No | boolean |  |
| `ListPrice` | Yes | number |  |
| `ListingTerms` | No | array of string |  |
| `X_DownPayment` | No | number |  |
| `X_SellerFinancingAvailable` | No | boolean |  |
| `X_SellerFinancingAmount` | No | number |  |
| `X_SBAPrequalified` | No | boolean |  |
| `GrossIncome` | No | number | Annual revenue for the period in X_FinancialsPeriodEnd. |
| `X_SellersDiscretionaryEarnings` | No | number |  |
| `X_EBITDA` | No | number |  |
| `X_FinancialsPeriodEnd` | No | date |  |
| `X_FinancialsPeriodType` | No | `fiscal_year`, `trailing_12_months` |  |
| `FinancialDataSource` | No | array of string |  |
| `X_InventoryIncluded` | No | boolean |  |
| `X_InventoryValue` | No | number |  |
| `X_FFEValue` | No | number |  |
| `X_RealEstateIncluded` | No | boolean |  |
| `X_RealEstateValue` | No | number |  |
| `Inclusions` | No | string |  |
| `Exclusions` | No | string |  |
| `LeaseAmount` | No | number |  |
| `LeaseAmountFrequency` | No | `Weekly`, `Monthly`, `Annually` |  |
| `LeaseExpiration` | No | date |  |
| `LeaseRenewalOptionYN` | No | boolean |  |
| `LeaseAssignableYN` | No | boolean |  |
| `X_Franchise` | No | object |  |
| `PublicRemarks` | No | string |  |
| `X_Headline` | No | string |  |
| `X_ReasonForSale` | No | string |  |
| `DocumentsAvailable` | No | array of string |  |
| `X_DisclosureLevel` | Yes | `teaser`, `financials`, `full` |  |
| `X_NDAUrl` | No | string |  |
| `ListAgentFullName` | No | string |  |
| `ListAgentEmail` | Yes | string |  |
| `ListAgentStateLicense` | No | string |  |
| `ListOfficeName` | No | string |  |

Responses: `201` Draft created · errors as [problem details](/concepts/errors).

### One listing with its SBA ceiling card {#get-listing}

```http
GET /v1/listings/{listing_id}
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `get_listing` · **Key scope:** `listings:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `listing_id` | path | Yes | string | Listing id from `search_listings`. |

Responses: `200` Listing · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Edit a listing (brokers in the listing's org) {#update-listing}

```http
PATCH /v1/listings/{listing_id}
```

Edits to an active listing that change price, financials or disclosure return it to pending approval.

**Price:** Free · **Key scope:** `listings:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `listing_id` | path | Yes | string | Listing id from `search_listings`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/merge-patch+json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `ListingKey` | No | string | The broker's own identifier. |
| `ListingId` | No | string |  |
| `StandardStatus` | No | `Active`, `Pending`, `Closed`, `Withdrawn`, `Expired` |  |
| `ListingContractDate` | No | date |  |
| `ExpirationDate` | No | date |  |
| `ListingAgreement` | No | string |  |
| `BusinessName` | No | string | Shown only when disclosure allows. |
| `BusinessType` | No | array of string |  |
| `X_NAICSCode` | Yes | string |  |
| `YearEstablished` | No | integer |  |
| `NumberOfFullTimeEmployees` | No | integer |  |
| `NumberOfPartTimeEmployees` | No | integer |  |
| `HoursDaysOfOperation` | No | array of string |  |
| `SpecialLicenses` | No | array of string |  |
| `LaborInformation` | No | array of string |  |
| `X_HomeBasedYN` | No | boolean |  |
| `X_AbsenteeOwnerYN` | No | boolean |  |
| `City` | No | string |  |
| `CountyOrParish` | No | string |  |
| `StateOrProvince` | Yes | two-letter state |  |
| `PostalCode` | No | string |  |
| `InternetAddressDisplayYN` | No | boolean |  |
| `X_Relocatable` | No | boolean |  |
| `ListPrice` | Yes | number |  |
| `ListingTerms` | No | array of string |  |
| `X_DownPayment` | No | number |  |
| `X_SellerFinancingAvailable` | No | boolean |  |
| `X_SellerFinancingAmount` | No | number |  |
| `X_SBAPrequalified` | No | boolean |  |
| `GrossIncome` | No | number | Annual revenue for the period in X_FinancialsPeriodEnd. |
| `X_SellersDiscretionaryEarnings` | No | number |  |
| `X_EBITDA` | No | number |  |
| `X_FinancialsPeriodEnd` | No | date |  |
| `X_FinancialsPeriodType` | No | `fiscal_year`, `trailing_12_months` |  |
| `FinancialDataSource` | No | array of string |  |
| `X_InventoryIncluded` | No | boolean |  |
| `X_InventoryValue` | No | number |  |
| `X_FFEValue` | No | number |  |
| `X_RealEstateIncluded` | No | boolean |  |
| `X_RealEstateValue` | No | number |  |
| `Inclusions` | No | string |  |
| `Exclusions` | No | string |  |
| `LeaseAmount` | No | number |  |
| `LeaseAmountFrequency` | No | `Weekly`, `Monthly`, `Annually` |  |
| `LeaseExpiration` | No | date |  |
| `LeaseRenewalOptionYN` | No | boolean |  |
| `LeaseAssignableYN` | No | boolean |  |
| `X_Franchise` | No | object |  |
| `PublicRemarks` | No | string |  |
| `X_Headline` | No | string |  |
| `X_ReasonForSale` | No | string |  |
| `DocumentsAvailable` | No | array of string |  |
| `X_DisclosureLevel` | Yes | `teaser`, `financials`, `full` |  |
| `X_NDAUrl` | No | string |  |
| `ListAgentFullName` | No | string |  |
| `ListAgentEmail` | Yes | string |  |
| `ListAgentStateLicense` | No | string |  |
| `ListOfficeName` | No | string |  |

Responses: `200` Updated · errors as [problem details](/concepts/errors).

### Turn a CSV or the broker's own file into draft listings {#import-listings}

```http
POST /v1/listing-imports
```

`file` drafts from the broker's own teaser, CIM or financial summary and cites a page for every figure; free to brokers (fair use: 30 file drafts a month per broker, more on request). `csv` takes rows in the template's columns. MCP clients send the file as base64 in the JSON body (up to 10 MB). A file that looks like a printout of a BizBuySell, BizQuest or LoopNet page is flagged, and the broker confirms the content is their own before approval. Drafts never go live without approval in the interface. Planned: `url` (P1), from a page on a domain verified for the broker's org; `reaxml` (P2).

**Price:** Free · **MCP tool:** `create_listing_draft` · **Key scope:** `listings:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`multipart/form-data`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `kind` | Yes | `csv`, `file`, `reaxml` | csv for rows in the template columns; file for the broker's own teaser, CIM or financial summary; reaxml is not live yet. |
| `file` | Yes | string | The CSV or the broker's own file, up to 10 MB. |

Responses: `202` Import job accepted · errors as [problem details](/concepts/errors).

### Import job status and the drafts it produced {#get-import}

```http
GET /v1/listing-imports/{import_id}
```

**Price:** Free · **Key scope:** `listings:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `import_id` | path | Yes | string |  |

Responses: `200` Job · errors as [problem details](/concepts/errors).

### Withdraw a listing {#withdraw-listing}

```http
POST /v1/listings/{listing_id}/withdraw
```

**Price:** Free · **Key scope:** `listings:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `listing_id` | path | Yes | string | Listing id from `search_listings`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Responses: `200` Withdrawn · errors as [problem details](/concepts/errors).

### Send an inquiry to the listing broker {#create-inquiry}

```http
POST /v1/listings/{listing_id}/inquiries
```

Delivered only to the listing broker's org, with a snapshot of the buyer's profile if the buyer chooses to share it (off by default). The platform never contacts the seller. Inquiries created with an API key or by an MCP client start as pending_confirmation and are sent only when the buyer confirms on acquestor.com. Limited per buyer per day.

**Price:** Free · **MCP tool:** `contact_listing_broker` · **Key scope:** `inquiries:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `listing_id` | path | Yes | string | Listing id from `search_listings`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `message` | Yes | string | Message to the broker, up to 4,000 characters. |
| `share_profile` | No | boolean | Attach the buyer's profile and email; defaults to false. |
| `include_eligibility` | No | boolean | Add the buyer's SBA eligibility answer; defaults to false. |

Responses: `201` Sent to the listing broker (interface) or awaiting the buyer's confirmation (API key, MCP) · errors as [problem details](/concepts/errors).

### The broker's inquiry inbox, or the buyer's sent inquiries {#list-inquiries}

```http
GET /v1/inquiries
```

**Price:** Free · **Key scope:** `inquiries:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `cursor` | query | No | string | `next_cursor` from the previous page. |
| `limit` | query | No | integer | Max results; defaults to 25. |

Responses: `200` Inquiries · errors as [problem details](/concepts/errors).

### The broker org's own listings in every status {#list-my-listings}

```http
GET /v1/broker/listings
```

**Price:** Free

Responses: `200` Listings · errors as [problem details](/concepts/errors).

### The CSV template with the canonical column names {#get-listing-csv-template}

```http
GET /v1/listing-imports/template.csv
```

**Price:** Free

Responses: `200` CSV · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `PUT /listing-keys/{ListingKey}` | Idempotent push from broker software, keyed by the broker's own ListingKey | P2 |
| `POST /feeds` | Register a feed the broker hosts (JSON, CSV or REAXML), polled every 6 hours | P2 |
| `GET /feeds/{feed_id}` | Feed status and last poll result | P2 |
| `GET /saved-searches` | The caller's saved listing searches | P1 |
| `POST /saved-searches` | Save a listing search, with optional email alerts (the buyer's own search; no matching by the platform) | P1 |
| `DELETE /saved-searches/{saved_search_id}` | Delete a saved search | P1 |

## Deals

One party’s private workspace for one transaction.

### The caller's deals {#list-deals}

```http
GET /v1/deals
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `list_deals` · **Key scope:** `deals:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `cursor` | query | No | string | `next_cursor` from the previous page. |
| `limit` | query | No | integer | Max results; defaults to 25. |

Responses: `200` Deals · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### One deal with its saved runs and extracted summary figures {#get-deal}

```http
GET /v1/deals/{deal_id}
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `get_deal` · **Key scope:** `deals:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |

Responses: `200` Deal · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Rename a deal, move its stage, or change outside AI access {#update-deal}

```http
PATCH /v1/deals/{deal_id}
```

Changing `outside_ai_access` requires a signed-in session (interface); API keys and OAuth clients cannot grant themselves deal access.

**Price:** Free · **Key scope:** `deals:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/merge-patch+json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `name` | No | string |  |
| `perspective` | No | `buyer`, `seller`, `broker` |  |
| `stage` | No | one of 8 values |  |
| `business_id` | No | string |  |
| `listing_id` | No | string |  |
| `outside_ai_access` | No | boolean | Interface sessions only. Default false. |

Responses: `200` Updated · errors as [problem details](/concepts/errors).

### Upload a document to a deal {#upload-document}

```http
POST /v1/deals/{deal_id}/documents
```

Stored under the deal's own key. Bank statements, P&Ls and tax returns are read for figures at 3 credits a page, quoted from the page count and checked against the balance before reading; a failed read is not charged. Without the model connected, the document is stored and the user types the figures. Files that look like a marketplace printout are refused.

**Price:** 3 credits a page

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Acquestor-Max-Credits` | header | No | number | The most this call may charge. If its price is higher, it returns 402 `over_max_credits` and runs nothing. |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`multipart/form-data`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `type` | Yes | one of 11 values |  |
| `file` | Yes | string |  |

Responses: `201` Stored, and read when the type supports it · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Document status and extracted figures {#get-document}

```http
GET /v1/deals/{deal_id}/documents/{document_id}
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |
| `document_id` | path | Yes | string |  |

Responses: `200` Document · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Save a computed result to a deal {#save-run}

```http
POST /v1/deals/{deal_id}/runs
```

Runs a computed tool from its inputs against the granted deal and saves the result there. Charged at that tool's price; saving is free. Computed tools called through the MCP server read from a deal but don't save, so this is how an AI client keeps a result.

**Price:** Free · **MCP tool:** `save_to_deal` · **Key scope:** `deals:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `operation_id` | Yes | string | Computed operation to run. |
| `request` | Yes | object | Its inputs, with objects such as `seller_note` nested. |
| `label` | No | string | Name for the saved run. |

Responses: `201` Saved · errors as [problem details](/concepts/errors).

### Type figures onto a deal (bank deposits, P&L revenue, tax-return receipts) {#add-deal-figures}

```http
POST /v1/deals/{deal_id}/figures
```

Each figure is user-entered and dated today; proof of cash reads them beside figures read from documents.

**Price:** Free

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `deal_id` | path | Yes | string | Deal id from `list_deals`. |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `figures` | Yes | array of DealFigureInput |  |

Responses: `201` Saved · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `GET /deals/{deal_id}/comments` | Comments in a deal, from its owner and invited same-side collaborators | P1 |
| `POST /deals/{deal_id}/comments` | Comment in a deal (owners and collaborators, including advisors) | P1 |

## Businesses

The companies behind deals.

### Create a business record {#create-business}

```http
POST /v1/businesses
```

**Price:** Free · **Key scope:** `deals:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `name` | No | string |  |
| `naics` | No | string |  |
| `state` | No | two-letter state |  |
| `county` | No | string |  |
| `entity_type` | No | `sole_proprietorship`, `single_member_llc`, `partnership_llc`, `s_corp`, `c_corp` |  |
| `year_established` | No | integer |  |
| `employees` | No | integer |  |
| `financials` | No | array of FinancialPeriod |  |
| `real_estate_included` | No | boolean |  |
| `franchise_brand` | No | string, nullable |  |

Responses: `201` Created · errors as [problem details](/concepts/errors).

### One business record, private to the user or org that created it {#get-business}

```http
GET /v1/businesses/{business_id}
```

Business records back deals and a broker's own listings. They are never exposed through a listing; listings carry their own disclosed fields.

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **Key scope:** `deals:read`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `business_id` | path | Yes | string |  |

Responses: `200` Business · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### Edit a business record {#update-business}

```http
PATCH /v1/businesses/{business_id}
```

**Price:** Free · **Key scope:** `deals:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `business_id` | path | Yes | string |  |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/merge-patch+json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `name` | No | string |  |
| `naics` | No | string |  |
| `state` | No | two-letter state |  |
| `county` | No | string |  |
| `entity_type` | No | `sole_proprietorship`, `single_member_llc`, `partnership_llc`, `s_corp`, `c_corp` |  |
| `year_established` | No | integer |  |
| `employees` | No | integer |  |
| `financials` | No | array of FinancialPeriod |  |
| `real_estate_included` | No | boolean |  |
| `franchise_brand` | No | string, nullable |  |

Responses: `200` Updated · errors as [problem details](/concepts/errors).

## Comps

Broker-contributed closed deals, give-to-get.

### Contribute a closed deal (brokers); it waits for the broker's attestation in the interface {#contribute-closed-deal}

```http
POST /v1/comps/contributions
```

**Price:** Free · **MCP tool:** `contribute_closed_deal` · **Key scope:** `comps:write`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `Idempotency-Key` | header | No | string | 1 to 255 characters. Recommended on every write and on priced calls: a retry with the same key and body replays the first result and isn't charged again. |

Body (`application/json`):

| Field | Required | Type | Description |
| --- | --- | --- | --- |
| `close_month` | Yes | string | Month the deal closed, YYYY-MM. |
| `naics` | Yes | string | NAICS code, 4 to 6 digits. |
| `description` | No | string | Sanitised at intake; no names or addresses. |
| `state` | Yes | two-letter state | The business's state as a 2-letter code. |
| `close_price` | Yes | number | Price at close in whole US dollars. |
| `asking_price` | Yes | number | Asking price in whole US dollars. |
| `cash_at_close` | No | number | Cash at close in whole US dollars. |
| `seller_note` | No | object |  |
| `earnout_max` | No | number | Most the earnout could pay in whole US dollars. |
| `sba_financed` | Yes | boolean | Whether an SBA loan financed the deal. |
| `other_debt` | No | number | Other debt in whole US dollars. |
| `revenue` | No | number | Annual revenue in whole US dollars. |
| `sde` | Yes | number | Annual SDE in whole US dollars. |
| `ebitda` | No | number | Annual EBITDA in whole US dollars; may be negative. |
| `inventory_included` | No | boolean | Whether inventory was in the price. |
| `inventory_value` | No | number | Inventory amount in whole US dollars. |
| `ffe_value` | No | number | Furniture, fixtures and equipment in whole US dollars. |
| `real_estate_included` | No | boolean | Whether real estate was in the price. |
| `real_estate_value` | No | number | Real estate amount in whole US dollars. |
| `employees` | No | integer | Number of employees. |
| `days_on_market` | No | integer | Days listed before the sale. |
| `structure` | Yes | `asset`, `stock` | Asset or stock sale. |
| `franchise` | No | boolean | Whether the business is a franchise. |
| `data_basis` | Yes | `tax_return_verified`, `broker_recast`, `seller_reported` | Where the financial figures come from. |

Responses: `201` Saved as pending attestation · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `GET /comps/search` | Record-level comps for brokers who qualify by contributing | P2 |
| `GET /comps/summary` | Aggregate comps (median, interquartile range, count) for anyone, once the pool is open | P2 |

## Sources

The source registry behind every Figure.

### The source registry {#list-sources}

```http
GET /v1/sources
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `licence_status` | query | No | `cleared`, `cite_only`, `link_only` |  |
| `cursor` | query | No | string | `next_cursor` from the previous page. |
| `limit` | query | No | integer | Max results; defaults to 25. |

Responses: `200` Sources · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

### One source, its access route, licence status, terms and the date of its most recent data {#get-source}

```http
GET /v1/sources/{source_id}
```

**Price:** Lookup: 1,000 free a month, then 0.5 credits · **MCP tool:** `get_source`

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `source_id` | path | Yes | string | Registry id, such as `bls-oews`. |

Responses: `200` Source · `402` Payment required. Nothing ran and nothing was charged. `code` is `insufficient_credits` (balance below the price), `over_max_credits` (price above `Acquestor-Max-Credits`) or `over_limit` (a grant's, key's or org member's monthly limit reached). The problem carries `price`, `balance` and, on acquestor.com, a link to buy credits.  · errors as [problem details](/concepts/errors).

## Account

Your profile, usage and credits.

### The caller's profile, roles, org and plan {#get-me}

```http
GET /v1/me
```

**Price:** Free

Responses: `200` Profile · errors as [problem details](/concepts/errors).

### Usage this month by price class and by source route {#get-usage}

```http
GET /v1/usage
```

**Price:** Free

Responses: `200` Usage · errors as [problem details](/concepts/errors).

### The published price book {#get-pricing}

```http
GET /v1/pricing
```

Credits per dollar, the price of every action, monthly allowances and plans, with the date the prices took effect. Public; no sign-in. Price changes are published 30 days before they apply.

**Price:** Free

Responses: `200` Price book · errors as [problem details](/concepts/errors).

### Credit balance by bucket, with expiry dates {#get-credits}

```http
GET /v1/credits
```

Buckets are spent in this order: the monthly allowance, then plan credits (oldest first), then top-ups. For an org member, `org` shows the shared balance and the member's monthly limit.

**Price:** Free

Responses: `200` Balance · errors as [problem details](/concepts/errors).

### Every grant, purchase, charge, refund and expiry, newest first {#list-credit-ledger}

```http
GET /v1/credits/ledger
```

**Price:** Free

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `from` | query | No | date |  |
| `cursor` | query | No | string | `next_cursor` from the previous page. |
| `limit` | query | No | integer | Max results; defaults to 25. |

Responses: `200` Ledger entries · errors as [problem details](/concepts/errors).

### The published version of a terms document {#get-terms}

```http
GET /v1/terms/{kind}
```

**Price:** Free

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `kind` | path | Yes | string |  |

Responses: `200` Terms · errors as [problem details](/concepts/errors).

**Planned:**

| Operation | Does | Release |
| --- | --- | --- |
| `GET /webhooks` | Registered webhook endpoints | P2 |
| `POST /webhooks` | Register a webhook endpoint; deliveries are signed with HMAC-SHA256 | P2 |
| `DELETE /webhooks/{webhook_id}` | Remove a webhook endpoint | P2 |
