1. Getting Started
VeloConnect API
  • Getting Started
    • Introduction
    • Quick start: send your first SMS
    • Authentication
    • Errors
    • Limits
    • Delivery reports
    • Addresses and formats
    • Code samples
    • Viber and WhatsApp push reports
    • Refusal reasons
    • Changelog
    • Recipes
      • One-time code by SMS
      • One-time code by Viber, with SMS as a fallback
      • A campaign, from contacts to result
      • Connect a CRM
  • Messaging API (API Key)
    • Send SMS
      • Send SMS
      • Send SMS (GET form)
      • Send SMS to many numbers
      • Send SMS to many numbers (GET form)
    • SMS Delivery Status
      • List SMS records
      • Get an SMS record
    • SMS Verification Codes
      • Send a verification code (GET form)
      • Send a verification code
      • Check a verification code (GET form)
      • Check a verification code
    • Sender Names
      • List sender names (GET form)
      • List sender names
      • Get sender name status (GET form)
      • Get sender name status
    • Balance & Prices
      • Check balance (GET form)
      • Check balance
      • List rate plans
    • Viber
      • Campaigns
        • Send a Viber campaign
        • List Viber campaigns
      • Contact Lists
        • Create a Viber contact list
        • List Viber contact lists
        • Delete a Viber contact list
        • Add contacts to a list
        • Update contacts in a list
        • Delete a contact from a list
        • List contacts in a list
      • Conversations
        • List Viber conversations
        • List messages of a conversation
      • Message Records
        • List Viber message records
        • Get a Viber message record
      • Totals
        • Get Viber message totals
      • One-Time Codes
        • Send a Viber one-time code
        • List Viber code templates
      • Senders
        • Get a Viber sender
        • List Viber senders
      • Templates
        • Create a Viber template
        • List Viber templates
        • Delete a Viber template
        • Get a Viber template
    • WhatsApp
      • Senders
        • List WhatsApp senders
      • Campaigns
        • Send a WhatsApp campaign
        • List WhatsApp campaigns
      • Contact Lists
        • Add WhatsApp contacts
        • List WhatsApp contacts
        • Delete a WhatsApp contact list
        • Create a WhatsApp contact list
        • List WhatsApp contact lists
      • Contacts
        • Update WhatsApp contacts
        • Delete a WhatsApp contact
      • Conversations
        • List conversation messages
        • List WhatsApp conversations
      • Messages
      • Templates
        • Delete a WhatsApp template
        • Create a WhatsApp template
        • List WhatsApp templates
  • Sign-In & Account
    • Team Members
    • Registration
    • Reference Data
    • Verification & Password
    • Two-Factor
    • Authentication
      • Sign in (for programs)
      • Refresh the login token
      • Sign out
    • Profile
      • Get your account profile
  • API Key & Allowed IPs
    • Get the API key
    • Replace the API key
    • Get the allowed IP addresses
    • Set the allowed IP addresses
  • Campaigns (v2)
    • Campaigns
      • Create a campaign
      • Export campaigns to CSV
      • List campaigns
      • Get a campaign
      • Update a campaign
    • Tools & Pricing
      • Count SMS parts
      • Calculate campaign price
      • Preview campaign recipients
    • Messages
    • Telegram
  • Contacts (v2)
    • Contacts
      • Create a contact
      • Export contacts
      • Import contacts from CSV
      • List contacts
      • Get a contact
      • Update a contact
      • Delete a contact
    • Details
      • Add a contact detail
      • Export contact details
      • List contact details
      • Update a contact detail
    • Messages
      • Export a contact's messages
      • List a contact's messages
  • Segments (v2)
    • Create a segment
    • Export segments to CSV
    • List segments
    • Get a segment
    • Update a segment
    • Delete a segment
    • Add contacts to a segment
    • Remove contacts from a segment
  • Dashboard (v2)
    • Get channel breakdown
    • Get headline statistics
    • Get OTP statistics
    • Get message trends
  • Templates & Content
    • Canned Responses
    • Templates
      • Create a message template
      • List message templates
      • Update a message template
      • Delete a message template
      • Get a message template
    • Uploads
  • Sender Names & Rates
    • Rates
      • List message rates
    • Sender Names
      • Request a sender name
      • List sender names
      • Delete a sender name
      • Get a sender name
    • Reference Data
      • List trunks
      • List mobile operators
  • SMS Messaging
    • Conversations
      • List SMS conversations
      • List conversation messages
    • Delivery Records
      • Export SMS records
  • Email Messaging
    • Delivery Records
      • Export e-mail records
      • List e-mail records
      • Get an e-mail record
    • Pricing
      • List e-mail prices
  • Notifications & Statistics
    • Notifications
    • Statistics
      • List balance history
      • Get sender name expenses
  • Payments
    • Payments
      • List payments
      • Get a payment
    • Provider Callbacks
  • Link Shortener
    • Links
      • Create a short link
      • Get a link by code
      • Get a link
      • Update a link
      • Delete a link
    • Webhooks
    • Redirect
      • Open a short link
    • Analytics
      • Get statistics for several campaigns
      • Get campaign statistics
      • Get contact statistics
      • Get link statistics
  • Social Platform
    • Connections
      • List social connections
      • Get a channel
      • Disconnect a channel
      • Check channel subscription status
      • Get a connection
      • Disconnect a connection
      • Check a connection token
      • Resync channels of a connection
      • List supported providers
    • Inbox
      • List conversations of an account
      • List conversations of a channel
      • Sync conversations of a channel
      • Get a conversation
      • Get conversation status history
      • Mark a conversation as read
      • List messages of a conversation
      • Reply to a conversation
      • Sync messages of a conversation
    • Facebook
    • Instagram
    • Telegram
  • Telephony
    • DID Numbers
      • Purchase & Provisioning
      • Assignments
      • Catalog
      • Compliance
      • Orders
      • Reservations
    • PBX Tenants
    • SIP Voice
      • Monitoring
      • Calls
      • Session
  • Schemas
    • TemplateFilteringSortingModel
    • SocialChannelType
    • V2ContactDetailType
    • CommunicationType
    • RateFilteringSortingModel
    • PagedListGetModelOfV2ContactGetModel
    • SuccessResponseModelOfPagedListGetModelOfRateGetModel
    • SenderIdFilteringSortingModel
    • V2CampaignChannelGetModel
    • V2CampaignExportRequestModel
    • WebhookSubscriptionStatusDto
    • SocialProvider
    • V2CampaignChannelUpdateModel
    • SuccessResponseModelOfSenderIdGetModel
    • V2SegmentUpdateModel
    • V2ContactCsvDuplicateModel
    • PagedListGetModelOfRateGetModel
    • V2ContactMessageExportRequestModel
    • V2DashboardTrendsChannelModel
    • DataRecordFilterModel
    • SyncConversationsResponseDto
    • ClickEventDto
    • PagedListGetModelOfV2CampaignListItemModel
    • SocialConnectionDto
    • ErrorResponseModel
    • V2ContactCreateModel
    • V2SegmentContactsUpdateModel
    • TokenStatus
    • SuccessResponseModelOfV2ContactCsvImportResultModel
    • SuccessResponseModelOfEmailPriceGetModel
    • CustomerUserGetModel
    • V2ContactCsvImportResultModel
    • V2ContactDetailCreateModel
    • V2CampaignUpdateModel
    • SocialConversationDto
    • UnifiedInboxDto
    • ProviderType
    • CustomerUserLoginModel
    • SuccessResponseModelOfCustomerUserLoginResultModel
    • SuccessResponseModelOfV2CampaignGetModel
    • SuccessResponseModelOfPagedListGetModelOfSmsConversationGetModel
    • V2ContactDetailUpdateModel
    • V2ContactUpdateModel
    • WhatsAppStatus
    • PagedListGetModelOfPaymentGetModel
    • V2ContactDetailExportRequestModel
    • EmailDataRecordGetModel
    • SmsConversationGetModel
    • SenderIdType
    • LinkAnalyticsResponse
    • CustomerUserLoginResultModel
    • V2ContactMessageListFilterModel
    • FilterComparer
    • SuccessResponseModelOfV2SegmentGetModel
    • PagedListGetModelOfV2ContactDetailGetModel
    • SenderIdGetModel
    • PaymentDirection
    • TrafficType
    • UpdateLinkRequest
    • SuccessResponseModelOfPagedListGetModelOfV2CampaignListItemModel
    • WhatsAppTemplateCategory
    • PagedListGetModelOfSmsConversationGetModel
    • V2SegmentListFilterModel
    • ConversationStatus
    • V2ExportMode
    • V2SegmentGetModel
    • V2ContactDetailListFilterModel
    • SuccessResponseModelOfStatisticSenderIdExpensesGetModel
    • SenderIdStatus
    • PagedListGetModelOfV2ContactMessageListItemModel
    • V2DashboardOtpStatsModel
    • SuccessResponseModelOfPagedListGetModelOfSenderIdGetModel
    • SuccessResponseModelOfStatisticBalanceGetModel
    • StatisticSenderIdExpensesGetModel
    • SocialMessageDto
    • AdminUserGetModel
    • PagedListGetModelOfTemplateGetModel
    • SuccessResponseModelOfPagedListGetModelOfTemplateGetModel
    • CreateLinkRequest
    • ProblemDetails_link
    • SenderIdTrafficTypeGetModel
    • V2CampaignListItemModel
    • SuccessResponseModelOfV2CampaignPricePreviewModel
    • MessageStatus
    • SenderIdTypeGetModel
    • SocialChannelDto
    • SuccessResponseModelOfPagedListGetModelOfAreaMccMncGetModel
    • SuccessResponseModelOfV2CampaignMessageInfoModel
    • TokenGetModel
    • V2CampaignChannelCreateModel
    • StatisticBalanceGetModel
    • V2CampaignPricePreviewModel
    • RateGetModel
    • SocialConversationStatusHistoryDto
    • SuccessResponseModelOfPaymentListGetModelOfPaymentGetModel
    • V2SegmentCreateModel
    • AreaMccMncFilterModel
    • SuccessResponseModelOfString
    • MessageDirection
    • TokenRefreshModel
    • PagedListGetModelOfEmailDataRecordGetModel
    • SocialProviderDto
    • EmailPriceGetModel
    • ResyncChannelsResponseDto
    • SenderIdMediaAttachmentGetModel
    • TemplateUpdateModel
    • SuccessResponseModelOfPagedListGetModelOfV2SegmentGetModel
    • IFormFile
    • V2CampaignGetModel
    • PagedListGetModelOfSenderIdPriceGetModel
    • SuccessResponseModelOfEmailDataRecordGetModel
    • PagedListGetModelOfV2SegmentGetModel
    • PartnerCustomerUserLoginModel
    • V2ContactExportRequestModel
    • SuccessResponseModelOfTokenGetModel
    • PaginationModel
    • SyncMessagesResponseDto
    • SuccessResponseModelOfIEnumerableOfLong
    • SuccessResponseModelOfPaymentGetModel
    • SortingModel
    • V2CampaignChannelSummaryModel
    • SenderIdPriceGetModel
    • V2SegmentExportRequestModel
    • V2DashboardKpisModel
    • SuccessResponseModelOfTemplateGetModel
    • V2CampaignMessageInfoModel
    • AreaMccMncGetModel
    • V2DashboardOtpChannelModel
    • CampaignAnalyticsListRequest
    • PaymentListGetModelOfPaymentGetModel
    • ReplyMessageResponseDto
    • V2ContactDetailGetModel
    • V2DashboardChannelBreakdownModel
    • ContactAnalyticsResponse
    • SuccessResponseModelOfLong
    • LinkResponse
    • SuccessResponseModelOfCustomerUserGetModel
    • V2ContactGetModel
    • SuccessResponseModelOfBoolean
    • V2ContactDetailStatus
    • SuccessResponseModelOfPagedListGetModelOfSenderIdPriceGetModel
    • V2CampaignChannelPricePreviewModel
    • PagedListGetModelOfSenderIdGetModel
    • V2DashboardTrendsDataPointModel
    • TemplateGetBaseModel
    • SenderIdViberLogoGetModel
    • V2DashboardChannelFunnelModel
    • TemplateGetModel
    • ConversationStatusHistoryActionType
    • PaymentGetModel
    • V2CampaignListFilterModel
    • CustomerTrunkBaseGetModel
    • CampaignAnalyticsResponse
    • V2CampaignCreateModel
    • BusinessType
    • PaymentFilterModel
    • V2CampaignMessageInfoRequest
    • TemplateMediaAttachmentGetModel
    • SuccessResponseModelOfV2CampaignRecipientPreviewModel
    • FilteringModel
    • MessageType
    • SuccessResponseModelOfPagedListGetModelOfV2ContactMessageListItemModel
    • TemplateStatus
    • SuccessResponseModelOfCustomerTrunkBaseGetModel
    • FilteringSortingModel
    • V2ContactListFilterModel
    • V2DashboardTrendsModel
    • V2ContactMessageListItemModel
    • ConversationFilteringSortingModel
    • SuccessResponseModelOfPagedListGetModelOfEmailDataRecordGetModel
    • V2CampaignRecipientPreviewModel
    • SuccessResponseModelOfV2ContactGetModel
    • SuccessResponseModelOfPagedListGetModelOfV2ContactDetailGetModel
    • SortDirection
    • PagedListGetModelOfAreaMccMncGetModel
    • V2CampaignUnresolvableRecipientModel
    • RateDetailGetModel
    • RefreshTokenResponseDto
    • SuccessResponseModelOfPagedListGetModelOfV2ContactGetModel
  1. Getting Started

