Search documents
Case-insensitive substring match against document name. Returns up to `limit` most-recent matches.
Authorization
bearerAuth documents.readDashboard-issued token (pm_live_...) or OAuth-issued access token.
In: header
Scope: documents.read
Query Parameters
1 <= length251 <= value <= 100Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.papermark.com/v1/documents/search?q=pitch+deck"{
"data": [
{
"id": "clxy9abc1234567890",
"name": "pitch-deck-q4.pdf",
"type": "pdf",
"content_type": "application/pdf",
"num_pages": 12,
"folder_id": null,
"created_at": "2026-04-17T10:00:00.000Z",
"updated_at": "2026-04-17T10:00:00.000Z"
}
],
"next_cursor": "string"
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}{
"error": {
"code": "unauthorized",
"message": "Missing bearer token.",
"doc_url": "https://www.papermark.com/docs/api/errors#unauthorized",
"details": null
}
}Promote a version to primary
Set `is_primary: true` to promote this version. The previously-primary version is demoted in the same transaction. The only valid body is `{ "is_primary": true }`; demoting without promoting another version is not supported.
Generate a presigned upload URL
Step 1 of the document upload flow. Returns a presigned S3 PUT URL and an opaque one-time `upload_id`. Upload the file bytes directly to `upload_url`, then call POST /v1/documents with that `upload_id`.