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

# Retrieve an outbound message by its YCloud ID

> Retrieves a locally stored outbound record scoped by authenticated tenant and from.
Does not query Meta or require the Page to remain connected. There is no inbound
detail lookup or public message-history list in this phase.




## OpenAPI

````yaml /openapi/endpoints/ycloud-api-v2.yaml get /messenger/messages/{id}
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/{id}:
    get:
      tags:
        - Messenger Messages
      summary: Retrieve an outbound message by its YCloud ID
      description: >
        Retrieves a locally stored outbound record scoped by authenticated
        tenant and from.

        Does not query Meta or require the Page to remain connected. There is no
        inbound

        detail lookup or public message-history list in this phase.
      operationId: messenger_message-retrieve
      parameters:
        - name: id
          in: path
          required: true
          description: >
            YCloud outbound record ID as a positive decimal Long string, without
            signs or leading zeroes;

            never a Meta message ID. Nonmatching paths return 404; Long overflow
            returns 400.
          schema:
            type: string
            pattern: ^[1-9][0-9]{0,18}$
            minLength: 1
          example: '1308528868252065792'
        - $ref: '#/components/parameters/MessengerFromPage'
      responses:
        '200':
          description: >
            The current locally stored outbound record, including rejected or
            unknown submission results.

            Null optional fields are omitted. Query success is 200 even when the
            message was rejected.

            Includes active reactions reconstructed from saved events, or []
            when none remain.

            Only interactions saved after reaction persistence was enabled are
            available.
          headers:
            YCloud-Request-ID:
              $ref: '#/components/headers/YCloudRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessengerMessage'
              example:
                id: '1308528868252065792'
                metaMessageId: m_SAMPLE_001
                from: '422500000000000'
                to: '100800000000000'
                type: text
                text:
                  body: Hello, how can I help you?
                status: read
                createTime: '2026-10-16T10:00:00.000Z'
                updateTime: '2026-10-16T10:00:03.000Z'
                sendTime: '2026-10-16T10:00:00.500Z'
                deliverTime: '2026-10-16T10:00:01.000Z'
                readTime: '2026-10-16T10:00:03.000Z'
                reactions:
                  - psid: '100800000000000'
                    reaction: love
                    emoji: ❤
                    updateTime: '2026-10-16T10:00:04.000Z'
        '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'
components:
  parameters:
    MessengerFromPage:
      name: from
      in: query
      required: true
      description: >-
        Nonblank Facebook Page ID, matched exactly within the authenticated
        tenant.
      schema:
        type: string
        minLength: 1
        maxLength: 64
      example: '422500000000000'
  headers:
    YCloudRequestId:
      description: Server-generated HTTP request identifier for troubleshooting.
      schema:
        type: string
  schemas:
    MessengerMessage:
      type: object
      required:
        - id
        - from
        - to
        - type
        - text
        - status
        - createTime
        - updateTime
      properties:
        id:
          type: string
          description: >-
            YCloud outbound ID, a decimal string; never serialize it as a JSON
            number.
        metaMessageId:
          type: string
          description: Omitted when no Meta ID is confirmed.
        from:
          type: string
          description: Facebook Page ID.
        to:
          type: string
          description: Peer PSID for this Page.
        reactions:
          type: array
          description: >
            Active reactions reconstructed when retrieving an outbound message.
            Returns [] when no

            saved active reaction exists, including after withdrawal. Customer
            status webhooks omit

            this field; receiving a reaction does not change the message
            delivery status or updateTime.
          items:
            $ref: '#/components/schemas/MessengerMessageReactionState'
        type:
          type: string
          enum:
            - text
        text:
          $ref: '#/components/schemas/MessengerText'
        status:
          type: string
          enum:
            - unknown
            - accepted
            - rejected
            - sent
            - delivered
            - read
          description: >
            Current stored facts: read > delivered > sent > submission result.

            Unknown means unconfirmed or in progress, never a definitive
            failure.

            Missing receipts do not imply failure and no intermediate state is
            fabricated.
        errorCode:
          type: string
          description: >
            Locally recorded submission error, when present. A confirmed
            rejection may be

            MESSENGER_MESSAGE_REJECTED(#100:2018276),
            MESSENGER_MESSAGE_REJECTED(#100),

            or the legacy MESSENGER_MESSAGE_REJECTED when diagnostics are
            unavailable.

            MESSENGER_MESSAGE_RESULT_UNKNOWN means the submission outcome is
            unconfirmed.

            Never contains the raw Meta error body or credentials.
        createTime:
          type: string
          format: date-time
          description: Local creation time in UTC RFC 3339 with millisecond precision.
        updateTime:
          type: string
          format: date-time
          description: Local update time in UTC RFC 3339 with millisecond precision.
        sendTime:
          type: string
          format: date-time
          description: >-
            Confirmed send time in UTC RFC 3339 with millisecond precision;
            omitted when unknown.
        deliverTime:
          type: string
          format: date-time
          description: >-
            Confirmed delivery time in UTC RFC 3339 with millisecond precision;
            omitted when unknown.
        readTime:
          type: string
          format: date-time
          description: >-
            Confirmed read time in UTC RFC 3339 with millisecond precision;
            omitted when unknown.
    MessengerMessageReactionState:
      type: object
      description: >-
        The latest active reaction from a user, reconstructed from saved
        interaction events.
      required:
        - psid
        - updateTime
      properties:
        psid:
          type: string
          description: Page-scoped ID of the user who reacted.
        reaction:
          type: string
          description: >-
            Provider reaction description, when available. Clients should
            tolerate new values.
          example: love
        emoji:
          type: string
          description: Reaction emoji, when available.
          example: ❤
        updateTime:
          type: string
          format: date-time
          description: >-
            Source interaction time in UTC RFC 3339 with millisecond precision;
            independent of the message updateTime.
          example: '2026-10-16T10:00:04.000Z'
    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'
  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'
  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.