# Send a new SMS **POST /sms/message** ## Servers - https://sms.apicontrol.co.uk/v1: https://sms.apicontrol.co.uk/v1 () ## Parameters ### Body: application/json (object) - **to** (array[string]) List of msisdns to whom the message is being sent - **from** (string) The msisdn of the sender; this is who the recipient will see as the sender of the message - **body** (string) Message contents to send - **send_at** (string(date-time)) When to send the message; default is to send now - **expires_at** (string(date-time)) When the message should expire; any recipients not yet attempted will be abandoned (cannot be provided with ttl) - **ttl** (string) Alternative to expires_at - number of seconds after the send_at time after which the message will be considered expired (cannot be provided with expires_at) - **num_parts_max** (integer) Maximum number of message parts allowed; if the submitted message requires more than this many (due to length and/or required character encoding) then it will not be sent; an HTTP 200 response will be returned instead of the normal HTTP 201 for this method. - **ref** (string) Client reference; this will be included in any callbacks - **callbackURL** (string(uri)) URL that delivery reports should be sent to for this message; if not provided the account default will be used - **delivery_report** (string) Delivery report type: * summary - One report for the message, sent when all recipients have been attempted or expired; shows a summary of the number of delivered, failed, expired etc recipients * details - One report for the message, sent when all recipients have been attempted or expired; shows statuses with a breakdown of recipients * per_recipient_final - Single delivery report will be sent for each recipient when the status is final (eg "delivered", "expired", "rejected") * per_recipient - Report per recipient is sent for each change of status (eg "sent" meaning that the message has been submitted to the SMSC and then the final status) If not provided the account default will be used, if set to null delivery reports will be disabled for this message - **paused** (boolean) Whether to submit the message in a paused state (will not be sent until released) ## Responses ### 200 Successful operation #### Body: application/json (object) - **num_parts** (integer) The number of parts used to send the message - **num_parts_max** (integer) The number of parts used to send the message - **info** (string) Error message ### 201 Sms created #### Body: application/json (object) - **messageID** (integer) The Id of the message - **num_parts** (integer) The number of parts used to send the message - **num_recipients** (integer) The number of recipients the message was sent to ### 400 Invalid input #### Body: application/json (object) - **status_code** (integer) Status code 400 - **status_msg** (string) Error message text - **error** (string) Validation error text - **type** (string) Type of the validation error - **arguement** (string) The arguement the validation error applies to ### 401 Unauthorized #### Body: application/json (object) - **status_code** (integer) Status code 401 - **status_msg** (string) Error message text ### 403 Invalid input #### Body: application/json (object) - **status_code** (integer) Status code 403 - **status_msg** (string) Error message text - **error** (string) Validation error text - **type** (string) Type of the validation error - **arguement** (string) The arguement the error applies to - **bad_value** (string) The value which the error is for - **info** (string) additional information ### 404 Not Found #### Body: application/json (object) - **status_code** (integer) Status code 404 - **status_msg** (string) Error message text - **info** (string) Additional information ### 405 Method Not Allowed #### Body: application/json (object) - **status_code** (integer) Status code 405 - **status_msg** (string) Error message text - **Allow** (array[string]) HTTP Method [Powered by Bump.sh](https://bump.sh)