Refusal reasons

Every text the SMS calls can answer when they refuse a request, what it means and what to do. The texts are
written for developers; show your own wording to your users.

How a refusal arrives#

A request is checked in this order. The first check that fails answers.
StepAnswerWhere the text is
1. Are the required fields there?HTTP 400errorMessages
2. Is the API key good, and is the caller's address allowed?HTTP 401message
3. Are too many sends in progress? (send calls only)HTTP 429 with Retry-AfterErrorMessages
4. Can this message be sent?HTTP 200 with status: "F"remarks
So for the send calls, always read status, not only the HTTP code. See Errors
for the shape of each body.
For every refusal on this page nothing was sent, with one exception that is marked below.

Before the call runs (all calls)#

HTTPTextCauseWhat to do
400The ApiId field is required.The API key is missing.Send the key: api_id in the JSON body of a POST or in the query of a GET. The SMS records calls name it apiId. On a POST, a key in the address is not read.
400The SenderId field is required.sender_id is missing.Send it.
400The PhoneNumber field is required.phonenumber is missing.Send it.
401Access denied: your IP is not in the allowed list. Configure your allowed IPs in the partner portal.One text, three possible causes: the key is not known (also after the key was replaced); the account is not active; or the account has a list of allowed IP addresses and your address is not on it.Check the key first, then the state of the account, then the list of allowed addresses.
429Too many concurrent requests. Retry in 5s.Too many of your send calls are in progress.Wait the seconds in the Retry-After header and send the same request again. See Limits.

