---
title: "Claim an anonymous file into your account"
method: POST
path: "/api/v1/files/claim"
tags: ["Files"]
---

# Claim an anonymous file into your account

`POST /api/v1/files/claim`

## Request

- Base URL: `https://everypage.co`
- URL: `https://everypage.co/api/v1/files/claim`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://everypage.co/oauth/authorize`, token URL `https://everypage.co/oauth/token`, scopes: `files:write`)

Attaches the anonymous file a `claimToken` references (returned by anonymous uploads, Canva publishes, and the Canva design status endpoint) to the authenticated bearer user's account. The programmatic twin of the /api/claim browser link: use it when the claiming identity must be EXACTLY the connected account - e.g. the Canva panel claims into the account its OAuth grant belongs to in the same gesture as connecting. The file keeps its expiry and encryption key; claiming unlocks the owner surfaces (library, readership, settings). Idempotent for the same owner: re-claiming a file you already own returns 200. Scope `files:write`.

## Request body

- object
  - `claimToken` string, required: The claim token bound to the file (30-day validity).

## Response `200`

Claimed (or already yours)

- ClaimResult
  - `uuid` string, uuid
  - `shortId` string
  - `viewURL` string

## Other responses

- `400`: Malformed body or multipart, or an invalid value (code `validation_error`).
- `401`: Missing/invalid bearer credential, or an invalid or expired claim token.
- `403`: Your plan's file limit is reached - free a slot or upgrade, then claim again.
- `404`: The file is no longer available to claim (expired and swept).
- `409`: The file has already been claimed by a different account.
- `413`: The upload (or the PDF a Word/PowerPoint file converted to) is above your plan's size cap - 20MB Free, 200MB Basic, 2GB Pro - or a JSON body is over its fixed cap (1MB for settings and hotspots, 64KB for variants and claims) (code `payload_too_large`).
- `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)
