---
title: "A file's reader annotations (Pro)"
method: GET
path: "/api/v1/files/{uuid}/annotations"
tags: ["Events"]
---

# A file's reader annotations (Pro)

`GET /api/v1/files/{uuid}/annotations`

## Request

- Base URL: `https://everypage.co`
- URL: `https://everypage.co/api/v1/files/{uuid}/annotations`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://everypage.co/oauth/authorize`, token URL `https://everypage.co/oauth/token`, scopes: `readership:read`)

Every annotation readers have drawn on the document, grouped by page, with the marked-up region and the reader's note. Owner only; requires Pro. Scope `readership:read`. Same `identity` semantics and the same pull-on-event pattern as the page-marks endpoint above.

## Query parameters

- `format` 'csv'

## Response `200`

Annotations

- object
  - `pages` object[]
    - `page` integer
    - `annotations` object[]
      - `uuid` string
      - `identity` string: Invitee email address, or a pseudonymous reader label.
      - `rect` object: The annotated region on the page.
      - `note` string
      - `createdAt` string, date-time

## Other responses

- `401`: No or invalid API key, OAuth token, manage token or claim token (code `missing_token` or `invalid_token`).
- `403`: Not the owner, or the plan is below Pro.
- `404`: Unknown id, or a file you do not own on routes where 404 replaces 403 (code `not_found`).
- `429`: Over the limit - 120 requests per minute per Authorization value on /api/v1 (webhook test 10/min; the Canva lane 30/min per IP). Code `rate_limited`; wait for `Retry-After`.

---

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