Send SMS and Send SMS to many numbers#

HTTP 200, status: "F", message_id: 0, the text in remarks.
Text in remarksCauseWhat to do
One of SmsType or RatePlanId is requiredNeither sms_type nor rate_plan_id was sent.Send sms_type (T, P or another value) or rate_plan_id.
One of TextMessage or TemplateId is requiredNeither textmessage nor templateid was sent.Send the text.
To send single text to multiple numbers use SendSMSMulti endpointphonenumber holds a comma in the one-number call.Use Send SMS to many numbers.
Invalid phone number format: use the international E.164 format, e.g. 37491234567The number is not 8 to 15 digits with an optional +, or it starts with 0, or it has spaces, dashes or brackets.Send the number with its country code, digits only. See Addresses and formats.
Invalid phone number format: 1 of 3 phone numbers (position 2) is not in the international E.164 format, e.g. 37491234567; the whole request was refusedIn a call with several numbers, at least one is wrong. An empty entry, for example after a comma at the end, counts as wrong. The text names up to ten positions, counted from 1.Fix or remove the numbers at those positions and send the whole list again. Nothing was sent to the good numbers either.
SenderId is not foundYour account has no SMS sender name written exactly like this. Capital and small letters count.Take the name from List sender names and write it the same way.
Sender is not foundThe sender name is yours but cannot be used now: it is waiting for approval, was declined or was switched off.Check it with Get sender name status and use it when the status is Approved.
Rate Plan is not foundNo price plan fits: the rate_plan_id is not one of yours, or your account has no plan for this sms_type.Take rate_plan_id from List rate plans, or contact support to get a plan for this kind of message.
Template is not foundtemplateid is unknown, is not an SMS template, or is not approved.Use the id of one of your approved SMS templates.
Not valid sms contacts providedYour price plan has no price for the country or operator of the number.Check the number. To send to this destination, ask support to add it to your plan.
Insufficient balanceThe price of this request is more than the balance you can use. Messages that are scheduled or still being sent are counted against the balance.Top up, or wait for waiting messages to finish, then send again.
Failed to send the messageThe request passed the checks but the send step stopped.Do not assume it was sent or not sent. Look the message up with List SMS records by your uid before you send again.
User is not found, Open sender is not allowed for this user, Incorrect sender id routing, Invalid rate plan, Invalid rate, Not valid contacts providedSomething in the set-up of your account, sender name or price plan does not fit.Contact support with the text and the time of the call.
Any other textAn unexpected error.Contact support with the exact text and the time of the call. Check the records before you send again.

