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

# Send a Messenger text reply directly

> Use your connected Facebook Page to send a one-to-one text reply.
Meta determines reply eligibility; YCloud does not precheck the messaging window.
Use a Tenant API Key. Developer App API Keys are not supported.

Each call submits a new message. If a timeout occurs or you receive
502 MESSENGER_MESSAGE_RESULT_UNKNOWN, Meta may still have accepted the message.
Do not automatically resubmit it. Check the saved message status using a returned
YCloud or Meta message ID when available, or contact support to investigate.




## OpenAPI

````yaml /openapi/endpoints/ycloud-api-v2.yaml post /messenger/messages/sendDirectly
openapi: 3.0.0
info:
  description: >-
    The [YCloud](https://ycloud.com) API is organized around
    [REST](https://en.wikipedia.org/wiki/Representational_state_transfer). Our
    API is designed to have predictable, resource-oriented URLs, return
    [JSON](https://www.json.org) responses, and use standard HTTP response codes
    and verbs.
  version: v2
  title: YCloud API
  termsOfService: https://ycloud.com/terms-service
  contact:
    email: service@ycloud.com
servers:
  - url: https://api.ycloud.com/v2
    description: Base URL
security:
  - api_key: []
tags:
  - name: Balance
  - name: Contacts
  - name: Custom Events
  - name: Emails
  - name: SMS
  - name: Unsubscribers
  - name: Verify
  - name: Voices
  - name: Webhook Endpoints
  - name: WhatsApp Business Accounts
  - name: WhatsApp Inbound Messages
  - name: WhatsApp Media
  - name: Messenger Messages
  - name: WhatsApp Messages
  - name: WhatsApp Blocked Users
  - name: WhatsApp Groups
  - name: WhatsApp Calling
  - name: WhatsApp Phone Numbers
  - name: WhatsApp Templates
  - name: WhatsApp Flows
  - name: Meta Business Agent
externalDocs:
  description: Homepage
  url: https://ycloud.com
paths:
  /messenger/messages/sendDirectly:
    post:
      tags:
        - Messenger Messages
      summary: Send a Messenger text reply directly
      description: >
        Use your connected Facebook Page to send a one-to-one text reply.

        Meta determines reply eligibility; YCloud does not precheck the
        messaging window.

        Use a Tenant API Key. Developer App API Keys are not supported.


        Each call submits a new message. If a timeout occurs or you receive

        502 MESSENGER_MESSAGE_RESULT_UNKNOWN, Meta may still have accepted the
        message.

        Do not automatically resubmit it. Check the saved message status using a
        returned

        YCloud or Meta message ID when available, or contact support to
        investigate.
      operationId: messenger_message-send-directly
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessengerTextSendRequest'
            example:
              from: '422500000000000'
              to: '100800000000000'
              type: text
              text:
                body: Hello, how can I help you?
      responses:
        '200':
          description: >
            Meta has accepted the submission. This receipt does not assert
            delivery

            or the record's current status.
          headers:
            YCloud-Request-ID:
              $ref: '#/components/headers/YCloudRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessengerSendReceipt'
              example:
                id: '1308528868252065792'
                metaMessageId: m_SAMPLE_001
                from: '422500000000000'
                to: '100800000000000'
                status: accepted
        '400':
          $ref: '#/components/responses/MessengerBadRequest'
        '401':
          $ref: '#/components/responses/MessengerUnauthorized'
        '403':
          $ref: '#/components/responses/MessengerForbidden'
        '404':
          $ref: '#/components/responses/MessengerNotFound'
        '429':
          $ref: '#/components/responses/MessengerRateLimited'
        '500':
          $ref: '#/components/responses/MessengerInternalError'
        '502':
          $ref: '#/components/responses/MessengerResultUnknown'
components:
  schemas:
    MessengerTextSendRequest:
      type: object
      required:
        - from
        - to
        - type
        - text
      properties:
        from:
          type: string
          minLength: 1
          maxLength: 64
          description: >-
            The Facebook Page ID; not an authorization-record ID or phone
            number.
        to:
          type: string
          minLength: 1
          maxLength: 64
          description: >-
            Recipient PSID scoped to the specified Page; do not substitute a
            global Facebook ID.
        type:
          type: string
          enum:
            - text
        text:
          $ref: '#/components/schemas/MessengerText'
    MessengerSendReceipt:
      type: object
      required:
        - id
        - metaMessageId
        - from
        - to
        - status
      properties:
        id:
          type: string
          description: The local outbound recordId, serialized as a decimal string.
        metaMessageId:
          type: string
          description: The confirmed Meta message ID.
        from:
          type: string
        to:
          type: string
        status:
          type: string
          enum:
            - accepted
          description: Submission receipt only; retrieve the record for its current state.
    MessengerText:
      type: object
      required:
        - body
      properties:
        body:
          type: string
          minLength: 1
          description: Nonblank text. Leading and trailing spaces are preserved.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          $ref: '#/components/schemas/Error'
          description: >-
            Contains the error code and human-readable message for the API
            error.
    Error:
      type: object
      required:
        - status
        - code
      properties:
        status:
          type: integer
          format: int32
          pattern: '[45]\d{2}'
          description: >-
            HTTP status code, [RFC 7231, Section
            6](https://datatracker.ietf.org/doc/html/rfc7231#section-6). It
            conveys the HTTP status code used for the convenience of the
            consumer.
          example: 404
        code:
          type: string
          description: >-
            One of a server-defined error codes. Some `4xx` errors that could be
            handled programmatically include an error code that briefly explains
            the error reported.
          example: NOT_FOUND
        message:
          type: string
          description: >-
            A human-readable representation of the error. It is intended as an
            aid to developers and is not suitable for exposure to end users.
          example: The requested resource does not exist.
        target:
          type: string
          description: The target of the error.
          example: ''
        docUrl:
          type: string
          description: A URL to more information about the error.
          example: ''
        requestId:
          type: string
          description: >-
            Each API request has an associated request ID. It conveys the
            response header `YCloud-Request-ID` used for the convenience of the
            consumer.
          example: req_1KjtKI80IKoaJNa6n6p
        whatsappApiError:
          $ref: '#/components/schemas/WhatsappApiError'
          description: >-
            The original error object returned by WhatsApp. See [Handling
            Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling),
            [Cloud API Error
            Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).


            Note: This field is returned if we tried to request the WhatsApp
            Business API and got an error response.
        metaBusinessAgentApiError:
          $ref: '#/components/schemas/MetaBusinessAgentApiError'
          description: >-
            Sanitized upstream details returned when a Meta Business Agent
            request fails.
        messengerApiError:
          $ref: '#/components/schemas/MessengerApiError'
          description: >-
            Numeric Meta diagnostics for a confirmed Messenger submission
            refusal. Omitted when unavailable.
    WhatsappApiError:
      type: object
      description: >-
        The original error object returned by WhatsApp. See [Handling
        Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling),
        [Cloud API Error
        Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
      required:
        - message
        - code
      properties:
        message:
          type: string
          description: A human-readable description of the error.
          example: HSM Template creation failed
        code:
          type: string
          description: An error code.
          example: 200002
        type:
          type: string
          description: Error type.
          example: OAuthException
        is_transient:
          type: boolean
          description: Whether the error is transient.
          example: false
        error_subcode:
          type: string
          description: Additional code about the error.
          example: 2388109
        error_user_msg:
          type: string
          description: >-
            The message to display to the user. The language of the message is
            based on the locale of the API request.
          example: This message template cannot be created.
        error_user_title:
          type: string
          description: >-
            The title of the dialog, if shown. The language of the message is
            based on the locale of the API request.
          example: Message Cannot Be Submitted
        fbtrace_id:
          type: string
          description: >-
            Internal support identifier. When reporting a bug related to a Graph
            API call, include the fbtrace_id to help us find log data for
            debugging.
          example: AVGjJ7ia2zJkrHG
        error_data:
          description: >-
            Additional data about the error. A string or map.

            - For template APIs, this field is a string describing the reason
            for the error.

            - For message APIs, this field is a map with property `details`
            describing the reason for the error.
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
    MetaBusinessAgentApiError:
      type: object
      description: Sanitized details from a failed Meta Business Agent upstream request.
      properties:
        title:
          type: string
        detail:
          type: string
        type:
          type: string
        status:
          type: integer
          format: int32
        requestId:
          type: string
    MessengerApiError:
      type: object
      description: >-
        Numeric provider diagnostics only. Does not contain raw Meta error text
        or access credentials.
      required:
        - code
      properties:
        code:
          type: string
          description: Meta error code, encoded as a string.
          example: '100'
        subcode:
          type: string
          description: >-
            Meta error subcode, encoded as a string. Omitted if Meta did not
            provide it.
          example: '2018276'
  headers:
    YCloudRequestId:
      description: Server-generated HTTP request identifier for troubleshooting.
      schema:
        type: string
  responses:
    MessengerBadRequest:
      description: >
        400 PARAM_MISSING, PARAM_INVALID, PARAM_INVALID_LENGTH or BAD_REQUEST.

        A confirmed Meta refusal maps to BAD_REQUEST and does not trigger
        automatic resubmission.

        When numeric provider diagnostics are available, error.messengerApiError
        contains

        the Meta code and optional subcode. The message provides a categorized
        hint;

        raw provider error text is not returned.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerUnauthorized:
      description: Existing API-key authentication failure (401 UNAUTHORIZED).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerForbidden:
      description: >
        403 FORBIDDEN. Includes unavailable channel/new-send authorization and
        unsupported

        developer app API keys. Does not block historical record reads merely
        because a Page is disconnected.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerNotFound:
      description: >-
        404 NOT_FOUND. Missing/unowned Page for a new send, or no record in
        tenant/from scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerRateLimited:
      description: >-
        429 TOO_MANY_REQUESTS. Reuse existing REST rate limiting and applicable
        retry/rate-limit headers.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerInternalError:
      description: >-
        500 INTERNAL_SERVER_ERROR. The service cannot store or retrieve the
        record, or is not configured correctly. If the send may have reached
        Meta, the response is 502 MESSENGER_MESSAGE_RESULT_UNKNOWN instead.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    MessengerResultUnknown:
      description: >
        502 MESSENGER_MESSAGE_RESULT_UNKNOWN. YCloud cannot confirm the
        submission result.

        Meta may still have accepted the message. Do not automatically resubmit
        it.

        Check the saved status using a returned message ID when available, or
        contact

        support. An unavailable result does not include an invented message ID.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    api_key:
      type: apiKey
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.