---
name: 1stauthor-papers
description: Search and read scientific papers in full text through the 1stAuthor API — arXiv and preprint servers, section by section, with per-section TLDRs. Use when a claim needs a paper behind it, or when asked what the literature reports.
---

# 1stAuthor Papers

Full text of 3.13M arXiv papers (sectioned, per-section TLDR) plus bioRxiv / medRxiv retrieval.

Base URL `https://api.1stauthor.com`. Every call takes `Authorization: Bearer $FA_API_KEY`; the free samples named below work without a key. Free sample id: `2409.05591`, free sample query: `transformer`.

## Three verbs, every domain

```
POST /v1/{domain}/search  {query, filters?, top_k?}      → hits[].id + a card each
GET  /v1/{domain}/read/{id}?level=brief|detail|full      → read as deep as you need
POST /v1/{domain}/ask     {query, effort: low|medium|high} → an answer with real citations
```

`read` also takes `extra=<side>` for another side of the same document and `format=json|md|html`.
At `level=full`, `section=<name>` reads one section and `characters=N` the first N characters.

## Start here

- **Find papers** — `POST /v1/papers/search {"query": "speculative decoding", "filters": {"publish_at": {"gte": "2024"}, "categories": ["cs.CL"]}}`
- **Read a paper** — `GET /v1/papers/read/2409.05591`
- **Just ask** — `POST /v1/papers/ask {"query": "DEER 在 HumanEval 上加速多少", "effort": "low"}`

## Search filters

| field | type | meaning |
|---|---|---|
| `authors` | keyword · eq any | Author name; any match, also boosts ranking |
| `orgs` | keyword · eq any | Organisation; any match, also boosts ranking |
| `categories` | keyword · eq any | arXiv category, e.g. cs.CL |
| `publish_at` | datetime · range | Publication date range: YYYY / YYYY-MM / YYYY-MM-DD |
| `citations` | integer · range | Minimum citation count (gte only) |

Rarely needed, but valid: `source`, `venues`, `venue_year`.

Filters combine with AND; `_or` / `_not` are available. Ranges are `{"gte": n}` / `{"lte": n}`, full text is `{"text": "…"}`.

## Read

| level | credits | returns |
|---|---|---|
| `brief` | 1 | Title, TLDR, keywords, date, citations, GitHub. ~300 tok |
| `detail` (default) | 2 | Metadata + section map (name / tldr / tokens per section) + total tokens |
| `full` | 5 | The whole paper as markdown |

| extra | credits | returns |
|---|---|---|
| `trending` | 1 | X/Twitter attention signal |

## Ask

`POST /v1/papers/ask {query, effort}` — Hybrid retrieval, reads sections, answers with real [arXiv:id] citations; /stream is NDJSON. Costs 50 / 100 / 200 credits by effort. Append `/stream` for NDJSON; the first event is always `billing`.

`sources` is the retrieval set, not the citation list — filter it by the ids that appear in `answer`. `answer_truncated` means the answer is incomplete; say so.

## Also here



## Facets

`GET /v1/papers/facets?field=<field>` lists the legal values for `source`, `categories`, `venues` — free, no key. Use it instead of guessing a spelling.

## Working rules

- **Search first, read second.** A search hit is a card; decide from the card which ids deserve a read.
- **Read in layers.** `detail` answers most questions; go to `full` only when the answer is not in it.
- **Filters are declared.** An undeclared filter field is a 400, never a silent no-op. `GET /v1/{domain}` lists what exists.
- **Cite what you read.** Use the citation format below, and say plainly when the corpus has nothing.
- **Failures are not charged.** A 404 costs nothing; an upstream error is refunded. Quote `meta.request_id` when reporting one.

Citation format: `[arXiv:2409.05591]`.

## What this corpus will and will not tell you

- `section` (with level=full) must match sections[].name from level=detail exactly, numbering included (e.g. '1. Introduction').

---

Generated from https://api.1stauthor.com/v1/papers on 2026-10-14. Full reference: https://1stauthor.com/docs/papers/