Documents
CRUD for resumes, cover letters, portfolios, and link-in-bio pages.
Description
Documents are the unified content model behind every product surface — Resume, Cover Letter,
Portfolio, and Link-in-Bio all share one Document record shape (type distinguishes them). Free
users are limited to 1 active document per type; upgrading removes that limit.
Updates use Optimistic Concurrency Control via a revision integer instead of a timestamp:
each successful update increments revision by 1, and a PATCH request must send back the
revision it read, or the API rejects it with 409.
Deletes are soft deletes — a deletedAt timestamp is set and the document is immediately
excluded from list/get responses. Hard delete and restore exist at the service layer for internal
use but are not exposed through any public route.
Authentication
| Method | Access Level | Requirement |
|---|---|---|
GET | Authenticated | Session cookie or API key with the resume:read scope. |
POST / PATCH / DELETE | Authenticated | Session cookie or API key with the resume:write scope. |
Available Endpoints
GET /documents— List DocumentsPOST /documents— Create DocumentGET /documents/{id}— Get DocumentPATCH /documents/{id}— Update DocumentDELETE /documents/{id}— Delete Document
Import Profile From LinkedInPOST
Parses raw copy-pasted LinkedIn profile text (or text extracted from an exported PDF) using AI and creates a new RESUME document from the result. This is an AI-parsed paste, not a LinkedIn API integration. Free users get 1 import/month; paid users (AI Credits or Portfolio Pro/Bundle) get unlimited imports.
List DocumentsGET
Lists the authenticated user's documents (resumes, cover letters, portfolios, link-in-bio pages), optionally filtered by type. Soft-deleted documents are excluded.