> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pnplayer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sync the whole library

> Walks the account's full media library and inserts or updates every video locally. Use this to backfill videos that were uploaded outside PN Player or whose encoding notification was missed. For large libraries prefer `POST /v1/api/video/register` with specific IDs. Requires the `UPDATE_MEDIA` scope.



## OpenAPI

````yaml POST /v1/api/video/sync
openapi: 3.1.0
info:
  title: PN Player API
  description: >-
    Manage videos, captions, playlists, tags, analytics, team members and
    account settings for your PN Player account.


    All `/v1/api` endpoints accept either an API key in the `X-Auth-Token`
    header or a JWT in the `Authorization: Bearer` header. Most endpoints also
    require the calling user to hold a specific role (scope): `READ_MEDIA`,
    `UPDATE_MEDIA`, `READ_ANALYTICS`, `READ_BILLING`, `READ_SETTINGS`,
    `UPDATE_SETTINGS` or `UPDATE_USERS`. The required scope is noted on each
    endpoint.
  version: 2.0.0
servers:
  - url: https://api.pnplayer.com
security:
  - apiKeyAuth: []
  - bearerAuth: []
tags:
  - name: Authentication
    description: >-
      Obtain a session token or reset a password. These endpoints do not require
      authentication.
  - name: Videos
    description: Create, list, update and delete videos.
  - name: Captions
    description: Upload, download, transcribe and manage caption tracks for a video.
  - name: Playlists
    description: Manual and rule-based (dynamic) playlists.
  - name: Tags
    description: Account-level tags that can be attached to videos.
  - name: Analytics
    description: Playback, engagement and usage metrics.
  - name: Reports
    description: Saved analytics report links.
  - name: Account
    description: Team members and account-wide streaming and security settings.
  - name: Profile
    description: The authenticated user's own profile.
  - name: API keys
    description: Long-lived keys for programmatic access.
  - name: Webhooks
    description: Configure the HTTPS endpoint that receives signed event notifications.
  - name: Billing
    description: Plan, usage, invoices, expansion packs and billing address.
  - name: Transcription settings
    description: Per-account key/value settings for automatic transcription.
  - name: Feature requests
    description: Submit, upvote and discuss feature requests.
  - name: Agreements
    description: Data processing agreement (DPA) and enterprise order form signing.
paths:
  /v1/api/video/sync:
    post:
      tags:
        - Videos
      summary: Sync the whole library
      description: >-
        Walks the account's full media library and inserts or updates every
        video locally. Use this to backfill videos that were uploaded outside PN
        Player or whose encoding notification was missed. For large libraries
        prefer `POST /v1/api/video/register` with specific IDs. Requires the
        `UPDATE_MEDIA` scope.
      responses:
        '200':
          description: Sync complete
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: success
                  totalItems:
                    type: integer
                    description: Videos found in the library
                  inserted:
                    type: integer
                  updated:
                    type: integer
        '403':
          $ref: '#/components/responses/Forbidden'
        '502':
          description: Could not read the library
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  responses:
    Forbidden:
      description: The caller lacks the required scope
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Forbidden
  schemas:
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: >-
        API key created in the dashboard or via `POST /v1/api/api-keys`. Keys
        are prefixed `pn_` and do not expire until revoked.
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Session token from `POST /auth/token`, valid for 24 hours.

````