> ## 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.

# Publier un statut

> Publiez un statut WhatsApp (texte, image, vidéo, audio) immédiatement

<Warning>
  Un statut WhatsApp est chiffré individuellement pour chaque destinataire —
  contrairement à un message classique, il n'existe aucun moyen pour WhatsApp
  de "deviner" qui doit le voir. Précisez toujours une audience via
  `statusJidList` ou `audience: "all_contacts"`. Si vous omettez les deux,
  l'appel réussit quand même (`200 OK`) mais **personne ne verra le statut**.
</Warning>

**Choisir son audience** — jamais les deux à la fois (`statusJidList` est
prioritaire si les deux sont fournis) :

| Mode          | Champ                      | Description                                                                                                                           |
| ------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Personnalisée | `statusJidList`            | Liste explicite de numéros. Votre propre numéro y est ajouté automatiquement.                                                         |
| Tout le monde | `audience: "all_contacts"` | Tous les contacts déjà synchronisés par cette session WhatsApp (voir l'exemple "Texte — tous les contacts" dans le panneau de droite) |

<Warning>
  Juste après une connexion (nouveau QR code), la synchronisation du carnet
  de contacts par WhatsApp peut prendre quelques secondes.
  `audience: "all_contacts"` **patiente alors jusqu'à 20 secondes** avant de
  répondre plutôt que d'échouer immédiatement — prévoyez un timeout client
  suffisant pour cet appel.
</Warning>

**Erreurs possibles avec `all_contacts`**

| Cas                                              | Réponse                                                                                                                              |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Aucun contact connu après les 20s d'attente      | `400` — `No known contacts in this session yet. Chat with contacts first or provide statusJidList explicitly.`                       |
| Le seul contact connu est votre propre compte    | `400` — `all_contacts currently contains only your own account. Open chats with contacts first or provide statusJidList explicitly.` |
| Aucun destinataire n'a de compte WhatsApp valide | `400` — `None of the status recipients are valid WhatsApp accounts. Provide valid numbers in statusJidList.`                         |

`audienceMode` dans la réponse indique le mode réellement utilisé :
`explicit` (statusJidList fourni), `all_contacts`, ou
`account_default_privacy` (ni l'un ni l'autre — le statut ne sera vu par
personne).


## OpenAPI

````yaml api-reference/openapi.json POST /sessions/{sessionId}/status/send
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/send:
    post:
      tags:
        - Status
      summary: Publier un statut
      description: >-
        Publie un statut WhatsApp (texte, image, vidéo, audio) immédiatement. Un
        statut est chiffré individuellement pour chaque destinataire : précisez
        toujours statusJidList ou audience=all_contacts, sinon personne ne le
        verra. Avec audience=all_contacts juste après une connexion, l'appel
        peut patienter jusqu'à 20 secondes le temps que la synchro des contacts
        WhatsApp arrive.
      parameters:
        - name: sessionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              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 : numéros qui verront le statut.
                    Prioritaire sur audience. Votre propre numéro y est ajouté
                    automatiquement.
                  items:
                    type: string
                  example:
                    - '22997000000'
                    - '22996000000'
                    - '22995000000'
                audience:
                  type: string
                  enum:
                    - all_contacts
                  description: Diffuse à tous les contacts déjà synchronisés par la session
            examples:
              texte_personnalise:
                summary: Texte — audience personnalisée
                value:
                  type: text
                  text: Offre réservée à nos clients VIP
                  statusJidList:
                    - '22997000000'
                    - '22996000000'
                    - '22995000000'
              texte_tous_contacts:
                summary: Texte — tous les contacts
                value:
                  type: text
                  text: Diffusion à tous nos contacts
                  audience: all_contacts
              image:
                summary: Image
                value:
                  type: image
                  url: https://example.com/status/promo.jpg
                  caption: Promo du jour
                  statusJidList:
                    - '22997000000'
              video:
                summary: Vidéo
                value:
                  type: video
                  url: https://example.com/status/story.mp4
                  caption: Teaser produit
                  audience: all_contacts
              audio:
                summary: Audio
                value:
                  type: audio
                  url: https://example.com/status/voice.mp3
                  statusJidList:
                    - '22997000000'
      responses:
        '200':
          description: Statut accepté par WhatsApp Web
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                  accepted:
                    type: boolean
                  validation:
                    type: string
                  deliveryState:
                    type: string
                  type:
                    type: string
                  target:
                    type: string
                  recipientsCount:
                    type: integer
                  statusJidList:
                    type: array
                    items:
                      type: string
                  audienceMode:
                    type: string
                    enum:
                      - explicit
                      - all_contacts
                      - account_default_privacy
                    description: >-
                      explicit=statusJidList fourni, all_contacts=audience
                      all_contacts utilisé, account_default_privacy=aucun des
                      deux (le statut ne sera vu par personne)
                  messageId:
                    type: string
              example:
                ok: true
                accepted: true
                validation: payload_validated
                deliveryState: accepted_by_whatsapp_web
                type: text
                target: status@broadcast
                recipientsCount: 128
                statusJidList:
                  - 22997000000@s.whatsapp.net
                  - ...
                audienceMode: all_contacts
                messageId: 3EB0B430B438B4F26B29
        '400':
          description: >-
            Payload invalide, ou audience all_contacts sans contact connu (après
            20s d'attente de la synchro)
          content:
            application/json:
              examples:
                no_known_contacts:
                  summary: Aucun contact connu
                  value:
                    message: >-
                      No known contacts in this session yet. Chat with contacts
                      first or provide statusJidList explicitly.
                only_self:
                  summary: Seul votre compte est connu
                  value:
                    message: >-
                      all_contacts currently contains only your own account.
                      Open chats with contacts first or provide statusJidList
                      explicitly.
                invalid_recipients:
                  summary: Aucun destinataire valide
                  value:
                    message: >-
                      None of the status recipients are valid WhatsApp accounts.
                      Provide valid numbers in statusJidList.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````