Getting started
Base URL, request format, encoding, and a first end-to-end example.
This page walks you through your first call to the Velip Public API v2. You will need:
- A Velip account with API access enabled.
- A
tsidtoken (or HTTP Basic credentials). See Authentication. - Optionally, your IP added to the allowlist if your account enforces IP restrictions.
Base URL
Replace <base> with the host provided to your account (typically https://vox.velip.com.br):
https://<base>/api/v2/<EndpointName>.php
Request format
You can send parameters in three ways. They are interchangeable; URL-query takes precedence when both URL and JSON body define the same key.
```bash curl (form)
curl -X POST ‘https://
-d ‘tsid=YOUR_TSID’
-d ‘dest=5511999999999’
-d ‘message=Hello from Velip’
```bash curl (JSON)
curl -X POST 'https://<base>/api/v2/MakeSMS.php' \
-H 'Content-Type: application/json' \
-d '{
"tsid": "YOUR_TSID",
"dest": "5511999999999",
"message": "Hello from Velip"
}'
```bash curl (HTTP Basic)
curl -X POST ‘https://
-u “username:password”
-d ‘dest=5511999999999’
-d ‘message=Hello from Velip’
## Response format
Successful calls return HTTP `200` with this shape:
```json
{
"return": {
"status": "OK",
"status_code": "0",
"cd_id": "..."
}
}
Failures return HTTP 400 (business / validation error) or 401 (authentication / authorization). The status_code field carries a numeric code documented in Error codes.
Encoding
Warning Some legacy endpoints (especially TTS) return non-UTF-8 fields. When sending non-ASCII characters (accented Portuguese/Spanish), prefer JSON requests, or pass
encoding=UTF-8(where supported by the endpoint) so the server transcodes accents correctly before storing them.
- Plain
application/x-www-form-urlencodedrequests are interpreted inISO-8859-1unless the endpoint setsmysqli_set_charset(...,'utf8mb4')(newer endpoints do). - JSON requests are interpreted in
UTF-8automatically. - For TTS calls, the
encodingparameter acceptsUTF-8,2UTF-8(double-encoded), andASCII.
Phone number format
For Brazilian numbers, the API can normalize the number for you:
- Pass
setbrasil=1(default in most endpoints): the API accepts0DDD,DDD, or55DDD…and normalizes to55<DDD><number>. Mobile numbers gain the leading9automatically when missing for relevant DDDs. - Pass
setbrasil=0to keep the number exactly as given (use it for international destinations).
Idempotency / duplicate protection
Most send endpoints take an httpdup parameter (seconds, 1-600). When set, the API rejects duplicate requests with the same destination within the window. Pass httpdup=0 to disable.
What to read next
- Authentication — issuing tokens, IP allowlist, brute-force protection.
- Errors — the canonical numeric codes returned in
status_code. - Rate limits — quotas and per-account caps.
- Any of the channel pages: SMS, WhatsApp, Voice.