X Enterprises
fastify-xrcs

getMessageStatus

Fetch the delivery status of a sent message by its Twilio message SID.

getMessageStatus

Fetches the current delivery status of a message previously sent via sendMessage, sendCard, or sendCarousel. Returns status, error details, and timestamps.

Signature

fastify.xrcs.getMessageStatus(messageSid: string): Promise<MessageStatus>

Params

NameTypeRequiredDescription
messageSidstringYesThe Twilio message SID returned by send operations (e.g. "SMabc123...")

Returns

{
  sid: string,
  to: string,
  status: string,          // "queued" | "sent" | "delivered" | "failed" | "undelivered"
  errorCode: number | null,
  errorMessage: string | null,
  dateCreated: Date,
  dateSent: Date | null
}

Throws

  • [xRCS] Twilio credentials required — no credentials at registration
  • [xRCS] 'messageSid' must be a non-empty string — missing or invalid SID
  • [xRCS] Failed to get message status '{messageSid}': {message} — Twilio API error

Examples

Poll delivery status in a route

fastify.get("/messages/:sid/status", async (request) => {
  return fastify.xrcs.getMessageStatus(request.params.sid);
});

Send and track until delivered

async function sendAndTrack(to, card) {
  const result = await fastify.xrcs.sendCard(to, card);

  // Poll up to 5 times for delivery confirmation
  for (let i = 0; i < 5; i++) {
    await new Promise((r) => setTimeout(r, 2000));
    const status = await fastify.xrcs.getMessageStatus(result.sid);

    if (status.status === "delivered") return status;
    if (status.status === "failed" || status.status === "undelivered") {
      throw new Error(`Message failed: ${status.errorMessage}`);
    }
  }
}

See Also

AI Context

package: "@xenterprises/fastify-xrcs"
method: fastify.xrcs.getMessageStatus(messageSid)
use-when: Fetch delivery status for a sent RCS message
returns: { messageSid, status, to, dateCreated, dateSent }
requires: Twilio credentials
Copyright © 2026