API დოკუმენტაცია
sendsms.ge API საშუალებას გაძლევს გააგზავნო SMS, შეამოწმო სტატუსი და ბალანსი პირდაპირ შენი სისტემიდან. ყველა მოთხოვნა HTTPS-ით; პასუხი — JSON.
ავტორიზაცია
ყველა მოთხოვნა მოითხოვს key პარამეტრს — შენი ანგარიშის API გასაღებს. გადააწოდე query-ში ან POST body-ში.
SMS გაგზავნა
GET / POSThttps://sendsms.ge/api/v2/send
პარამეტრები
| პარამეტრი | საჭიროება | აღწერა |
|---|---|---|
| key | სავალდებულო | API გასაღები — იხილე პანელში „API" გვერდზე. |
| destination | სავალდებულო | მიმღები ნომერ(ებ)ი საერთაშორისო ფორმატით, + და 00 გარეშე (მაგ. 995599123456). მძიმით გამოყავი მრავალი ნომერი. |
| sender | სავალდებულო | დადასტურებული SMS სათაური (≤ 11 სიმბოლო). |
| content | სავალდებულო | ტექსტი. ნებისმიერი Unicode სიმბოლო, მაქს. 1000 სიმბოლო. |
| contentType | არასავალდ. | შეტყობინების ტიპი: 1 — ჩვეულებრივი (default), 2 — Flash. |
| reference | არასავალდ. | შენი ტეგი (მაგ. შეკვეთის ნომერი) — ამით შეადარებ სტატუსს შენს ჩანაწერს. მიწოდების სტატუსი მის გარეშეც ისევე მუშაობს. |
| urgent | არასავალდ. | true — გვერდს უვლის stop-სიას (sender უნდა იყოს whitelist-ში). |
| otp | არასავალდ. | true — ვერიფიკაციის კოდი, უმაღლესი პრიორიტეტით იგზავნება. |
| scheduledAt | არასავალდ. | Unix timestamp — დაგეგმილი გაგზავნის დრო. |
მაგალითი
curl "https://sendsms.ge/api/v2/send?key=YOUR_API_KEY\
&sender=MyShop\
&destination=995599123456,995577654321\
&content=Hello%20World"
<?php
$query = http_build_query([
'key' => 'YOUR_API_KEY',
'sender' => 'MyShop',
'destination' => '995599123456',
'content' => 'Hello World',
]);
$response = file_get_contents("https://sendsms.ge/api/v2/send?$query");
$data = json_decode($response, true);
var_dump($data);
import requests
r = requests.get("https://sendsms.ge/api/v2/send", params={
"key": "YOUR_API_KEY",
"sender": "MyShop",
"destination": "995599123456",
"content": "Hello World",
})
print(r.json())
const params = new URLSearchParams({
key: "YOUR_API_KEY",
sender: "MyShop",
destination: "995599123456",
content: "Hello World",
});
const res = await fetch(`https://sendsms.ge/api/v2/send?${params}`);
console.log(await res.json());
პასუხი
{
"Success": true,
"Message": "Accepted for delivery",
"Output": {
"smsID": "123456",
"sent": 2,
"segments": 1,
"cost": 2,
"invalid": []
},
"ErrorCode": 0
}
{
"Success": false,
"Message": "Insufficient balance",
"Output": null,
"ErrorCode": 20
}
სტატუსის შემოწმება
GEThttps://sendsms.ge/api/v2/getMessageStatus
სტატუსს შენ გვეკითხები — ჩვენ არაფერს გიგზავნით და შენი მხრიდან endpoint-ის აწყობა არ სჭირდება.
key და
destination — სავალდებულო;
reference — არასავალდებულო. თუ reference-ს არ მიუთითებ, პასუხი ამ ნომერზე ბოლოს გაგზავნილ შეტყობინებას ეხება. ნომერი ნებისმიერი ჩვეული ფორმატით მიიღება — 995599123456, +995 599 12 34 56 თუ 599123456.
curl "https://sendsms.ge/api/v2/getMessageStatus?key=YOUR_API_KEY&destination=995599123456&reference=order-42"
→ {
"Success": true,
"Output": {
"Status": "Delivered",
"DeliveredAt": "2026-07-25T22:03:11+04:00",
"DeliveredAtUnix": 1785002591
},
"ErrorCode": 0
}
| Status | რას ნიშნავს |
|---|---|
Delivered |
ოპერატორმა დაადასტურა — ტელეფონზე მივიდა. საბოლოო. |
Undelivered |
ვერ მივიდა: გამორთული ტელეფონი, აღარარსებული ნომერი, უარყოფილი. საბოლოო. |
Expired |
ოპერატორმა ცდა შეწყვიტა მიწოდების გარეშე. საბოლოო. |
Pending |
გაგზავნილია, ოპერატორის პასუხს ველოდებით. ჩვეულებრივ წამებში იცვლება, იშვიათად — რამდენიმე საათში. გადაამოწმე მოგვიანებით. |
Unknown |
ასეთი შეტყობინება ვერ ვიპოვეთ ამ გასაღების ანგარიშზე — შეამოწმე ნომერი და reference. ეს არ არის შეცდომა: Success რჩება true, ErrorCode — 0. |
| ველი | აღწერა |
|---|---|
Status |
მიწოდების სტატუსი — იხ. ცხრილი ზემოთ. |
DeliveredAt |
მიწოდების დრო ISO 8601 ფორმატით, თბილისის სარტყელში. ჯერ არ მიწოდებულზე — null. |
DeliveredAtUnix |
იგივე დრო Unix timestamp-ად, თუ წამებში ითვლი. ჯერ არ მიწოდებულზე — null. |
null დაბრუნდება; სტატუსი მაინც სწორია.
მოთხოვნების ლიმიტი
წუთში 60 მოთხოვნა — ცალკე ითვლება თითოეულ გასაღებზე და თითოეულ endpoint-ზე. ანუ გაგზავნას თავისი 60 აქვს, სტატუსის შემოწმებას — თავისი: შენივე შემოწმება გაგზავნას ვერ დაგიბლოკავს.
ერთ მოთხოვნაში მრავალი ნომერი ერთ მოთხოვნად ითვლება — ამიტომ მასობრივი გაგზავნისას ნომრები მძიმით გამოყავი, თითოზე ცალკე ზარის ნაცვლად.
| სათაური | აღწერა |
|---|---|
X-RateLimit-Limit |
ლიმიტი წუთში. |
X-RateLimit-Remaining |
რამდენი დაგრჩა ამ წუთში — ყოველ პასუხზე მოგდის. |
Retry-After |
მხოლოდ 429-ზე: რამდენ წამში სცადო ხელახლა. |
ლიმიტის გადაჭარბებისას HTTP 429 დაბრუნდება — იმავე ფორმით, რაც ყველა სხვა პასუხს აქვს:
{
"Success": false,
"Message": "Too many requests, retry in 37 seconds",
"Output": null,
"ErrorCode": 429
}
429 არ ნიშნავს, რომ SMS არ გაიგზავნა — ის ნიშნავს, რომ მოთხოვნა საერთოდ არ მიგვიღია. უსაფრთხოდ გაიმეორე Retry-After-ის შემდეგ.
ბალანსი
GEThttps://sendsms.ge/api/getBalance
curl "https://sendsms.ge/api/getBalance?key=YOUR_API_KEY"
→ 4520
აბრუნებს დარჩენილი SMS-ების რაოდენობას (რიცხვი).
Delivery reports (Callback)
მიუთითე Callback URL API გვერდზე და გააგზავნე SMS reference-ით. სტატუსის შეცვლისას გამოგიგზავნით GET მოთხოვნას — პარამეტრები query string-შია, სხეული ცარიელია:
GET https://your-server.ge/callback?reference=order-42&status=Delivered
&reason=&destination=995599123456×tamp=20260613184500&operator=
პარამეტრები
| პარამეტრი | აღწერა |
|---|---|
reference |
შენი ტეგი, რომელიც გაგზავნისას მიუთითე — სწორედ ამით აკავშირებ რეპორტს შენს ჩანაწერთან. თუ არ გადმოგვეცი, ცარიელი მოვა. smsID არ იგზავნება. |
status |
მიწოდების სტატუსი — იხილე სია ქვემოთ. |
reason |
მიზეზი, როცა ცნობილია (მაგ. ოპერატორის უარი). ხშირად ცარიელია. |
destination |
მიმღების ნომერი საერთაშორისო ფორმატით, 995-ით (მაგ. 995599123456). |
timestamp |
დრო ფორმატით YmdHis (20260613184500). თუ ოპერატორმა დრო არ მოგვაწოდა — ცარიელია. |
operator |
რეზერვირებულია. ამჟამად ყოველთვის ცარიელია. |
status -ის შესაძლო მნიშვნელობები
Delivered, Undelivered, Expired, Pending, Unknown — სხვა სიტყვა არ იგზავნება. თუ უცნობი მნიშვნელობა მიიღე, ნუ ჩათვლი მიწოდებულად.
რაც უნდა გაითვალისწინო:
- შენმა სერვერმა პასუხად უნდა დააბრუნოს
OK. - ერთ SMS-ზე შეიძლება ერთზე მეტი მოთხოვნა მოვიდეს (მაგ. Pending, შემდეგ Delivered) — დაამუშავე იდემპოტენტურად.
- თუ შენი სერვერი არ უპასუხებს, ხელახლა არ ვცდით — სტატუსი მაინც შენახულია და
getMessageStatus-ით ყოველთვის ამოიღებ. - მოთხოვნა მოდის sendsms.ge-ის სერვერიდან; მოლოდინის დრო 10 წამია.
SMS დათვლა
160 სიმბოლომდე = 1 SMS. მეტი — იყოფა 153-სიმბოლოიან სეგმენტებად.
70 სიმბოლომდე = 1 SMS. მეტი — იყოფა 67-სიმბოლოიან სეგმენტებად.
ხარჯი = სეგმენტების რაოდენობა × მიმღები ნომრების რაოდენობა.
შეცდომის კოდები
| ErrorCode | მნიშვნელობა |
|---|---|
| 0 | მიღებულია გასაგზავნად |
| 10 | destination შეიცავს არა-ქართულ ნომერს |
| 20 | არასაკმარისი ბალანსი |
| 40 | ტექსტი აჭარბებს დაშვებულ სიგრძეს |
| 60 | content ცარიელია |
| 70 | destination ცარიელია |
| 75 | ყველა ნომერი stop-სიაშია |
| 76 | ნომრის არასწორი ფორმატი |
| 80 | key-ით მომხმარებელი ვერ მოიძებნა |
| 110 | არასწორი sender |
| 120 | API წვდომა გათიშულია |
| 150 | sender არ არის რეგისტრირებული / აქტიური |
| 500 | key პარამეტრი აკლია |
| 600 | destination პარამეტრი აკლია |
| 700 | sender პარამეტრი აკლია |
| 800 | content პარამეტრი აკლია |
| 429 | ლიმიტს გადააჭარბე — იხ. „მოთხოვნების ლიმიტი" |
| −100 | დროებითი შეფერხება — სცადე თავიდან |
ქართული
English
Русский