Send a verification code#

HTTP 200, status: "F", verification_id: 0, the text in remarks. The texts and their meaning are the same
as for Send SMS above: Invalid phone number format: …, SenderId is not found, Sender is not found,
Rate Plan is not found (your account has no price plan for one-time codes), Not valid sms contacts provided,
Insufficient balance and Failed to send the message.
If remarks is empty, the code could not be saved: ask for a new code.

Check a verification code#

AnswerText in remarksCauseWhat to do
HTTP 200, status: "F"Verification Code is Not VerifiedOne text for every failure: the code is wrong, the id is not known or is not yours, or a field did not arrive.Check the two field names first: they are verfication_id and verfication_code, without an i after ver. A field sent under another name is read as 0. Then check the id and the code.

Balance, sender names and SMS records#

CallHTTPTextCauseWhat to do
Get sender name status400SenderId is not foundrequest_id is missing, unknown or not yours.Send the id of one of your own sender name requests.
Get an SMS record400Report is not foundNo record with this id, or it is not yours.Use an id from List SMS records.
List rate plans, List SMS records400The field PageSize must be between 1 and 1000.pageSize is out of range.Use 1 to 1000.
List SMS records400Comparer value can be Equals,Contains,GreaterOrEquals,LessOrEquals or 1,2,3,4A filter has an unknown comparer.Use one of the listed values.
List SMS records400Direction value can be Asc,Desc or 1,2A sorting has an unknown direction.Use Asc or Desc.
Any422Unknown error occurredSomething failed on our side, or a value has the wrong type.Check the request. If it is right, contact support with the time of the call.

