---
title: "[BETA] post a text or media status/story"
method: POST
path: "/instances/{id}/client/action/post-status"
tags: ["story"]
---

# [BETA] post a text or media status/story

`POST /instances/{id}/client/action/post-status`

Publishes a status update visible to contacts per the user's privacy settings. Provide `content` for a text status (with optional `backgroundColor` ARGB integer and `fontStyle` 0-7) or `mediaUrl` (plus optional `mediaCaption`) for an image/video/audio status. Note: This endpoint is currently in beta and may change without notice.

## Path parameters

- `id` integer, required

## Request body

- object
  - `content` string — Text content for a text status, or caption fallback for media
  - `mediaUrl` string, uri — Publicly reachable URL of image/video/audio for a media status
  - `mediaCaption` string — Caption for a media status (overrides content)
  - `mediaName` string — Optional filename for the downloaded media
  - `backgroundColor` integer — ARGB color for text status background (e.g. 4286070949 = 0xff7acca5)
  - `fontStyle` integer — Font style index for text status, 0 through 7
  - `sendVideoAsGif` boolean — Send the video media as a GIF
  - `sendAudioAsVoice` boolean — Send the audio media as a voice note
  - `audience` object — Optional audience restriction. ⚠️ Setting this changes the persistent account-level Status privacy and is synchronized to all linked devices. To restore the default visibility, call /set-status-privacy with type "all".
    - `type` 'all' | 'allow' | 'deny', required — "all" shows the Status to all contacts; "allow" restricts visibility to the listed contacts; "deny" excludes the listed contacts.
    - `contacts` string[] — E.164 phone numbers (e.g. +491234567890) or chat IDs (e.g. 491234567890@c.us). Required when type is "allow" or "deny".

## Response `200`

Status posted successfully

- object
  - `status` 'success' | 'error'
  - `instanceId` string
  - `data` object
    - `posted` boolean
    - `message` object — The posted status message
  - `links` object
    - `self` string

## Other responses

- `401` — Unauthorized — invalid or missing bearer token
- `403` — Forbidden — insufficient permissions or account blocked
- `404` — Not found — instance does not exist or does not belong to you
- `409` — Conflict — instance is not ready
- `422` — Validation error — content or mediaUrl required, fontStyle out of range, etc.
- `429` — Too many requests — rate limit exceeded

---

[API](https://skmtc.net/waapi/apis/waapi-api.md) · [All operations](https://skmtc.net/waapi/apis/waapi-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/waapi/waapi-api/revisions/1e2cc7c12090/schema)
