---
title: "Suggest matches for typed text"
method: GET
path: "/v1/suggestion"
tags: ["suggestion"]
---

# Suggest matches for typed text

`GET /v1/suggestion`

## Request

- Base URL: `http://localhost:3030`
- URL: `http://localhost:3030/v1/suggestion`
- Auth: HTTP bearer

Suggests jurisdictions, addresses and parcel numbers as the user types.

Each match includes the `query` parameters that fetch it and, where one
exists, its `href`.

## Query parameters

- `q` string, required: The text typed so far. At least 2 characters.
- `kind` string[], nullable: Kinds of match to include. One of `address`, `parcel` or `jurisdiction`. Repeatable. Defaults to all kinds.
- `jurisdiction` string[], nullable: A jurisdiction id. Address and parcel matches are limited to it. Repeatable.
- `fips` string[], nullable: A Census GEOID: 2 digits for a state or 5 for a county, such as `48` or `48453`. Address and parcel matches are limited to it. Repeatable.
- `size` integer: Maximum number of suggestions, between 1 and 20. Defaults to 8.

## Response `200`

A page of suggestions.

- CollectionSuggestion
  - `object` 'list', required: The object's type. Always `list`.
  - `data` Suggestion[], required: The results on this page.
    - `object` 'suggestion', required: The object's type. Always `suggestion`.
    - `kind` 'address' | 'parcel' | 'jurisdiction', required: Kind of match. One of `address`, `parcel` or `jurisdiction`.
    - `label` string, required: Display text: the address, parcel number or jurisdiction name.
    - `detail` string, nullable, required: Secondary display text, such as the county for an address or the state for a county. Null when not needed.
    - `query` object, required: Query parameters for `GET /v1/parcel`, or `GET /v1/jurisdiction` for a jurisdiction. Send them unchanged.
    - `href` string, nullable, required: The matched object's path in the API. Null for an address that matches several parcels.
  - `has_more` boolean, required: Whether there are more results after this page.
  - `next_cursor` string, nullable, required: The cursor for the next page. Send it as `cursor`. Null on the last page.
  - `suppressed` integer, required: The number of matching results withheld because the plan does not include them.
  - `total` Total, required: The number of matching results.
    - `value` integer, required: The number of matching results.
    - `relation` 'eq' | 'gte', required: One of `eq` (exact) or `gte` (at least `value`). Counts above 10,000 are `gte`.

## Other responses

- `401`: `credential_missing`, `credential_invalid` or `credential_expired`. The request has no valid credential.
- `403`: `scope_missing`, `person_required`, `api_key_not_accepted` or `entitlement_missing`. The credential or plan does not allow this request. `detail` names the reason.
- `422`: `parameter_invalid`, `id_malformed` or a cursor code. A parameter is missing or invalid. `errors` lists each one.
- `429`: `rate_limited`. Too many requests. Retry after the `Retry-After` interval. Nothing is charged.
- `501`: `not_available`. Suggestions are not available yet.

---

[API](https://skmtc.dev/placestack/apis/placestack-api.md) · [All operations](https://skmtc.dev/placestack/apis/placestack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/placestack/apis/placestack-api/revisions/0ccdf0882668?raw)
