# Find a record by name

REACH FOR THIS THE MOMENT A QUESTION NAMES A RECORD — 'who is assigned to Just Perfect Cleaning', 'where is Acme', 'what is happening with HGM Capital', 'find the Specter Loans lead' — instead of listing a page's rows and scanning them for the name. Search the whole workspace for a record and get back where it lives. Give it a name, an email address, a phone number, a company or any fragment of a cell and it answers the matching records across every page and every board this seat may read, grouped by the page or board they sit on, each with the record's id, its name and the cell the term was found in. One call covers pages you were not told about, and it is the only read that does: a board is 12,000 rows deep and a page of rows is the first 200, so scanning rows for a name is both slower and wrong. Matching is case-blind and matches inside a word; hits in the record's own name rank above hits elsewhere. `limit` and `offset` page it, and `truncated` says there were more matches than came back — when it is true, narrow the term rather than concluding the record does not exist.

Access class: `workspace`.

## Endpoint

`GET /v1/search`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": {
    "groups": [
      "string"
    ],
    "limit": 1.5,
    "offset": 1.5,
    "query": "string",
    "truncated": true
  }
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