What "accepted" means#

Callstatusremarks
Send SMS, Send SMS to many numbersSMessage submitted successfully
Send a verification codeSVerification code sent successfully
Check a verification codeVVerification Code is Verified
S means we accepted the message for sending. It does not mean the phone received it, or that the mobile
network took it. Learn the result from the delivery report.

Things that are not refused#

These pass without an error, so check them on your side.
Long text. There is no length limit. A long text is sent as several parts and each part is charged: 160
characters fit in one part and 153 in each part of a longer text. With characters outside the basic SMS
alphabet (for example Armenian or Cyrillic letters) the figures are 70 and 67.
Numbers without a price in a many-numbers call. A number whose country or operator is not in your price
plan is left out without an error, and the answer is still S when at least one number remains. Such a
number has cost: null in client_costs. Read client_costs to see who will not get the message.
Any sms_type. T is the plan for one-time codes and P the plan for promotional messages. Any other
value is accepted and treated as transactional.
Placeholders in the text. {{name}}, {{surname}}, {{email}} and {{url}} in textmessage are
removed, because a call with an API key carries no contact data. Write the final text yourself.
callback_url. The address is not checked when you send. A wrong address means no delivery report.
Modified at 2026-10-08 11:10:59
Previous
Viber and WhatsApp push reports
Next
Changelog
Built with