Skip to Content
NodeJS

NodeJS

Welcome to the ReSMS NodeJS integration guide.

This guide explains how you can quickly and securely send SMS messages using the ReSMS API in your NodeJS applications.

Features

  • Send SMS: Send text messages to phone numbers.
  • Send OTP: Generate and send one-time passwords (OTP) for user verification.
  • Verify OTP: Validate OTP codes entered by users.

Installation

First, install our official ReSMS NodeJS SDK:

npm install @resms/sdk # or yarn add @resms/sdk # or bun add @resms/sdk

Setup

You need to get an API key on ReSMS Dashboard. Then import the package and create a new instance of the ReSMS class with your API key.

import { ReSMS } from "@resms/sdk"; const resms = new ReSMS("re_12345"); // Replace with your actual API key

Send SMS

Here’s a minimal example to send an SMS:

import { ReSMS } from "@resms/sdk"; const resms = new ReSMS("re_12345"); await resms.sms.send({ to: "+33612345678", message: "Welcome to ReSMS!" });

Parameters

Possible parameters for sending an SMS:

FieldTypeRequiredDescription
toStringThe phone number of the recipient, in international format (E.164)
messageStringThe SMS content (160 characters max)
senderIdStringThe alphanumeric sender name displayed

Here is the parameter type in TypeScript:

export type SendSmsOptions = { to: string; message: string; senderId: string | undefined; };

Response

Success Response

The sms.send() method returns a promise that resolves when the SMS has been successfully sent or not. The response type is:

export type SendSmsResponse = { data: { messageId: string; }; };

Error Response

In case of an error, the response type is

export type ErrorResponse = { message: string, name: string, };

The sms.send() method may return the following errors:

NameMessage
COUNTRY_DETECTION_FAILEDUnable to detect country code from phone number
PHONE_NUMBER_PARSING_FAILEDInvalid phone number
INSUFFICIENT_SMS_QUOTAFailed to update message status
MESSAGE_STATUS_UPDATE_FAILEDFailed to update message status

Send OTP

Here is a minimal example to send an OTP verification code to a phone number:

import { ReSMS } from "@resms/sdk"; const resms = new ReSMS("re_12345"); await resms.otp.send({ to: "+33612345678" });

Parameters

Possible parameters for sending an OTP:

FieldTypeRequiredDescriptionDefault Value
toStringThe phone number of the recipient, in international format (E.164)
messageStringThe SMS content (160 characters max). It must contain {CODE}.
senderIdStringThe alphanumeric sender name displayed
codeTypeOtpCode ("numeric"| "alpha")The type of OTP code to generate"numeric"
codeLengthnumberThe length of the OTP code6
validityMinutesStringThe validity period of the OTP in minutes.5

Response

Success Response

The otp.send() method return a promise that resolves when the OTP has been successfully sent. The response type is:

export type SendOtpResponse = { data: { phoneNumber: string; expiresAt: string; }; };

Error Response

In case of an error, the response type is:

export type ErrorResponse = { message: string; name: string; };

The otp.send() method may return the following errors:

CodeHTTP StatusMessage
INVALID_MESSAGE_TEMPLATE400Message template must contain {CODE} placeholder
INVALID_CODE_LENGTH400Code length must be between 4 and 16
INVALID_VALIDITY_DURATION400Validity duration must be between 1 minute and 1440 minutes (24 hours)
TOO_MANY_OTP_REQUESTS429Too many OTP requests for this phone number

Verify OTP

To verify an OTP code entered by the user:

import { ReSMS } from "@resms/sdk"; const resms = new ReSMS("re_12345"); const response = await resms.otp.verify({ to: "+33612345678", code: "123456" }); console.log("OTP verified:", response.data.otpId);

Parameters

Possible parameters for verifying an OTP:

FieldTypeRequiredDescription
toStringThe phone number the OTP was sent to, in international format (E.164)
codeStringThe verification code entered by the user

Response

Success Response

The otp.verify() method returns a promise that resolves with the verification data. The response type is:

export type VerifyOtpResponse = { data: { otpId: string; phoneNumber: string; verifiedAt: string; }; };

Error Response

In case of an error, the response type is:

export type ErrorResponse = { message: string; name: string; };

The otp.verify() method may return the following errors:

CodeHTTP StatusMessage
OTP_NOT_FOUND404OTP not found
OTP_INVALID400OTP is invalid
OTP_EXPIRED400OTP has expired
OTP_ALREADY_VERIFIED400OTP already verified
INVALID_OTP_CODE400Invalid OTP code

Have feedback, found a bug, or want to suggest a feature?

Last updated on