---
title: "Send message by simple GET or POST"
method: GET
path: "/messages/send"
tags: ["Message"]
---

# Send message by simple GET or POST

`GET /messages/send`

A really simple interface for people who require a GET mechanism to submit a single message.

The URI is interpreted as UTF-8. HTTP Basic Auth is used for authentication.

__Note__ BulkSMS recommends that you use the more flexible Send Messages Operation when submitting SMS messages from your application.

Here is an example of a GET
```http
GET /v1/messages/send?to=%2b270000000&body=Hello%20World
```

You can also use the same parameters to POST form encoded fields to `/messages`.
Here is an example of a POST
```http
POST /v1/messages
Content-Type: application/x-www-form-urlencoded

to=%2b27000000000&body=Hello+World
```

## Query parameters

- `to` string, required
- `body` string, required
- `deduplication-id` integer

## Response `201`

An array of messages

- Message[]
  - `id` string, required — A unique identifier that is assigned when the message is created.
  - `type` 'SENT' | 'RECEIVED', required — The message direction
  - `from` string — The address part of the sender id
  - `to` string, required — The phone number of the recipient
  - `body` string, required — The content of the message
  - `encoding` 'TEXT' | 'UNICODE' | 'BINARY' — The type of the content. See the `encoding` field for more information.
  - `protocolId` integer — See the `protocolId` field for more information.
  - `messageClass` integer — See the `messageClass` field for more information.
  - `numberOfParts` integer — The number of parts. If this is a concatenated message, the number of parts will be more than 1. Note that this field does not have a value in the submission response.
  - `creditCost` number, float — The cost of the message (in credits). Note that this field does not have a value in the submission response.
  - `submission` object — Identifies the submission.
    - `id` string, required — A unique identity shared by all messages that were created from the same submission. This field should be ignored if the `type` is not SENT.
    - `date` string, date-time, required — The date and time the submission was processed. If the `type` is RECEIVED, this field reflects the date and time the received message was processed.
  - `status` object, required — The status of the message
    - `id` string, required — A concatenated value A.B where A is the `status.type` and B is the `status.subtype`. It there is no value for `subtype` then B takes string value `"null"` (e.g. `"SENT.null"`).
    - `type` 'ACCEPTED' | 'SCHEDULED' | 'SENT' | 'DELIVERED' | 'UNKNOWN' | 'FAILED', required — ACCEPTED Message accepted for delivery. Only returned for initial message submissions. SCHEDULED Message accepted for delivery at a later date. Only returned for initial message submissions. SENT Message has been relayed away from our systems. DELIVERED Successfully delivered to phone. UNKNOWN Message is in an unknown state. FAILED Delivery failed.
    - `subtype` 'EXPIRED' | 'HANDSET_ERROR' | 'BLOCKED' | 'NOT_SENT' — Has a value only if the `type` is FAILED. EXPIRED Delivery failed because message expired before delivery was possible. HANDSET_ERROR Delivery failed because of a problem related to the phone (e.g. message storage area full). BLOCKED Your account has been blocked from sending to this phone (e.g. recipient replied STOP to block communication). NOT_SENT Message delivery was not attempted (e.g. because we were not able to find a route for the supplied phone number).
  - `relatedSentMessageId` string — This field has a value only if the type is RECEIVED. With SMS messages, it is not possible to link a reply directly with a specific sent message. However, if you specified `REPLIABLE` in the `from` property, BulkSMS will link any reply to the most recent message sent to a given phone number. The `relatedSentMessageId` property keeps the information about this link. You can use this property to derive an implicit conversation from a set of messages. - If a received reply message has a `relatedSentMessageId`, you can use it to retrieve the last message that was sent before the reply was received. - If you have the `id` of the sent message and you want all the received messages that relate to it, you can use the List Related Messages Operation.
  - `userSuppliedId` string — This is the value you supplied in the `userSuppliedId` field. Has a value only if the `type` is SENT.

## Other responses

- `400` — Bad Request. The content or structure of your submission, or a parameter, was found to be invalid.
- `403` — Forbidden. Inspect the body of the response for further details - for example, you may have insufficient credits remaining

---

[API](https://skmtc.net/bulksms/apis/bulksms-json-rest-api.md) · [All operations](https://skmtc.net/bulksms/apis/bulksms-json-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bulksms/bulksms-json-rest-api/versions/f923d2ecca43/schema)
