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

# Statut récurrent

> Programmez la publication automatique d'un statut à intervalles réguliers

Même règles d'audience que [Publier un statut](/api-reference/status/send) :
précisez `statusJidList` ou `audience: "all_contacts"` à l'intérieur de
`payload`, sinon personne ne verra le statut publié.

Persisté via Redis (BullMQ) : survit à un redémarrage du serveur.
Conservez l'`id` renvoyé dans la réponse — il est nécessaire pour
[lister](/api-reference/status/recurring-list) ou
[annuler](/api-reference/status/recurring-cancel) cette récurrence plus
tard. La liste est partagée entre l'API à clé et le dashboard : une
récurrence créée d'un côté est visible et annulable de l'autre.

**Arrêt automatique** — sans `limit` ni `endDate`, la récurrence tourne
**indéfiniment** jusqu'à annulation manuelle. Pour la borner :

* `limit` : nombre maximum d'occurrences (ex : `7` pour une semaine à raison
  d'une fois par jour).
* `endDate` : date d'arrêt automatique, même règle de fuseau que `sendAt`
  (toujours un offset explicite `Z`/`+HH:MM`). Ex : arrêt le 1er juin à 19h
  heure du Bénin (UTC+1) → `"2026-06-01T19:00:00+01:00"` ou son équivalent
  `"2026-06-01T18:00:00Z"`.

Les deux sont optionnels et cumulables (le premier des deux atteints arrête
la récurrence).


## OpenAPI

````yaml api-reference/openapi.json POST /sessions/{sessionId}/status/recurring
openapi: 3.1.0
info:
  title: WaaConnect API
  description: >-
    API WhatsApp multi-sessions de WaaConnect. Toutes les routes de messagerie
    sont préfixées par /sessions/:sessionId/ et nécessitent le header x-api-key.
  version: 1.0.0
servers:
  - url: https://api.waaconnect.com/v1
security:
  - apiKey: []
paths:
  /sessions/{sessionId}/status/recurring:
    post:
      tags:
        - Status
      summary: Statut récurrent
      description: >-
        Programme la publication automatique d'un statut à intervalles
        réguliers. Même règles d'audience que /status/send, à l'intérieur de
        payload. Persisté (BullMQ/Redis) : survit à un redémarrage du serveur,
        et peut être listé/annulé (voir GET et DELETE sur cette même route).
        Sans limit ni endDate, la récurrence tourne indéfiniment jusqu'à
        annulation manuelle.
      parameters:
        - name: sessionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - payload
                - everyMs
              properties:
                payload:
                  type: object
                  description: Même structure que le corps de /status/send
                  required:
                    - type
                  properties:
                    type:
                      type: string
                      enum:
                        - text
                        - image
                        - video
                        - audio
                    text:
                      type: string
                      description: Requis si type=text
                    url:
                      type: string
                      description: URL publique du média, requis si type != text
                    caption:
                      type: string
                      description: Légende (image/vidéo)
                    backgroundColor:
                      type: string
                      description: Couleur de fond hex, statuts texte uniquement
                      example: '#111B21'
                    statusJidList:
                      type: array
                      description: Audience personnalisée. Prioritaire sur audience.
                      items:
                        type: string
                    audience:
                      type: string
                      enum:
                        - all_contacts
                      description: Diffuse à tous les contacts déjà synchronisés
                everyMs:
                  type: integer
                  description: >-
                    Intervalle de répétition en millisecondes (ex: 86400000 pour
                    24h)
                limit:
                  type: integer
                  description: >-
                    Nombre maximum d'occurrences (optionnel). La récurrence
                    s'arrête d'elle-même une fois atteint.
                endDate:
                  type: string
                  description: >-
                    Date d'arrêt automatique, ISO 8601 avec fuseau explicite (Z
                    ou +HH:MM). Ex: 19h heure du Bénin (UTC+1) =
                    2026-06-01T19:00:00+01:00, équivalent à
                    2026-06-01T18:00:00Z.
                  example: '2026-06-01T18:00:00Z'
            example:
              payload:
                type: text
                text: Rappel quotidien
                audience: all_contacts
              everyMs: 86400000
              limit: 7
      responses:
        '200':
          description: Récurrence programmée
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  id:
                    type: string
                    description: Identifiant à utiliser pour annuler via DELETE
                  recurringEveryMs:
                    type: integer
                  limit:
                    type: integer
                    nullable: true
                  endDate:
                    type: string
                    nullable: true
                  recurringJobKey:
                    type: string
              example:
                ok: true
                id: uuid-recurring-42
                recurringEveryMs: 86400000
                limit: 7
                endDate: null
                recurringJobKey: wa:status:repeat:abc123
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````