# Authors

Search contributors by name, or get one by FullDatasets id.

MCP: `search_authors` `{ "q": "Andy Weir" }` — do **not** put an author-only string into `search_books`.

## Search

```bash
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
  "https://api.fulldatasets.com/v1/authors/search?q=Andy%20Weir"
```

| Query | Required | Notes |
|---|---|---|
| `q` | yes | Name or prefix |
| `limit` | no | Default `20`, max `50` |

```json
{ "results": [{ "id": "fds_au_…", "name": "Andy Weir", "sort_name": "Weir, Andy" }] }
```

Prefix and trigram match on `contributors.name`. Books by that person: `GET /v1/authors/{id}/books` (indexed `work_contributors`, not a name scan).

## Get by id

You have an `fds_au_…` id from `GET /v1/authors/search` or from `contributors[].id` on a book. `authors` is still the display-name array.

## Request

```bash
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
  https://api.fulldatasets.com/v1/authors/fds_au_37316331633930383534
```

| Path | Required | Notes |
|---|---|---|
| `id` | yes | Contributor id (`fds_au_…`) |

## Response `200`

```json
{
  "id": "fds_au_37316331633930383534",
  "name": "Andy Weir",
  "sort_name": "Weir, Andy",
  "release": "2026-09.2"
}
```

- `301` — merged contributor; follow `Location`
- `404` — unknown id

Cached 24h after auth.

## Books by author

```bash
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
  "https://api.fulldatasets.com/v1/authors/fds_au_37316331633930383534/books"
```

One primary English edition per work, from `work_contributors.contributor_id`. Do not `search_books` an author name.

## See also

- [Data model](/docs/data-model)
- [Search](/docs/search) — title browse; books-by-author is `GET /v1/authors/{id}/books`
- [Match](/docs/match) — title + optional author
