---
updatedAt: 2026-08-07T08:07:23.000Z
agentTools:
  projectIndex: https://docs.verihubs.com/llms.txt
---

# Send SMS V2

SMS OTP version change is by introducing a new API version release.<br>

Version changes usually need to be applied immediately to the latest version, in order to get a better API usage experience than the previous version.<br>

The benefits you get if you use a newer version are as follows.
- Decreasing processing time in API Request and Response
- Improve feature in SMS: Blocking Request, Spam Check, Sequential Phone Number, and Blocked Numbers
- Increase RPS in SMS (before 30rps to 50rps)
- Better developer environment to support future developments
- Improve logging and monitoring on our side
- Improved dependencies and improved service stability<br>

This method helps you to send sms containing desired text to destination number<br>
Rate limit of 50 RPS is applied to SMS service. Verihubs also apply rate limit divided into several categories based on product. More explanation [link](https://docs.verihubs.com/docs/rate-limit)<br>
#### Callback Description
When you want to use callback_url payload, you only need to put for example 
```
your-callback-url.com/callback
```
Example callback that we'll send
```
your-callback-url.com/callback?session_id=d0f5fb5c-2d50-4d3f-aea7-20018ab15806&status=1
```

Payload       | Description          |
-----------|:---------------------|
session_id        | ID of the specific message            | 
status        | Latest status of the request             | 

#### Status Description
Status       | Name          | Description |
-----------|:---------------------|:-------------------------- |
0        | Requested            | SMS has been requested. |
1        | Delivered            | SMS has been delivered to destination number. This status will be charged. |
4        | Failed            | Operator cannot send SMS to destination number |
5        | Request Error            | Verihubs cannot reach Operator |
6        | Rejected          | Request rejected due to Too Many Requests |
7        | Undelivered             | SMS has not been delivered to destination number (response received from Operator). This status will be charged.                |
8        | No Delivery Report               | Delivered without Delivery Report from operator after certain period. This status will be charged.          |
9        | Blocked             | Destination Number has been blocked by Verihubs's system          |


# OpenAPI definition

````json
{
  "openapi": "3.0.2",
  "servers": [
    {
      "url": "https://api.verihubs.com/"
    }
  ],
  "info": {
    "title": "SMS API Documentation",
    "version": "2.0.0"
  },
  "tags": [
    {
      "name": "SMS Notifications and Promotions",
      "description": "Get information about SMS Notifications and Promotions API"
    }
  ],
  "paths": {
    "/v2/sms/send": {
      "post": {
        "tags": [
          "SMS Notifications and Promotions"
        ],
        "summary": "Send SMS V2",
        "description": "SMS OTP version change is by introducing a new API version release.<br>\n\nVersion changes usually need to be applied immediately to the latest version, in order to get a better API usage experience than the previous version.<br>\n\nThe benefits you get if you use a newer version are as follows.\n- Decreasing processing time in API Request and Response\n- Improve feature in SMS: Blocking Request, Spam Check, Sequential Phone Number, and Blocked Numbers\n- Increase RPS in SMS (before 30rps to 50rps)\n- Better developer environment to support future developments\n- Improve logging and monitoring on our side\n- Improved dependencies and improved service stability<br>\n\nThis method helps you to send sms containing desired text to destination number<br>\nRate limit of 50 RPS is applied to SMS service. Verihubs also apply rate limit divided into several categories based on product. More explanation [link](https://docs.verihubs.com/docs/rate-limit)<br>\n#### Callback Description\nWhen you want to use callback_url payload, you only need to put for example \n```\nyour-callback-url.com/callback\n```\nExample callback that we'll send\n```\nyour-callback-url.com/callback?session_id=d0f5fb5c-2d50-4d3f-aea7-20018ab15806&status=1\n```\n\nPayload       | Description          |\n-----------|:---------------------|\nsession_id        | ID of the specific message            | \nstatus        | Latest status of the request             | \n\n#### Status Description\nStatus       | Name          | Description |\n-----------|:---------------------|:-------------------------- |\n0        | Requested            | SMS has been requested. |\n1        | Delivered            | SMS has been delivered to destination number. This status will be charged. |\n4        | Failed            | Operator cannot send SMS to destination number |\n5        | Request Error            | Verihubs cannot reach Operator |\n6        | Rejected          | Request rejected due to Too Many Requests |\n7        | Undelivered             | SMS has not been delivered to destination number (response received from Operator). This status will be charged.                |\n8        | No Delivery Report               | Delivered without Delivery Report from operator after certain period. This status will be charged.          |\n9        | Blocked             | Destination Number has been blocked by Verihubs's system          |\n",
        "operationId": "send_sms_post_v2",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "App-ID",
              "type": "string"
            },
            "name": "App-ID",
            "in": "header"
          },
          {
            "required": true,
            "schema": {
              "title": "API-Key",
              "type": "string"
            },
            "name": "API-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendSms"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSendSms"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend400"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend401"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend403"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend409"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend429"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResponseSend500"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SendSms": {
        "title": "SendSms",
        "required": [
          "msisdn",
          "text"
        ],
        "type": "object",
        "properties": {
          "msisdn": {
            "description": "Destination Phone Number. You need to include the international prefix number and also find your local prefix number [here.](https://docs.verihubs.com/docs/supported-local-operator-prefix)",
            "type": "string",
            "example": "62839102839"
          },
          "text": {
            "description": "SMS Body. In the SMS Body, you must mention the brand name according to the Sender ID.",
            "type": "string",
            "example": "This is text example"
          },
          "premium": {
            "description": "used for Transactional SMS (Text Message from Business to Customer that provides valuable information about their product, service or processes).",
            "type": "boolean",
            "example": true
          },
          "callback_url": {
            "description": "Optional. This URL will be called by the server when the desired event will occur. Callback will work if you use premium route",
            "type": "string",
            "example": "https://your-url-callback.com"
          }
        }
      },
      "ResponseSendSms": {
        "title": "ResponseSendSms",
        "required": [
          "message",
          "msisdn",
          "session_id"
        ],
        "type": "object",
        "properties": {
          "message": {
            "description": "Message",
            "type": "string",
            "example": "SMS sent successfully"
          },
          "msisdn": {
            "description": "Destination number with international prefix country code.",
            "example": 628212312533
          },
          "session_id": {
            "description": "Generated ID which associated with verification request.",
            "example": "asddede-asdae234-34sfd3-fe234d"
          },
          "segment_count": {
            "description": "Segment Count is the number of SMS segmentation which is calculated by the GSM-7 and UTF-16 encoding system based on the SMS content sent. This segment count becomes a reference for calculating the cost of using SMS services. More explanation [link](https://docs.verihubs.com/docs/sms-segment-count-explanation)",
            "type": "integer",
            "example": 2
          }
        }
      },
      "ResponseSend400": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string",
            "example": "Msisdn invalid: msisdn length should between 4-16 characters"
          }
        }
      },
      "ResponseSend401": {
        "title": "Error Validation",
        "required": [
          "code",
          "message"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "example": 401
          },
          "message": {
            "title": "Message",
            "type": "string",
            "example": "Authorization failed"
          }
        }
      },
      "ResponseSend403": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string",
            "example": "OTP testing usage has exceed OTP testing quota"
          }
        }
      },
      "ResponseSend409": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string",
            "example": "Msisdn invalid: msisdn has been blocked"
          }
        }
      },
      "ResponseSend429": {
        "title": "Error Validation",
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string",
            "example": "Too many request in the allowed time frame"
          }
        }
      },
      "ResponseSend500": {
        "title": "Error Validation",
        "required": [
          "code",
          "message"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "example": 500
          },
          "message": {
            "title": "Message",
            "type": "string",
            "example": "Internal Server Error"
          }
        }
      }
    }
  }
}
````