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

# Update Playback Progress

> Updates playback progress for a movie or episode. If progress exceeds **90%**, the content is automatically marked as watched in history. **Requires a secret key** (`sk_...`).

## Usage

Creates or updates a playback session and its progress.

Authentication is required via `x-api-key` or `Authorization: Bearer`. Write access requires the permissions associated with a secret key (`sk_`).

## Example

```bash theme={null}
curl -X POST -H "x-api-key: $DEJAVU_API_KEY" -H "Content-Type: application/json" \
  -d '{"type":"movie","id":550,"progress":50}' "https://dejavu.plus/api/v1/scrobble"
```

## Parameters and response

The request body and responses are defined by the OpenAPI specification displayed on this page.

## Errors

See **Responses** for the operation-specific error codes and formats.

## Notes

At a playback progress of at least 90%, dejaVu applies the completion behavior documented by the API.


## OpenAPI

````yaml POST /scrobble
openapi: 3.1.0
info:
  title: dejaVu API V1
  description: >-
    API publique dejaVu V1 pour intégrer la collection, l’historique, les
    favoris, les notes, la watchlist, le scrobble, les listes, les chaînes, les
    connecteurs et les fonctions d’intégration.
  version: 1.0.0
servers:
  - url: https://dejavu.plus/api/v1
    description: Production
security:
  - ApiKeyHeader: []
  - BearerAuth: []
tags:
  - name: Collection
    description: Gérez votre collection personnelle de films et séries vus ou possédés.
  - name: History
    description: Consultez et gérez votre historique de visionnage.
  - name: Favorites
    description: Ajoutez et retirez des films et séries de vos favoris.
  - name: Ratings
    description: Notez et rédigez des avis sur vos films, séries, saisons et épisodes.
  - name: Watchlist
    description: Gérez votre liste de contenus à regarder.
  - name: Scrobble
    description: Suivez la progression de lecture en temps réel.
  - name: Up Next
    description: Obtenez les prochains épisodes à regarder pour les séries que vous suivez.
  - name: Lists
    description: Créez et gérez des listes personnalisées de films et séries.
  - name: Dashboard
    description: Expose la configuration du tableau de bord et le contenu des widgets.
  - name: User
    description: Informations de compte et statistiques.
  - name: Auth
    description: Authentification des appareils et gestion des jetons.
  - name: Channels
    description: Chaînes et univers accessibles à l’utilisateur.
  - name: Connectors
    description: Connecteurs utilisés par l’extension navigateur.
  - name: Kodi
    description: Import de bibliothèques Kodi.
  - name: Media
    description: Résolution et statut de médias.
paths:
  /scrobble:
    post:
      tags:
        - Scrobble
      summary: Mettre à jour la progression de lecture
      description: >-
        Met à jour la progression de lecture d'un film ou épisode. Si la
        progression dépasse **90%**, le contenu est automatiquement marqué comme
        vu dans l'historique. **Requiert une clé secrète** (`sk_...`).
      operationId: updateScrobble
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScrobbleInput'
            example:
              type: movie
              id: 550
              progress: 42
              duration: 120
      responses:
        '200':
          description: Progression mise à jour. Si > 90%, marqué comme vu automatiquement.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    default: true
        '400':
          $ref: '#/components/responses/UnprocessableEntity'
          description: 'Requête invalide : paramètre ou corps de requête incorrect.'
        '401':
          $ref: '#/components/responses/Unauthorized'
          description: Authentification absente, invalide ou clé API non autorisée.
        '403':
          $ref: '#/components/responses/Forbidden'
          description: Clé API valide mais permissions insuffisantes pour cette opération.
      security:
        - ApiKeyHeader: []
        - BearerAuth: []
components:
  schemas:
    ScrobbleInput:
      type: object
      required:
        - type
        - progress
        - duration
      properties:
        type:
          type: string
          enum:
            - movie
            - episode
        id:
          type: integer
          description: >-
            ID TMDB du film ou de l'épisode, facultatif si tmdbId ou le contexte
            d'épisode est fourni.
        progress:
          type: integer
          description: Secondes déjà lues
        duration:
          type: integer
          description: Durée totale du contenu en secondes
        tmdbId:
          type: integer
          minimum: 1
          description: ID TMDB du film ou ID TMDB de la série pour résoudre un épisode.
        tvShowId:
          type: integer
          minimum: 1
          description: ID TMDB de la série pour résoudre un épisode.
        seasonNumber:
          type: integer
          minimum: 0
          description: Numéro de saison pour résoudre un épisode.
        episodeNumber:
          type: integer
          minimum: 1
          description: Numéro d'épisode pour résoudre un épisode.
      description: >-
        Met à jour la progression d'un film ou d'un épisode. À 90 % ou plus, le
        contenu est automatiquement marqué comme vu.
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Code d'erreur machine-readable
        message:
          type: string
          description: Description lisible de l'erreur
  responses:
    UnprocessableEntity:
      description: Données de requête invalides.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: VALIDATION_ERROR
            message: The field 'rating' must be between 1 and 10.
    Unauthorized:
      description: >-
        Authentification requise. Utilisez le header x-api-key ou Authorization:
        Bearer <key>.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: UNAUTHORIZED
            message: API key is missing or invalid.
    Forbidden:
      description: Accès refusé. Cette opération nécessite une **clé secrète** (`sk_...`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: FORBIDDEN
            message: A secret key (sk_...) is required for write operations.
  securitySchemes:
    ApiKeyHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Clé API dejaVu. pk_* = lecture seule ; sk_* = lecture et écriture.
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Clé API dejaVu envoyée dans Authorization: Bearer <key>.'

````