Status codes#
| Code | Meaning | What to do |
|---|
| 200 | The call was understood. For the SMS calls this is not yet success: read status in the body (see below). | |
| 400 | A field is missing or wrong, or the thing you named does not exist. | Fix the request. The message says what is wrong. |
| 401 | The API key was refused, the call came from an address outside your allowed list, or the login token is missing, wrong or expired. | Check the key and the address, or renew the token. |
| 403 | You are signed in, but this account may not do this. | Use an account with the right role. |
| 404 | No such address, or (short links, social) no such item. | Check the address and the server name. |
| 412 | The request is valid, but something must be true first. For example the account is not confirmed yet. | Read the message. |
| 422 | Something failed on our side. | Try again later. If it repeats, contact support with the time of the call. |
| 429 | Too many calls at once. | Wait, then send again. See Limits. |
Error bodies#
Most calls answer errors with a list of messages:{
"data": [],
"errorMessages": ["The ApiId field is required."]
}
Some errors arrive with the same two fields written with capital letters:{
"Data": [],
"ErrorMessages": ["Sender is not found"]
}
Read both spellings (errorMessages and ErrorMessages). The messages are meant for a developer and may
change; base your program's decisions on the status code.API key refused or address not allowed (401):{"message": "Access denied: your IP is not in the allowed list. Configure your allowed IPs in the partner portal."}
This one text covers three cases: a wrong key, an account that is not active, and a call from an address outside your allowed list. Check the key first. Every refusal text of the SMS calls is in
Refusal reasons.Login token missing, wrong or expired (401): on api.veloconnect.me the body is empty. Short links and
the social inbox answer in the problem format below.Short links and the social inbox answer errors in the standard problem format:{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.5",
"title": "Not Found",
"status": 404,
"traceId": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-00"
}
Give us the `traceId` when you ask support about a failed call.
SMS calls: 200 with status: "F"#
/api/SendSMS, /api/SendSMSMulti, /api/Verify and /api/VerifyStatus answer HTTP 200 when they refuse a
message for a business reason. The body tells you:{
"message_id": 0,
"status": "F",
"remarks": "SenderId is not found",
"uid": "order-1042",
"client_costs": null
}
status | Meaning |
|---|
S | Accepted. message_id (or verification_id) is set. |
F | Refused. remarks says why. For a send call, nothing was sent. |
V | Only for the code check: the code is right. |
Always check status, not only the HTTP code.Is it safe to send again?#
| You got | Was anything sent? | Send again? |
|---|
| 400, 401, 403, 412 | No | Only after you fix the cause |
200 with status: "F" | No | Only after you fix the cause |
| 429 | No | Yes, after the wait in Retry-After |
| 422, or no answer at all (time-out, broken connection) | Unknown | Look the message up first. Put your own reference in uid when you send, then find it with List SMS records before sending again, so the person does not get it twice. |
Modified at 2026-10-08 11:11:19