ISCloudSMS API — SMS client
Tot ce este necesar pentru a trimite SMS-uri, a verifica statusul livrării și a obține raportul lunar, folosind o singură cheie API.
00Prezentare
API-ul client ISCloudSMS oferă trei operațiuni esențiale pentru trimiterea de mesaje SMS tranzacționale și de notificare:
| Operație | Metodă | Rol |
|---|---|---|
| SendSMS | POST | Trimite un SMS către un număr |
| StatusSMS | GET | Verifică starea livrării unui SMS |
| MonthlySummary | GET | Sumar lunar al mesajelor trimise |
Toate răspunsurile sunt JSON și conțin câmpurile errorCode, errorName și errorMessage. errorCode = 0 înseamnă succes.
01Base URL
Toate rutele sunt prefixate cu /ISCloudSMS.
https://smsgateway.eservicii.md/ISCloudSMS
02Autentificare
Autentificarea se face cu o cheie API de tip UUID, emisă per companie. Cheia se transmite în query (la cererile GET) sau direct în corpul JSON (la POST SendSMS).
# în query ?apiKey=6061a897-0693-4686-be25-6abe73d85c08 # în corpul JSON { "apiKey": "6061a897-0693-4686-be25-6abe73d85c08", ... }
03Quick start
Trimiterea unui SMS în câteva secunde:
curl -X POST https://smsgateway.eservicii.md/ISCloudSMS/SendSMS \
-H "Content-Type: application/json" \
-d '{
"apiKey": "6061a897-0693-4686-be25-6abe73d85c08",
"number": "+37360000000",
"message": "..."
}'
04Trimitere SMS
Trimite un SMS către un singur număr. Numărul este normalizat și validat, aliasul expeditor și (pentru numere internaționale) opțiunea și tariful regional sunt verificate, apoi mesajul intră în coadă.
| Câmp | Tip | Descriere | |
|---|---|---|---|
apiKey | string (uuid) | obligatoriu | Cheia API a companiei |
number | string | obligatoriu | Numărul destinatarului (format internațional recomandat, ex. +373…) |
message | string | obligatoriu | Conținutul mesajului. Segmentele se calculează automat (GSM 7-bit / Unicode) |
id | string | opțional | ID propriu (max 100 caractere) pentru a corela ulterior statusul |
alias | string | opțional | Alias expeditor (max 11 caractere). Implicit, numele scurt al companiei |
callBackURI | string | opțional | URL apelat la schimbarea stării. Vezi secțiunea Callback-uri |
scheduledDate | date-time | opțional | Programare. O dată în trecut → trimitere imediată |
notificationType | integer | opțional | Tipul mesajului. Implicit 0 (Informational). Vezi secțiunea Tipuri de mesaj |
{
"errorCode": 0,
"errorName": "NoError",
"errorMessage": null,
"uid": "f3b2c1a0-…", // identificatorul SMS-ului în sistem
"smsQuantity": 1, // nr. de segmente
"smSparts": 1,
"rejectedPhones": [] // completat dacă numărul a fost respins
}
{
"errorCode": 116,
"errorName": "Company_alias_is_not_correct",
"rejectedPhones": [ { "number": "+37360000000", "id": "ORD-10231" } ]
}
05Status SMS
Returnează starea curentă a unui SMS. Căutarea se face după id-ul tău extern sau după uid-ul intern, limitat la mesajele companiei tale.
| Param (query) | Tip | Descriere |
|---|---|---|
apiKey | uuid | Cheia API |
id | string | ID-ul extern trimis la SendSMS sau uid-ul (GUID) |
GET /ISCloudSMS/StatusSMS?apiKey=6061a897-…&id=ORD-10231
{ "errorCode": 0, "state": 1 } // state = stare SMS (vezi referință)
06Sumar lunar
Numărul de SMS-uri trimise cu succes într-o lună, grupat pe aliasul expeditor.
| Param (query) | Tip | Descriere |
|---|---|---|
apiKey | uuid | Cheia API |
year | integer | An (între 2000 și anul curent + 1) |
month | integer | Lună (1–12) |
GET /ISCloudSMS/MonthlySummary?apiKey=6061a897-…&year=2026&month=5
{
"errorCode": 0,
"items": [
{ "companyShortName": "MyDiscount", "count": 1240 }
]
}
07Callback-uri (notificări de stare)
Dacă specifici callBackURI la SendSMS, sistemul îți apelează URL-ul (asincron) când starea SMS-ului se schimbă. Codul stării este atașat URL-ului în unul din două moduri:
| Dacă URL-ul conține… | Rezultat |
|---|---|
| placeholder-ul {status} | {status} este înlocuit cu codul stării |
| fără placeholder | codul stării este adăugat la finalul URL-ului |
# cu placeholder https://exemplu.md/sms/callback?status={status} → ...?status=8 → ...?status=1 # fără placeholder https://exemplu.md/sms/callback?status= → ...?status=8
Sunt acceptate doar URL-uri absolute http / https.
08Stările unui SMS
Câmpul state (din StatusSMS și din callback) este un cod întreg. Stările posibile:
| Cod | Stare | Semnificație |
|---|---|---|
0 | Pending | În coadă, în așteptarea trimiterii |
3 | MessageBuffered | Preluat de gateway (buffer SMSC) |
8 | AcceptedSmsc | Acceptat de SMSC — predat operatorului, livrarea încă neconfirmată |
1 | DeliverySuccessful | Livrat cu succes la destinatar (confirmat prin DLR) |
100 | DeliveryToBulkSMS | Predat către agregatorul bulk |
2 | FailedDelivery | Eșec la livrare |
16 | RejectedSmsc | Respins (validare alias / internațional / SMSC) |
1000 | RejectedNumber | Număr respins la validare |
09Tipuri de mesaj (notificationType)
Câmpul opțional notificationType din SendSMS spune ce fel de mesaj trimiți. Implicit 0. Tipul nu schimbă tariful, dar schimbă prioritatea în coadă și durata de valabilitate:
| Cod | Tip | Semnificație |
|---|---|---|
0 | Informational | Notificare obișnuită (implicit) |
1 | Advertising | Mesaj promoțional |
2 | Warning | Alertă / avertizare |
3 | ValidationCode | Cod de unică folosință (OTP) |
Ca privilegiul acesta să nu fie folosit pentru a sări coada, un mesaj declarat ValidationCode este verificat la trimitere și respins cu Invalid_parameter (105) dacă:
| Condiție | Motiv |
|---|---|
| nu conține un număr de 4-8 cifre | fără cod, nu e un OTP |
# acceptat { "notificationType": 3, "message": "Codul dvs. este 123456" } # respins — Invalid_parameter { "notificationType": 3, "message": "Reducere 50%! Detalii pe site" }
10Coduri de eroare
Fiecare răspuns conține errorCode (număr), errorName și errorMessage. 0 = succes. Codurile relevante pentru endpoint-urile client:
| errorName | Când apare |
|---|---|
NoError | Operație reușită |
Invalid_parameter | Parametri invalizi (ex. lună/an în afara intervalului) |
APIKey_not_exist | Cheie API inexistentă sau firmă negăsită |
Record_not_exist | SMS-ul căutat nu există pentru compania ta |
Company_alias_is_not_correct | Alias expeditor neautorizat sau peste 11 caractere |
International_SMS_option_is_not_active | Număr internațional, dar opțiunea nu e activată pe firmă |
Region_is_not_active | Regiune internațională inactivă sau fără tarif configurat |
Internal_error | Eroare neașteptată sau limită de rată depășită (vezi errorMessage) |