---
title: "Start a PDF export job"
method: POST
path: "/v1/exports/pdf"
tags: ["Bookmarks"]
---

# Start a PDF export job

`POST /v1/exports/pdf`

## Request

- Base URL: `https://api.linkedmash.com`
- URL: `https://api.linkedmash.com/v1/exports/pdf`
- Auth: one of:
  - OAuth 2 (client credentials, token URL `https://api.linkedmash.com/auth/oauth/token`, scopes: `exports:write`)
  - HTTP bearer
  - API key in header `linkedmash-api-key`

Create and dispatch an asynchronous PDF export job for selected, filtered, or all saved posts, then return its job identifier and Export Center page.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `post_ids` string[]: Explicit saved-post identifiers to include; omit to use filters or the whole library.
  - `q` string: Full-text query applied to the saved-post library.
  - `author` string: LinkedIn author identifier used to narrow matching posts.
  - `tag` string: Existing label used to narrow matching posts.
  - `media_type` string: Media type used to narrow matching posts.
  - `posted_from` string, date-time: Inclusive earliest LinkedIn post timestamp.
  - `posted_to` string, date-time: Inclusive latest LinkedIn post timestamp.
  - `bookmarked_from` string, date-time: Inclusive earliest saved timestamp.
  - `bookmarked_to` string, date-time: Inclusive latest saved timestamp.
  - `is_unread_only` boolean: Limit the operation to unread saved posts.
  - `hide_archived` boolean: Exclude archived saved posts when true.

## Response `202`

The PDF export job was accepted for asynchronous processing.

- object
  - `status` true, required
  - `message` string
  - `data` object, required
    - `job_id` string, required: Created export job identifier.
    - `job_ids` string[]: All job identifiers for a paginated export.
    - `page` string, required: Authenticated Export Center page for progress and download.

## Other responses

- `400`: The request was invalid, unauthorized, not entitled, rate limited, or could not be completed.
- `401`: The request was invalid, unauthorized, not entitled, rate limited, or could not be completed.
- `402`: The request is valid but the account is not entitled to it. The body names the plan that lifts the block, what it unlocks, its price, and a checkout URL preselected on that plan.
- `409`: The request was invalid, unauthorized, not entitled, rate limited, or could not be completed.
- `429`: The request was invalid, unauthorized, not entitled, rate limited, or could not be completed.
- `500`: The request was invalid, unauthorized, not entitled, rate limited, or could not be completed.

---

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