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

# Send Chat Message (/api-reference/fanvue/chat-messages/send-chat-message)

Send a message to a fan. Provide `text`, a `gif`, or one or more `mediaUuids`. A body with none of the three is rejected before Fanvue is called.

Media is referenced by the UUIDs Fanvue already holds for this creator; uploading new media is not part of this API. Set a `price` to make the message pay-to-view, and `mediaPreviewUuid` to show one of the attached items unlocked as its teaser.

Send an `Idempotency-Key` header to make a retry safe: the second request with the same key and body replays the first response instead of sending a second message. Proxies Fanvue's `POST /v1/chats/{userUuid}/message`.

## OpenAPI

````yaml https://app.onlyfansapi.com/scribe-fanvue-docs/openapi.yaml post /api/fanvue/{fanvueAccount}/chats/{userUuid}/messages
openapi: 3.0.3
info:
  title: Fanvue API Documentation
  description: ""
  version: 1.0.0
servers:
  - url: https://app.onlyfansapi.com
security:
  - default: []
tags:
  - name: Account
    description: Endpoints for your connected Fanvue accounts
  - name: Chat Messages
    description: Endpoints for the messages inside a Fanvue chat.
  - name: Chats
    description: Endpoints for a Fanvue creator's inbox. A chat is identified by the
      fan's user UUID.
  - name: Fans
    description: "Endpoints for the fans of a Fanvue creator: subscribers,
      followers, smart lists and per-fan insights."
  - name: Fanvue Account
    description: Endpoints for the connected Fanvue creator itself.
  - name: Insights
    description: "Revenue and growth reporting for a Fanvue creator: per-transaction
      earnings, the aggregated earnings summary, the subscriber trend and top
      spenders."
  - name: Profiles
    description: Public Fanvue creator profiles, readable without connecting the creator.
paths:
  /api/fanvue/{fanvueAccount}/chats/{userUuid}/messages:
    parameters:
      - in: path
        name: fanvueAccount
        description: The Fanvue Account ID
        example: fanvue_acct_XXXXXXXXXXXXXXX
        required: true
        schema:
          type: string
      - in: path
        name: userUuid
        description: The fan's Fanvue user UUID. Chats are keyed by the counterpart, so
          this is also the chat id.
        example: f47ac10b-58cc-4372-a567-0e02b2c3d479
        required: true
        schema:
          type: string
    post:
      summary: Send Chat Message
      operationId: sendChatMessage
      description: >-
        Send a message to a fan. Provide `text`, a `gif`, or one or more
        `mediaUuids`. A body with none of the three is rejected before Fanvue is
        called.


        Media is referenced by the UUIDs Fanvue already holds for this creator;
        uploading new media is not part of this API. Set a `price` to make the
        message pay-to-view, and `mediaPreviewUuid` to show one of the attached
        items unlocked as its teaser.


        Send an `Idempotency-Key` header to make a retry safe: the second
        request with the same key and body replays the first response instead of
        sending a second message. Proxies Fanvue's `POST
        /v1/chats/{userUuid}/message`.
      parameters: []
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                type: object
                example:
                  data:
                    messageUuid: 9c2d4f81-77a3-4e60-b1c5-2a8e6d0f4b12
                  _meta:
                    _credits:
                      used: 1
                      balance: 10055811
                      note: Always
                    _cache:
                      is_cached: false
                      note: Cache disabled for this endpoint
                    _rate_limits:
                      limit_minute: 5000
                      limit_day: null
                      remaining_minute: 4999
                      remaining_day: null
                      notice: We have decided to remove our daily rate limits. Please remove any
                        references to these in your integrations.
                properties:
                  data:
                    type: object
                    properties:
                      messageUuid:
                        type: string
                        example: 9c2d4f81-77a3-4e60-b1c5-2a8e6d0f4b12
                  _meta:
                    type: object
                    properties:
                      _credits:
                        type: object
                        properties:
                          used:
                            type: integer
                            example: 1
                          balance:
                            type: integer
                            example: 10055811
                          note:
                            type: string
                            example: Always
                      _cache:
                        type: object
                        properties:
                          is_cached:
                            type: boolean
                            example: false
                          note:
                            type: string
                            example: Cache disabled for this endpoint
                      _rate_limits:
                        type: object
                        properties:
                          limit_minute:
                            type: integer
                            example: 5000
                          limit_day:
                            type: string
                            example: null
                            nullable: true
                          remaining_minute:
                            type: integer
                            example: 4999
                          remaining_day:
                            type: string
                            example: null
                            nullable: true
                          notice:
                            type: string
                            example: We have decided to remove our daily rate limits. Please remove any
                              references to these in your integrations.
      tags:
        - Chat Messages
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  description: The message text (1 - 5000 characters). Required unless `gif` or
                    `mediaUuids` is provided; alongside a GIF or media it is
                    rendered as a caption.
                  example: Hey there!
                price:
                  type: number
                  description: "Unlock price in USD cents, minimum 300 ($3.00). Makes the message
                    pay-to-view, and requires `mediaUuids`: Fanvue rejects a
                    priced message with no media attached."
                  example: 500
                mediaUuids:
                  type: array
                  description: UUIDs of existing Fanvue media to attach.
                  example:
                    - 7f3d1c5e-2b9a-4d8e-9a1f-5c6b7d8e9f01
                  items:
                    type: string
                mediaPreviewUuid:
                  type: string
                  description: UUID of a single media item shown for free as the teaser of a
                    pay-to-view message. Requires a price and attached media.
                  example: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
                gif:
                  type: object
                  description: A third-party GIF to send in place of media, with `id`, `format`
                    (`GIF` or `WEBP`), `url`, `width`, `height` and an optional
                    `title`. Cannot be combined with `mediaUuids`,
                    `mediaPreviewUuid` or `price`.
                  example:
                    id: giphy-abc123
                    format: GIF
                    url: https://media.giphy.com/media/abc123/giphy.gif
                    width: 480
                    height: 270
                  properties:
                    id:
                      type: string
                      description: This field is required when <code>gif</code> is present. Must be at
                        least 1 character.
                      example: xjpillzimskoodelenmokqovimdczbisxkpmqogljhkvanxibwfivpzkxitvye
                    format:
                      type: string
                      description: This field is required when <code>gif</code> is present.
                      example: GIF
                      enum:
                        - GIF
                        - WEBP
                    url:
                      type: string
                      description: This field is required when <code>gif</code> is present. Must be a
                        valid URL.
                      example: http://oconner.info/
                    width:
                      type: integer
                      description: This field is required when <code>gif</code> is present. Must be at
                        least 1.
                      example: 32
                    height:
                      type: integer
                      description: This field is required when <code>gif</code> is present. Must be at
                        least 1.
                      example: 30
                    title:
                      type: string
                      description: ""
                      example: fugit
                      nullable: true
                templateUuid:
                  type: string
                  description: ""
                  example: null
components:
  securitySchemes:
    default:
      type: http
      scheme: bearer
      description: Get your API Key from OnlyFansAPI Console -
        https://app.onlyfansapi.com/api-keys
````